zjh
2025-01-06 d5cd702a6985a208dae4a2e532c984252fbca4d4
ltkj-admin/src/main/java/com/ltkj/web/controller/app/CustomerController.java
@@ -1,30 +1,41 @@
package com.ltkj.web.controller.app;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.domain.entity.SysDictData;
import com.ltkj.common.utils.StringUtils;
import com.ltkj.common.utils.bean.BeanUtils;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.hosp.domain.HisApiConfig;
import com.ltkj.hosp.domain.TjCustomer;
import com.ltkj.hosp.domain.TjOrder;
import com.ltkj.hosp.service.HisApiConfigService;
import com.ltkj.hosp.service.ITjCustomerService;
import com.ltkj.hosp.service.ITjOrderService;
import com.ltkj.system.service.ISysDictDataService;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDictTypeService;
import com.ltkj.web.controller.his.HisApiGetMethodService;
import com.ltkj.web.controller.his.HisApiMethodService;
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.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
@@ -32,8 +43,8 @@
 * @Date: 2023/1/12 11:08
 */
@RestController
@RequestMapping("/cus/hospital")
@Api(tags = "小程序-客户信息")
@RequestMapping ("/cus/hospital")
@Api (tags = "小程序-客户信息")
public class CustomerController extends BaseController {
    @Resource
@@ -45,11 +56,21 @@
    @Autowired
    private ISysDictTypeService dictTypeService;
    @Resource
    private ISysConfigService sysConfigService;
    @Autowired
    private HisApiConfigService hisApiConfigService;
    @Autowired
    private HisApiMethodService controller;
    @Autowired
    private HisApiGetMethodService hisApiGetMethodService;
    /**
     * 小程序就诊人列表
     */
    @GetMapping("/getListByOpenId")
    @ApiOperation(value = "小程序-就诊人列表")
    @GetMapping ("/getListByOpenId")
    @ApiOperation (value = "小程序-就诊人列表")
    public AjaxResult getListByOpenId(@RequestParam String openId) {
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getConnect, openId);
@@ -60,9 +81,9 @@
    /**
     * 解绑就诊人
     */
    @PostMapping("/delCustomer")
    @ApiOperation(value = "小程序-解绑就诊人")
    public AjaxResult delCustomer(@RequestBody @ApiParam(value = "客户对象信息") TjCustomer tjCustomer) {
    @PostMapping ("/delCustomer")
    @ApiOperation (value = "小程序-解绑就诊人")
    public AjaxResult delCustomer(@RequestBody @ApiParam (value = "客户对象信息") TjCustomer tjCustomer) {
        if (tjCustomer == null) {
            return AjaxResult.error();
        }
@@ -84,9 +105,11 @@
    /**
     * 新增并绑定就诊人
     */
    @PostMapping("/addNew")
    @ApiOperation(value = "小程序-新增并绑定就诊人")
    public AjaxResult addNew(@RequestBody @ApiParam(value = "客户对象信息") TjCustomer tjCustomer) {
    @PostMapping ("/addNew")
    @ApiOperation (value = "小程序-新增并绑定就诊人")
    @Transactional
    @RepeatSubmit
    public AjaxResult addNew(@RequestBody @ApiParam (value = "客户对象信息") TjCustomer tjCustomer) {
        if (tjCustomer == null) {
            return AjaxResult.error("添加失败");
        }
@@ -98,12 +121,12 @@
        if (!MatchUtils.isMobileNO(tjCustomer.getCusPhone()))
            return AjaxResult.error("手机号错误");
        if(cusIdcard.length()==18){
        if (cusIdcard.length() == 18) {
            if (!MatchUtils.isIdCard(cusIdcard)) {
                return AjaxResult.error("身份证号码错误");
            }
        }
        if(cusIdcard.length()==9){
        if (cusIdcard.length() == 9) {
            if (!MatchUtils.cardValidates(cusIdcard)) {
                return AjaxResult.error("身份证号码错误");
            }
@@ -113,29 +136,18 @@
        wq.eq(TjCustomer::getCusIdcard, cusIdcard);
        TjCustomer customer = customerService.getOne(wq);
        if (customer != null) {
//            BeanUtils.copyBeanProp(tjCustomer, customer);
//            String substring = cusIdcard.substring(cusIdcard.length() - 6);
//            substring = DigestUtils.md5DigestAsHex(substring.getBytes());
//            customer.setCusPassword(substring);
//            customer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(cusIdcard), "yyyy-MM-dd"));
//            tjCustomer.setCusSex(Long.valueOf(MatchUtils.getSexByIdCard(cusIdcard)));
//            // tjCustomer.setAddr(MatchUtils.getNativePlace(Integer.parseInt(cusIdcard)));
//            tjCustomer.setAge(String.valueOf(MatchUtils.getAgeByIdCard(cusIdcard)));
//            tjCustomer.setIdType("1");
//            tjCustomer.setAgeUnit("0");
//            if (customerService.updateById(customer)) {
//                return AjaxResult.success(tjCustomer);
//            }
        String key = sysConfigService.selectConfigByKey("sfkqdyhis");
            return AjaxResult.error("该人员已存在");
        if (customer != null) {
            customer.setConnect(tjCustomer.getConnect());
            customerService.updateById(customer);
            return AjaxResult.success(customer);
        }
        String substring = cusIdcard.substring(cusIdcard.length() - 6);
        substring = DigestUtils.md5DigestAsHex(substring.getBytes());
        tjCustomer.setCusPassword(substring);
        tjCustomer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(cusIdcard), "yyyy-MM-dd"));
        tjCustomer.setCusSex(Long.valueOf(MatchUtils.getSexByIdCard(cusIdcard)));
        //tjCustomer.setAddr(MatchUtils.getNativePlace(Integer.parseInt((cusIdcard))));
        tjCustomer.setAge(String.valueOf(MatchUtils.getAgeByIdCard(cusIdcard)));
        tjCustomer.setIdType("1");
        tjCustomer.setAgeUnit("0");
@@ -143,31 +155,39 @@
        tjCustomer.setCusIntroduce("无");
        tjCustomer.setCusNumber(0L);
        tjCustomer.setCusIsvip("N");
        if (customerService.save(tjCustomer)) {
        if (null != key && key.equals("Y")) {
            AjaxResult xinXi = suijieHisXinXi(tjCustomer);
            if (!xinXi.get("code").toString().equals("200")) {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return AjaxResult.error("注册失败,请到前台登记!" + xinXi.get("msg").toString());
            }
        } else {
            customerService.save(tjCustomer);
            return AjaxResult.success(tjCustomer);
        }
        return AjaxResult.error("添加失败");
        return AjaxResult.success(tjCustomer);
    }
    /**
     * 小程序体检报告列表
     */
    @GetMapping("/getReportList")
    @ApiOperation(value = "小程序-体检报告列表")
    public AjaxResult getReportList(@RequestParam @ApiParam(value = "手机号") String cusPhone) {
    @GetMapping ("/getReportList")
    @ApiOperation (value = "小程序-体检报告列表")
    public AjaxResult getReportList(@RequestParam @ApiParam (value = "手机号") String cusPhone) {
        return AjaxResult.success();
    }
    /**
     * 回显就诊人
     */
    @PostMapping("/showCustomer")
    @ApiOperation(value = "小程序-回显就诊人")
    public AjaxResult showCustomer(@RequestBody @ApiParam(value = "客户对象信息") TjCustomer tjCustomer) {
    @PostMapping ("/showCustomer")
    @ApiOperation (value = "小程序-回显就诊人")
    public AjaxResult showCustomer(@RequestBody @ApiParam (value = "客户对象信息") TjCustomer tjCustomer) {
        if (tjCustomer == null) {
            return AjaxResult.error();
        }
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper();
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusIdcard, tjCustomer.getCusIdcard());
        wq.eq(TjCustomer::getCusPhone, tjCustomer.getCusPhone());
        wq.eq(TjCustomer::getCusName, tjCustomer.getCusName());
@@ -178,8 +198,8 @@
    /**
     * 小程序判断是否能编辑
     */
    @PostMapping("/canUpdate")
    @ApiOperation(value = "小程序判断是否能编辑")
    @PostMapping ("/canUpdate")
    @ApiOperation (value = "小程序判断是否能编辑")
    public AjaxResult canUpdate(@RequestBody TjCustomer tjCustomer) {
        if (tjCustomer == null) {
            return AjaxResult.error("出错了,请联系工作人员!");
@@ -196,35 +216,48 @@
    /**
     * 小程序编辑就诊人信息
     */
    @PostMapping("/updateCustomerBy")
    @ApiOperation(value = "小程序-修改就诊人信息")
    @PostMapping ("/updateCustomerBy")
    @ApiOperation (value = "小程序-修改就诊人信息")
    @Transactional
    @RepeatSubmit
    public AjaxResult updateCustomerBy(@RequestBody TjCustomer tjCustomer) {
        if (tjCustomer == null) {
            return AjaxResult.error("修改失败");
        }
        String key = sysConfigService.selectConfigByKey("sfkqdyhis");
        TjCustomer one = customerService.getById(tjCustomer);
        one.setCusName(tjCustomer.getCusName());
        one.setCusIdcard(tjCustomer.getCusIdcard());
        one.setCusPhone(tjCustomer.getCusPhone());
        one.setCusNational(tjCustomer.getCusNational());
        one.setCusMarryStatus(tjCustomer.getCusMarryStatus());
        if (customerService.updateById(one)) {
            return AjaxResult.success(one);
        if (null != key && key.equals("Y")) {
            AjaxResult xinXi = suijieHisXinXi(one);
            if (!xinXi.get("code").toString().equals("200")) {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return AjaxResult.error("修改就诊人信息失败!" + xinXi.get("msg").toString());
            }
        } else {
            if (!customerService.updateById(one)) {
                return AjaxResult.error("修改失败");
            }
        }
        return AjaxResult.error("修改失败");
        return AjaxResult.success(one);
    }
    /**
     * 小程序根据手机号码获取用户身份证号码
     */
    @GetMapping(value = "/getIdCardByPhone")
    @ApiOperation(value = "小程序根据手机号码获取用户身份证号码")
    public AjaxResult getIdCardByPhone(@RequestParam @ApiParam(value = "手机号") String phone) {
    @GetMapping (value = "/getIdCardByPhone")
    @ApiOperation (value = "小程序根据手机号码获取用户身份证号码")
    public AjaxResult getIdCardByPhone(@RequestParam @ApiParam (value = "手机号") String phone) {
        if (!"".equals(phone) && phone != null && MatchUtils.isMobileNO(phone)) {
            LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
            qw.eq(TjCustomer::getCusPhone, phone);
            List<TjCustomer> tjCustomer1 = customerService.list(qw);
            if (tjCustomer1 != null && tjCustomer1.size()>0) {
            if (tjCustomer1 != null && tjCustomer1.size() > 0) {
                List<String> num = new ArrayList<>();
                for (TjCustomer tjCustomer : tjCustomer1) {
                    num.add(tjCustomer.getCusIdcard());
@@ -239,7 +272,7 @@
    /**
     * 根据字典类型查询字典数据信息
     */
    @GetMapping(value = "/type/{dictType}")
    @GetMapping (value = "/type/{dictType}")
    public AjaxResult dictType(@PathVariable String dictType) {
        List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
        if (StringUtils.isNull(data)) {
@@ -248,4 +281,52 @@
        return success(data);
    }
    //将方法返回值解析成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();
    }
    private AjaxResult suijieHisXinXi(TjCustomer tjCustomer) {
        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.size() > 0) {
                String pationid = resultData.get("PationId").toString();
                if (null != pationid) {
                    try {
                        if (tjCustomer.getCusId() == null) {
                            tjCustomer.setPationId(pationid);
                        }
                        customerService.saveOrUpdate(tjCustomer);
                    } catch (Exception e) {
                        e.printStackTrace();
                        return AjaxResult.error("操作失败!");
                    }
                    //保存注册入参出参
                    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)));
                }
            }
            return AjaxResult.success(tjCustomer);
        }
        return AjaxResult.error(object.getStr("ResultContent"));
    }
}