zjh
2025-01-20 73a816fd2b1e29c25d615c85ce34b12b55c16ccf
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
@@ -2,38 +2,51 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.extra.pinyin.PinyinUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.common.annotation.Log;
import com.ltkj.common.annotation.RepeatSubmit;
import com.ltkj.common.enums.BusinessType;
import com.ltkj.common.enums.DataSourceType;
import com.ltkj.common.utils.bean.BeanUtils;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.HisApiConfig;
import com.ltkj.hosp.domain.TjCustomerBlack;
import com.ltkj.hosp.domain.TjReservation;
import com.ltkj.hosp.hisDto.OutpinregapplyDto;
import com.ltkj.hosp.mapper.TestMapper;
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 com.ltkj.web.controller.his.HisApiGetMethodService;
import com.ltkj.web.controller.his.HisApiMethod;
import com.ltkj.web.controller.his.HisApiMethodService;
import com.ltkj.web.wxUtils.HttpClientUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
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.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;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -48,10 +61,12 @@
public class TjCustomerController extends BaseController {
    @Resource
    private ITjCustomerService tjCustomerService;
    @Autowired
    private HisApiGetMethodService hisApiGetMethodService;
    @Resource
    private ITjReservationService tjReservationService;
    @Autowired
    private HisApiConfigService hisApiConfigService;
    @Resource
    private ISysConfigService sysConfigService;
@@ -63,17 +78,67 @@
    private LtkjMiddleHeadService headService;
    @Resource
    private LtkjMiddleDetailService middleDetailService;
    @Resource
    private ITjOrderService tjOrderService;
    @Resource
    private TjCustomerBlackService blackService;
    @Autowired
    private HisApiMethod hisApiMethod;
    @Autowired
    private HisApiMethodService controller;
    //将方法返回值解析成json格式
    public JSONObject getJSONObject(String builder) {
        String Response = JSONUtil.parseObj(builder).getStr("Response");
        return JSONUtil.parseObj(Response);
    }
    //获取方法返回值信息
    public String getAjaxResult(AjaxResult result) {
        return result.get("data").toString();
    }
    @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);
    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<Map<String, Object>> list=new ArrayList<>();
//        if(null !=maps && maps.size()>0){
//            for (Map<String, Object> map : maps) {
//                String pacCode1 = map.get("pacCode").toString();
//                List<String> s = tjOrderService.selectTjOrderByCardId1();
//                if(null !=s && s.size()>0){
//                    if(s.contains(pacCode1)){
////                        maps.remove(map);
//                        continue;
//                    }
//                    list.add(map);
//                }
//            }
//        }
        List<String> strings = tjOrderService.selectTjOrderByCardId1();
        if (null != strings && !strings.isEmpty()) {
            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);
