zjh
2024-01-02 bd6c1c1c6642d57c85816a62d77c25c4e1a66a76
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
@@ -4,31 +4,29 @@
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.common.utils.bean.BeanUtils;
import com.ltkj.common.enums.DataSourceType;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.TjReservation;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.service.ITjReservationService;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.LtkjMiddleDetail;
import com.ltkj.hosp.sqlDomain.LtkjMiddleHead;
import com.ltkj.hosp.sqlDomain.LtkjTjPat;
import com.ltkj.system.service.ISysConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;
import com.ltkj.common.annotation.Log;
import com.ltkj.common.core.controller.BaseController;
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.enums.BusinessType;
import com.ltkj.hosp.domain.TjCustomer;
import com.ltkj.hosp.service.ITjCustomerService;
import com.ltkj.common.utils.poi.ExcelUtil;
import com.ltkj.common.core.page.TableDataInfo;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
@@ -52,6 +50,24 @@
    @Resource
    private TestMapper testMapper;
    @Resource
    private TjvLtkjvtjpatService tjvLtkjvtjpatService;
    @Resource
    private LtkjMiddleHeadService headService;
    @Resource
    private LtkjMiddleDetailService middleDetailService;
    @Resource
    private ITjOrderService tjOrderService;
    @GetMapping("/newGetTjPat")
    @ApiOperation(value = "查询his数据库返回新的数据")
    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);
    }
@@ -60,34 +76,67 @@
     */
    @PostMapping(value = "/cusIdcard")
    @ApiOperation(value = "根据身份证号获取用户信息")
    @Log(title = "客户身份信息", businessType = BusinessType.EXPORT)
//    @Log(title = "客户身份信息", businessType = BusinessType.EXPORT)
    public AjaxResult getInfoByIdCard(@RequestParam @ApiParam(value = "客户身份证号") String cusIdcard) {
        if (!"".equals(cusIdcard) && cusIdcard != null) {
            //判断身份证号格式是否正确
            // TODO: 2023/2/10  判断身份证号格式是否正确
            if(cusIdcard.length()==18){
                if (! MatchUtils.isIdCard(cusIdcard)) {
                    return AjaxResult.error("身份证号码错误");
                }
            }
            if(cusIdcard.length()==9){
                if (!MatchUtils.cardValidates(cusIdcard)) {
                    return AjaxResult.error("身份证号码错误");
                }
            }
//            if(cusIdcard.length()==18){
//                if (! MatchUtils.isIdCard(cusIdcard)) {
//                    return AjaxResult.error("身份证号码错误");
//                }
//            }
//            if(cusIdcard.length()==9){
//                if (!MatchUtils.cardValidates(cusIdcard)) {
//                    return AjaxResult.error("身份证号码错误");
//                }
//            }
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String getInfoFromSqlData = sysConfigService.selectConfigByKey("getInfoFromSqlData");
            if ("Y".equals(getInfoFromSqlData)){
                final LtkjTjPat tjPatByIdCard = testMapper.getTjPatByIdCard(cusIdcard);
                if (tjPatByIdCard!=null){
                    testMapper.getTjPatByCusId(cusIdcard);
                }else {
                    return error("身份证号不存在");
                //根据身份证号从his查信息
                LtkjTjPat tjPatByIdCard = testMapper.getTjPatByIdCard(cusIdcard);
                if(null != tjPatByIdCard){
                    String fcardNo = tjPatByIdCard.getFcardNo();
                    if(null !=fcardNo){
                        fcardNo=fcardNo.trim();
                        tjPatByIdCard.setFcardNo(fcardNo);
                    }
                    //根据身份证号从数据库拿信息 没有的话保存
                    LtkjTjPat ltkjTjPat = tjvLtkjvtjpatService.getLtkjTjPatByCusIdCard(cusIdcard);
                    if(null==ltkjTjPat){
                        tjvLtkjvtjpatService.save(tjPatByIdCard);
                    }
                    DynamicDataSourceContextHolder.clearDataSourceType();
                    //再根据身份证号写customer表
                    TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(tjPatByIdCard.getFcardNo());
                    if(null == tjCustomer){
                        //为空的话掉存储过程保存到客户表
                        testMapper.getTjPatByCusId(cusIdcard);
                        LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
                        qw.eq(TjCustomer::getCusIdcard, tjPatByIdCard.getFcardNo());
                        TjCustomer customer = tjCustomerService.getOne(qw);
                        customer.setReservationId(customer.getCardId());
                        extracted(customer);
                        return success(customer);
                    }else {
                        String cardId = tjPatByIdCard.getFcardId();
                        if(null !=cardId && !cardId.equals("0")){
                            int i = tjOrderService.selectTjOrderByCardId(cardId);
                            if(i>0){
                                return AjaxResult.error("不可重复签到");
                            }
                        }
                        tjCustomer.setReservationId(tjCustomer.getCardId());
                        tjCustomer.setCardId(tjPatByIdCard.getFcardId());
                        tjCustomerService.updateById(tjCustomer);
                        extracted(tjCustomer);
                        return success(tjCustomer);
                    }
                }
            }
            //end2023.12.12
            //end====2023.12.12
            LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
            wq.eq(TjReservation::getIdCard, cusIdcard);
            wq.eq(TjReservation::getIsExpire, 2);
@@ -126,8 +175,6 @@
                    tjCustomer1.setReservationId(tjReservation.getId());
                    tjCustomer1.setDiscount(tjReservation.getDiscount());
                    tjCustomer1.setGroupingId(tjReservation.getGroupingId());
                    return success(tjCustomer1);
                }
                TjCustomer tjCustomer = new TjCustomer();
@@ -168,6 +215,24 @@
            return AjaxResult.success("暂无预约信息",tjCustomer);
        }
        return error("身份证号不存在");
    }
    private void extracted(TjCustomer customer) {
        //从his表抓数据
        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());
        }
        DynamicDataSourceContextHolder.clearDataSourceType();
    }
@@ -227,9 +292,10 @@
        if(null !=tjCustomer.getIdType()){
            if(tjCustomer.getIdType().equals("1")){
                b = MatchUtils.isIdCard(cusIdcard);
            }else {
                b = MatchUtils.cardValidate(cusIdcard, tjCustomer.getIdType());
            }
//            else {
//                b = MatchUtils.cardValidate(cusIdcard, tjCustomer.getIdType());
//            }
        }else {
            return AjaxResult.error("请选择证件类型");
        }
@@ -254,7 +320,9 @@
        String substring = cusIdcard.substring(cusIdcard.length() - 6);
        substring = DigestUtils.md5DigestAsHex(substring.getBytes());
        tjCustomer.setCusPassword(substring);
        tjCustomer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjCustomer.getCusIdcard()), "yyyy-MM-dd"));
        if(tjCustomer.getIdType().equals("1")){
            tjCustomer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjCustomer.getCusIdcard()), "yyyy-MM-dd"));
        }
        tjCustomer.setCusNumber(0L);
        if (tjCustomerService.save(tjCustomer)) {
            return AjaxResult.success(tjCustomer);