//        return AjaxResult.success(maps);
    }
    @GetMapping("/vcustomerlist")
    @ApiOperation(value = "签到登记页面姓名栏弹框接口")
    public AjaxResult vcustomerlist(@RequestParam(required = false) String name,
                                  @RequestParam(required = false) String sjh,
                                  @RequestParam(required = false) String sfzh) {
        List<Map<String, Object>> maps = tjCustomerService.vcustomerlist(name, sjh, sfzh);
        return AjaxResult.success(maps);
    }
    /**
@@ -84,38 +149,47 @@
//    @Log(title = "客户身份信息", businessType = BusinessType.EXPORT)
    public AjaxResult getInfoByIdCard(@RequestParam @ApiParam(value = "客户身份证号") String cusIdcard) {
        if (!"".equals(cusIdcard) && cusIdcard != null) {
            String sfjysfzh = sysConfigService.selectConfigByKey("sfjysfzh");
//            String sfjysjh = configService.selectConfigByKey("sfjysjh");
            //判断身份证号格式是否正确
            // 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("身份证号码错误");
//                }
//            }
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            if(sfjysfzh.equalsIgnoreCase("Y")){
                if(cusIdcard.length()==18){
                    if (! MatchUtils.isIdCard(cusIdcard)) {
                        return AjaxResult.error("身份证号码错误");
                    }
                }
                if(cusIdcard.length()==9){
                    if (!MatchUtils.cardValidates(cusIdcard)) {
                        return AjaxResult.error("身份证号码错误");
                    }
                }
            }
            final String getInfoFromSqlData = sysConfigService.selectConfigByKey("getInfoFromSqlData");
            if ("Y".equals(getInfoFromSqlData)){
            if ("Y".equals(getInfoFromSqlData)) {
                //根据身份证号从his查信息
                LtkjTjPat tjPatByIdCard = testMapper.getTjPatByIdCard(cusIdcard);
                if(null != tjPatByIdCard){
                if (null != tjPatByIdCard) {
                    String fcardNo = tjPatByIdCard.getFcardNo();
                    if(null !=fcardNo){
                        fcardNo=fcardNo.trim();
                    if (null != fcardNo && !fcardNo.isEmpty()) {
                        fcardNo = fcardNo.trim();
                        tjPatByIdCard.setFcardNo(fcardNo);
                    } else {
                        fcardNo = cusIdcard.trim();
                        tjPatByIdCard.setFcardNo(fcardNo);
                    }
                    //根据身份证号从数据库拿信息 没有的话保存
                    LtkjTjPat ltkjTjPat = tjvLtkjvtjpatService.getLtkjTjPatByCusIdCard(cusIdcard);
                    if(null==ltkjTjPat){
                    if (null == ltkjTjPat) {
                        tjvLtkjvtjpatService.save(tjPatByIdCard);
                    }
                    DynamicDataSourceContextHolder.clearDataSourceType();
                    //再根据身份证号写customer表
                    TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(tjPatByIdCard.getFcardNo());
                    if(null == tjCustomer){
                    if (null == tjCustomer) {
                        //为空的话掉存储过程保存到客户表
                        testMapper.getTjPatByCusId(cusIdcard);
                        LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
@@ -124,10 +198,14 @@
                        customer.setReservationId(customer.getCardId());
                        extracted(customer);
                        return success(customer);
                    }else {
                        String cardId = tjCustomer.getCardId();
                        if(null !=cardId && cardId.equals(tjPatByIdCard.getFcardId())){
                            return AjaxResult.error("不可重复签到");
                    } 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());
@@ -138,16 +216,17 @@
                }
            }
            //end====2023.12.12
            String key = sysConfigService.selectConfigByKey("sfkqdyhis");
            String s = sysConfigService.selectConfigByKey("is_request_common_his_api");
            LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
            wq.eq(TjReservation::getIdCard, cusIdcard);
            wq.eq(TjReservation::getIsExpire, 2);
            TjReservation tjReservation = tjReservationService.getOne(wq);
            if (tjReservation != null) {
                if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) {
                    return AjaxResult.error("未到预约时间");
                }
                if (null != tjReservation.getReservationTime() && DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) {
                if (null != tjReservation.getReservationTime() && DateUtil.endOfDay(DateUtil.offsetDay(tjReservation.getReservationTime(),
                        tjReservation.getYxts())).before(new Date())) {
                    tjReservation.setIsExpire(1);
                    tjReservationService.updateById(tjReservation);
                    return AjaxResult.error("对不起您的预约已超时请重新预约");
@@ -156,10 +235,13 @@
                qw.eq(TjCustomer::getCusIdcard, cusIdcard);
                TjCustomer tjCustomer1 = tjCustomerService.getOne(qw);
                if (tjCustomer1 != null) {
//                    if (null != tjReservation.getCompanyId()) tjCustomer1.setDictCompId(Long.valueOf(tjReservation.getCompanyId()));
//                    if (null != tjReservation.getCompany()) tjCustomer1.setCompName(tjReservation.getCompany());
//                    tjCustomerService.updateById(tjCustomer1);
                    tjCustomer1.setTjType(tjReservation.getTjType());
                    tjCustomer1.setCusName(tjReservation.getName());
                    tjCustomer1.setCusSex(Long.valueOf(tjReservation.getSex()));
                    tjCustomer1.setCusBrithday(tjReservation.getBirthday());
                    tjCustomer1.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard()), "yyyy-MM-dd"));
                    tjCustomer1.setCusPhone(tjReservation.getPhoe());
                    tjCustomer1.setCusEmail(tjReservation.getEmail());
                    tjCustomer1.setCusAddr(tjReservation.getAddress());
@@ -170,51 +252,112 @@
                    tjCustomer1.setAge(tjReservation.getAge());
                    tjCustomer1.setAgeUnit(tjReservation.getAgeUnit());
                    tjCustomer1.setCareer(tjReservation.getCareer());
                    tjCustomer1.setPym(PinyinUtil.getFirstLetter(tjReservation.getName(),""));
                    tjCustomerService.updateById(tjCustomer1);
                    tjCustomer1.setTeamNo(tjReservation.getTeamNo());
                    tjCustomer1.setCompId(tjReservation.getCompanyId());
                    tjCustomer1.setReservationId(tjReservation.getId());
                    tjCustomer1.setDiscount(tjReservation.getDiscount());
                    tjCustomer1.setGroupingId(tjReservation.getGroupingId());
//                    if(null !=tjReservation.getCompanyId())tjCustomer1.setDictCompId(Long.valueOf(tjReservation.getCompanyId()));
//                    if(null !=tjReservation.getCompany())tjCustomer1.setCompName(tjReservation.getCompany());
//                    tjCustomerService.updateById(tjCustomer1);
                    return success(tjCustomer1);
                }else {
                    TjCustomer tjCustomer = new TjCustomer();
                    tjCustomer.setCusIdcard(tjReservation.getIdCard());
                    tjCustomer.setCusName(tjReservation.getName());
                    tjCustomer.setCusSex(Long.valueOf(tjReservation.getSex()));
                    tjCustomer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard()), "yyyy-MM-dd"));
                    tjCustomer.setCusPhone(tjReservation.getPhoe());
                    tjCustomer.setCusEmail(tjReservation.getEmail());
                    tjCustomer.setCusAddr(tjReservation.getAddress());
                    tjCustomer.setCusMarryStatus(String.valueOf(tjReservation.getMarriage()));
                    tjCustomer.setCusNational(String.valueOf(tjReservation.getNation()));
                    tjCustomer.setIdType(tjReservation.getIdType());
                    tjCustomer.setAge(tjReservation.getAge());
                    tjCustomer.setAgeUnit(tjReservation.getAgeUnit());
                    tjCustomer.setCareer(tjReservation.getCareer());
                    tjCustomer.setDwPhone(tjReservation.getDwPhone());
//                    tjCustomer.setCardId(tjReservation.getCardId());
                    tjCustomer.setIndexCard(tjReservation.getIndexCard());
                    //截取密码自动生成set进去
                    String substring = cusIdcard.substring(cusIdcard.length() - 6);
                    substring = DigestUtils.md5DigestAsHex(substring.getBytes());
                    tjCustomer.setCusPassword(substring);
                    tjCustomer.setTjType(tjReservation.getTjType());
                    tjCustomer.setPym(PinyinUtil.getFirstLetter(tjReservation.getName(),""));
//                    if(null !=tjReservation.getCompanyId())tjCustomer.setDictCompId(Long.valueOf(tjReservation.getCompanyId()));
//                    if(null !=tjReservation.getCompany())tjCustomer.setCompName(tjReservation.getCompany());
                    if (null != key && key.equals("Y")) {
                        AjaxResult result = controller.Outpincreateapply(tjCustomer);
                        String result1 = getAjaxResult(result);
                        JSONObject object = getJSONObject(result1);
                        String code = object.getStr("ResultCode");
                        if (code.equals("0")) {
                            JSONArray resultDatass = object.getJSONArray("ResultData");
                            Map<String, Object> resultData = (Map<String, Object>) resultDatass.get(0);
                            if (null != resultData && !resultData.isEmpty()) {
                                String pationid = resultData.get("PationId").toString();
                                if (null != pationid) {
                                    tjCustomer.setPationId(pationid);
                                    tjCustomerService.save(tjCustomer);
                                    //保存注册入参出参
                                    resultData.put("cardId",pationid);
                                    JSONObject object4 = JSONUtil.parseObj(resultData);
                                    LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                                    lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpincreateapply");
                                    HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                                    hisApiGetMethodService.save(object4, "Outpincreateapply", hisApiConfig, JSONUtil.toJsonStr(BeanUtil.beanToMap(tjCustomer)));
                                }
                            }
                        }
                    } else if(null != s && s.equalsIgnoreCase("Y")) {
                        TjCustomer requestCommonHisApi = isRequestCommonHisApi(tjCustomer);
                        if (null !=requestCommonHisApi){
                            tjCustomerService.save(requestCommonHisApi);
                        }
                    }else {
                        tjCustomerService.save(tjCustomer);
                    }
                    tjCustomer.setTeamNo(tjReservation.getTeamNo());
                    tjCustomer.setCompId(tjReservation.getCompanyId());
                    tjCustomer.setReservationId(tjReservation.getId());
                    tjCustomer.setDiscount(tjReservation.getDiscount());
                    tjCustomer.setGroupingId(tjReservation.getGroupingId());
                    return success(tjCustomer);
                }
                TjCustomer tjCustomer = new TjCustomer();
                tjCustomer.setCusIdcard(tjReservation.getIdCard());
                tjCustomer.setCusName(tjReservation.getName());
                tjCustomer.setCusSex(Long.valueOf(tjReservation.getSex()));
                tjCustomer.setCusBrithday(tjReservation.getBirthday());
                tjCustomer.setCusPhone(tjReservation.getPhoe());
                tjCustomer.setCusEmail(tjReservation.getEmail());
                tjCustomer.setCusAddr(tjReservation.getAddress());
                tjCustomer.setCusMarryStatus(String.valueOf(tjReservation.getMarriage()));
                tjCustomer.setCusNational(String.valueOf(tjReservation.getNation()));
                tjCustomer.setIdType(tjReservation.getIdType());
                tjCustomer.setAge(tjReservation.getAge());
                tjCustomer.setAgeUnit(tjReservation.getAgeUnit());
                tjCustomer.setCareer(tjReservation.getCareer());
                tjCustomer.setDwPhone(tjReservation.getDwPhone());
                tjCustomer.setCardId(tjReservation.getCardId());
                tjCustomer.setIndexCard(tjReservation.getIndexCard());
                //截取密码自动生成set进去
                String substring = cusIdcard.substring(cusIdcard.length() - 6);
                substring = DigestUtils.md5DigestAsHex(substring.getBytes());
                tjCustomer.setCusPassword(substring);
                tjCustomer.setTjType(tjReservation.getTjType());
                tjCustomerService.save(tjCustomer);
                tjCustomer.setTeamNo(tjReservation.getTeamNo());
                tjCustomer.setCompId(tjReservation.getCompanyId());
                tjCustomer.setReservationId(tjReservation.getId());
                tjCustomer.setDiscount(tjReservation.getDiscount());
                tjCustomer.setGroupingId(tjReservation.getGroupingId());
                return success(tjCustomer);
            }
            LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
            qw.eq(TjCustomer::getCusIdcard, cusIdcard);
            TjCustomer tjCustomer = tjCustomerService.getOne(qw);
            return AjaxResult.success("暂无预约信息",tjCustomer);
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            LambdaQueryWrapper<TjCustomer> customerLambdaQueryWrapper = new LambdaQueryWrapper<>();
            customerLambdaQueryWrapper.eq(TjCustomer::getCusIdcard, cusIdcard);
            TjCustomer tjCustomerServiceOne = tjCustomerService.getOne(customerLambdaQueryWrapper);
            if (null == tjCustomerServiceOne) {
                return AjaxResult.error("该人员信息不存在请先进行登记!!!");
            }
//            if (null != key && key.equals("Y")) {
                String cardId = tjCustomerServiceOne.getCardId();
                if (null != cardId && !cardId.equals("0")) {
                    int i = tjOrderService.selectTjOrderByCardId(cardId);
                    if (i > 0) {
                        return AjaxResult.error("不可重复签到");
                    }
                }
//            }
            if(!tjCustomerServiceOne.getAge().equals(String.valueOf(DateUtil.ageOfNow(tjCustomerServiceOne.getCusBrithday())))){
                tjCustomerServiceOne.setAge(String.valueOf(DateUtil.ageOfNow(tjCustomerServiceOne.getCusBrithday())));
                tjCustomerService.updateById(tjCustomerServiceOne);
            }
            return AjaxResult.success(tjCustomerServiceOne);
        }
        return error("身份证号不存在");
    }
@@ -223,10 +366,16 @@
        //从his表抓数据
        LtkjMiddleHead pat = testMapper.getMiddleHeadByPartId(customer.getCardId());
        if (null != pat) {
            LambdaQueryWrapper<LtkjMiddleHead> wq1 = new LambdaQueryWrapper<>();
            wq1.eq(LtkjMiddleHead::getFeadId, customer.getCardId());
            headService.remove(wq1);
            LambdaQueryWrapper<LtkjMiddleDetail> wq0 = new LambdaQueryWrapper<>();
            wq0.eq(LtkjMiddleDetail::getFheadId, pat.getFeadId());
            middleDetailService.remove(wq0);
            List<LtkjMiddleDetail> list = testMapper.getMiddleDetailByFeadId(pat.getFeadId());
            DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
            LtkjMiddleHead o = headService.getMiddleHeadByPartId(customer.getCardId());
            if(o==null){
            if (o == null) {
                headService.save(pat);
                for (LtkjMiddleDetail ltkjMiddleDetail : list) {
                    middleDetailService.save(ltkjMiddleDetail);
@@ -235,6 +384,27 @@
            testMapper.saveTjProByCusId(customer.getCardId(), customer.getCusIdcard());
        }
        DynamicDataSourceContextHolder.clearDataSourceType();
    }
    @GetMapping("/getcusList")
    @ApiOperation(value = "档案管理接口")
    public TableDataInfo getcusList(TjCustomer tjCustomer) {
        startPage();
        List<TjCustomer> list = tjCustomerService.getcusList(tjCustomer);
        if (null != list && !list.isEmpty()) {
            for (TjCustomer customer : list) {
                customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard()));
                TjCustomerBlack tjCustomerBlack = blackService.isTjCustomerBlack(String.valueOf(customer.getCusId()));
                if (null != tjCustomerBlack) {
                    customer.setIsBlack("Y");
                } else {
                    customer.setIsBlack("N");
                }
            }
        }
        return getDataTable(list);
    }
@@ -247,11 +417,16 @@
    public TableDataInfo list(TjCustomer tjCustomer) {
        startPage();
        List<TjCustomer> list = tjCustomerService.selectTjCustomerList(tjCustomer);
        if(null !=list && list.size()>0){
        if (null != list && !list.isEmpty()) {
            for (TjCustomer customer : list) {
                customer.setCusName(MatchUtils.hideCusName(customer.getCusName()));
                customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard()));
                TjCustomerBlack tjCustomerBlack = blackService.isTjCustomerBlack(String.valueOf(customer.getCusId()));
                if (null != tjCustomerBlack) {
                    customer.setIsBlack("Y");
                } else {
                    customer.setIsBlack("N");
                }
            }
        }
        return getDataTable(list);
@@ -284,27 +459,46 @@
     */
    @PostMapping
    @ApiOperation(value = "新增客户")
    @Transactional
    @RepeatSubmit
    @Log(title = "新增客户信息", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody @ApiParam(value = "客户对象信息") TjCustomer tjCustomer) {
        if (null == tjCustomer.getCusIdcard() || null == tjCustomer.getCusPhone()) {
            return AjaxResult.error("请输入身份证号或手机号");
        }
        Date dates = new Date();
        final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
        String cusIdcard = tjCustomer.getCusIdcard();
        boolean b=true;
        if(null !=tjCustomer.getIdType()){
            if(tjCustomer.getIdType().equals("1")){
                b = MatchUtils.isIdCard(cusIdcard);
            }else {
                b = MatchUtils.cardValidate(cusIdcard, tjCustomer.getIdType());
        boolean b = true;
        String sfjysfzh = sysConfigService.selectConfigByKey("sfjysfzh");
        String sfjysjh = sysConfigService.selectConfigByKey("sfjysjh");
        if (null != tjCustomer.getIdType()) {
            if (tjCustomer.getIdType().equals("1")) {
                //判断身份证号格式是否正确
                if(sfjysfzh.equalsIgnoreCase("Y")){
                    if(cusIdcard.length()==18){
                        b = MatchUtils.isIdCard(cusIdcard);
                    }
                }
            } else {
                if(cusIdcard.length()==9){
                    b = MatchUtils.cardValidate(cusIdcard, tjCustomer.getIdType());
                }
            }
        }else {
        } else {
            return AjaxResult.error("请选择证件类型");
        }
        if(!b) return AjaxResult.error("证件号有误");
        if (!b) return AjaxResult.error("证件号有误");
        //判断身份证号格式是否正确
        if (!(MatchUtils.isMobileNO(tjCustomer.getCusPhone())))
            return AjaxResult.error("手机号错误");
        if(sfjysjh.equalsIgnoreCase("Y")){
            if (!(MatchUtils.isMobileNO(tjCustomer.getCusPhone())))
                return AjaxResult.error("手机号错误");
        }
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusIdcard, cusIdcard);
@@ -321,35 +515,192 @@
        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);
        tjCustomer.setPym(PinyinUtil.getFirstLetter(tjCustomer.getCusName(),""));
        String config = sysConfigService.selectConfigByKey("sfkqdyhis");
        if (null != config && config.equals("Y")) {
            AjaxResult tjCustomer1 = suijieHisXinXi(tjCustomer, date);
            if (tjCustomer1 != null) return tjCustomer1;
        } else {
            String s = sysConfigService.selectConfigByKey("is_request_common_his_api");
            if (null != s && s.equals("Y")){
                TjCustomer requestCommonHisApi = isRequestCommonHisApi(tjCustomer);
                if (null !=requestCommonHisApi){
                    if (tjCustomerService.save(requestCommonHisApi)) {
                        return AjaxResult.success(requestCommonHisApi);
                    }
                }
            }else {
                if (tjCustomerService.save(tjCustomer)) {
                    return AjaxResult.success(tjCustomer);
                }
            }
        }
        return AjaxResult.error();
    }
    private TjCustomer isRequestCommonHisApi(TjCustomer tjCustomer) {
        String apiUrl = sysConfigService.selectConfigByKey("common_api_url");
        String hospbm = sysConfigService.selectConfigByKey("common_api_service_hospbm");
        HashMap<String, Object> isjd = new HashMap<>();
        isjd.put("cusIdCard", tjCustomer.getCusIdcard());
        isjd.put("compId","");
        String isCreat = HttpClientUtils.sendPost(apiUrl+"/api/his/"+hospbm+"/isCreat", isjd);
        JSONObject isCreatjsonObject = JSONUtil.parseObj(isCreat);
        if (isCreatjsonObject.getStr("code").equals("200")){
            JSONObject data = isCreatjsonObject.getJSONObject("data");
            tjCustomer.setPationId(data.getStr("pationId"));
            tjCustomer.setCardId(data.getStr("cardId"));
            tjCustomer.setHisJzkh(data.getStr("cardId"));
            return tjCustomer;
        }else {
            HashMap<String, Object> map = new HashMap<>();
            map.put("cardId","");
            map.put("cusName", tjCustomer.getCusName());
            map.put("cusSex", tjCustomer.getCusSex());
            map.put("cusIdCard", tjCustomer.getCusIdcard());
            map.put("compId","");
            map.put("cusBrithday", tjCustomer.getCusBrithday() != null ? DateUtil.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd") : "");
            map.put("cusAddr", tjCustomer.getCusAddr());
            map.put("cusPhone", tjCustomer.getCusPhone());
            map.put("compName","");
            String post = HttpClientUtils.sendPost(apiUrl+"/api/his/"+hospbm+"/creat", map);
            JSONObject jsonObject = JSONUtil.parseObj(post);
            if (jsonObject.getStr("code").equals("200")){
                JSONObject data = jsonObject.getJSONObject("data");
                tjCustomer.setPationId(data.getStr("pationId"));
                tjCustomer.setCardId(data.getStr("cardId"));
                tjCustomer.setHisJzkh(data.getStr("cardId"));
                return tjCustomer;
            }
        }
        return null;
    }
    private AjaxResult suijieHisXinXi(TjCustomer tjCustomer, String date) {
        AjaxResult result = controller.Outpincreateapply(tjCustomer);
        String result1 = getAjaxResult(result);
        JSONObject object = getJSONObject(result1);
        String code = object.getStr("ResultCode");
        if (code.equals("0")) {
            JSONArray resultDatass = object.getJSONArray("ResultData");
            Map<String, Object> resultData = (Map<String, Object>) resultDatass.get(0);
            if (null != resultData && !resultData.isEmpty()) {
                String pationid = resultData.get("PationId").toString();
                if (null != pationid) {
                    tjCustomer.setPationId(pationid);
//                    tjCustomerService.updateById(tjCustomer);
                    //保存注册入参出参
                    resultData.put("cardId",pationid);
                    JSONObject object4 = JSONUtil.parseObj(resultData);
                    LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                    lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpincreateapply");
                    HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                    hisApiGetMethodService.save(object4, "Outpincreateapply", hisApiConfig, JSONUtil.toJsonStr(BeanUtil.beanToMap(tjCustomer)));
                }
            }
            if (tjCustomerService.save(tjCustomer)) {
                return AjaxResult.success(tjCustomer);
            }
        }
        return AjaxResult.error(object.getStr("ResultContent"));
    }
    /**
     * 修改客户信息
     */
    //@PreAuthorize("@ss.hasPermi('hosp:customer:edit')")
    //@Log(title = "客户信息", businessType = BusinessType.UPDATE)
    @Log(title = "修改客户信息", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation(value = "修改客户信息")
    @Transactional
    @RepeatSubmit
    public AjaxResult edit(@RequestBody @ApiParam(value = "客户对象") TjCustomer tjCustomer) {
        TjCustomer customer = tjCustomerService.getById(tjCustomer.getCusId());
        if(null==customer){
            return AjaxResult.error("该人员不存在!");
        }
        String cusPhone = tjCustomer.getCusPhone();
        if (null == cusPhone) {
            return AjaxResult.error("手机号不能为空");
        }
        /*LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusPhone, cusPhone);
        TjCustomer customer = tjCustomerService.getOne(wq);
        if (customer != null) {
            return AjaxResult.error("该手机号已被使用!");
        }*/
        String sfjysfzh = sysConfigService.selectConfigByKey("sfjysfzh");
        String sfjysjh = sysConfigService.selectConfigByKey("sfjysjh");
            //判断身份证号格式是否正确
            if(sfjysfzh.equalsIgnoreCase("Y")){
                if(tjCustomer.getCusIdcard().length()==18){
                    if (!(MatchUtils.isIdCard(tjCustomer.getCusIdcard())))
                        return AjaxResult.error("身份证号错误");
                }
                if(tjCustomer.getCusIdcard().length()==9){
                    if (!MatchUtils.cardValidates(tjCustomer.getCusIdcard())) {
                        return AjaxResult.error("身份证号码错误");
                    }
                }
            }
        //判断身份证号格式是否正确
        if(sfjysjh.equalsIgnoreCase("Y")){
            if (!(MatchUtils.isMobileNO(tjCustomer.getCusPhone())))
                return AjaxResult.error("手机号错误");
        }
        tjCustomer.setCusPhone(cusPhone);
        return toAjax(tjCustomerService.updateTjCustomer(tjCustomer));
        tjCustomer.setPym(PinyinUtil.getFirstLetter(tjCustomer.getCusName(),""));
        if (tjCustomerService.updateById(tjCustomer)) {
            String config = sysConfigService.selectConfigByKey("sfkqdyhis");
            if (null != config && config.equals("Y")) {
                AjaxResult result = controller.Outpincreateapply(tjCustomer);
                String result1 = getAjaxResult(result);
                JSONObject object = getJSONObject(result1);
                String code = object.getStr("ResultCode");
                if (code.equals("0")) {
                    return AjaxResult.success();
                }
                return AjaxResult.error(object.getStr("ResultContent"));
            }else {
                String s = sysConfigService.selectConfigByKey("is_request_common_his_api");
                if (null != s && s.equals("Y")){
                    String apiUrl = sysConfigService.selectConfigByKey("common_api_url");
                    String hospbm = sysConfigService.selectConfigByKey("common_api_service_hospbm");
                    HashMap<String, Object> map = new HashMap<>();
                    map.put("pationId",tjCustomer.getPationId());
                    map.put("cardId",tjCustomer.getCardId());
                    map.put("cusName",tjCustomer.getCusName());
                    map.put("cusSex",tjCustomer.getCusSex());
                    map.put("cusIdCard",tjCustomer.getCusIdcard());
                    map.put("compId","");
                    map.put("cusBrithday",tjCustomer.getCusBrithday() != null ? DateUtil.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd") : "");
                    map.put("cusAddr",tjCustomer.getCusAddr());
                    map.put("cusPhone",tjCustomer.getCusPhone());
                    map.put("compName","");
                    String isCreat = HttpClientUtils.sendPost(apiUrl+"/api/his/"+hospbm+"/update", map);
                    JSONObject isCreatjsonObject = JSONUtil.parseObj(isCreat);
                    if (isCreatjsonObject.getStr("code").equals("200")){
//                        JSONObject data = isCreatjsonObject.getJSONObject("data");
//                        tjCustomer.setPationId(data.getStr("pationId"));
//                        tjCustomer.setCardId(data.getStr("cardId"));
//                        tjCustomer.setHisJzkh(data.getStr("cardId"));
//                        if (tjCustomerService.updateById(tjCustomer)) {
                            return AjaxResult.success(tjCustomer);
//                        }
                    }else {
                        return AjaxResult.error();
                    }
                }
                return AjaxResult.success();
            }
        }
       return AjaxResult.error();
    }
    /**
@@ -360,6 +711,6 @@
    @DeleteMapping("/{cusIds}")
    @ApiOperation(value = "删除客户")
    public AjaxResult remove(@PathVariable @ApiParam(value = "所删除客户的id") Long[] cusIds) {
        return toAjax(tjCustomerService.deleteTjCustomerByCusIds(cusIds));
        return toAjax(tjCustomerService.removeByIds(Arrays.asList(cusIds)));
    }
}