Bläddra i källkod

add
校验身份证号

18339543638 4 månader sedan
förälder
incheckning
20a1bda0c7

+ 47 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizIdCardPO.java

@@ -0,0 +1,47 @@
+package cn.tr.module.smart.common.po;
+
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.*;
+/**
+ * 身份证号实体
+ *
+ * @author lf
+ * @date  2025/08/01 13:44
+ **/
+@Data
+@TableName(value="biz_id_card",autoResultMap = true)
+@ToString
+public class BizIdCardPO implements Serializable {
+
+    /** id */
+    @TableId
+    @ApiModelProperty(value = "id", position = 1)
+    private String id;
+
+    /** id_card */
+    @ApiModelProperty(value = "id_card", position = 2)
+    private String idCard;
+
+    /** name */
+    @ApiModelProperty(value = "name", position = 3)
+    private String name;
+
+    /** province */
+    @ApiModelProperty(value = "province", position = 4)
+    private String province;
+
+    /** city */
+    @ApiModelProperty(value = "city", position = 5)
+    private String city;
+
+    /** county */
+    @ApiModelProperty(value = "county", position = 6)
+    private String county;
+}

+ 16 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizIdCardRepository.java

@@ -0,0 +1,16 @@
+package cn.tr.module.smart.common.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+import cn.tr.module.smart.common.po.BizIdCardPO;
+/**
+ * 身份证号Mapper接口
+ *
+ * @author lf
+ * @date  2025/08/01 13:44
+ **/
+@Repository
+@Mapper
+public interface BizIdCardRepository extends BaseMapper<BizIdCardPO> {
+}

+ 4 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizClinicRoomService.java

@@ -9,7 +9,9 @@ import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
 import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletFinishClinicDTO;
+import cn.tr.module.smart.wx.dto.BizWxUserCheckCardNoDTO;
 
+import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 
@@ -115,4 +117,6 @@ public interface IBizClinicRoomService {
      * @return
      */
     Boolean stdAddDoctorApp(BizClinicAddOrEditDTO source);
+
+    Boolean validateCardNo(BizWxUserCheckCardNoDTO source) throws IOException;
 }

+ 29 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizClinicRoomServiceImpl.java

@@ -16,8 +16,11 @@ import cn.tr.module.smart.common.service.*;
 import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicDetailVO;
 import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
 import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
+import cn.tr.module.smart.wx.controller.vo.IdCardInfoVO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletFinishClinicDTO;
+import cn.tr.module.smart.wx.dto.BizWxUserCheckCardNoDTO;
+import cn.tr.module.smart.wx.utils.Id2Utils;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -29,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import cn.tr.module.smart.common.dto.BizClinicRoomDTO;
 import cn.tr.module.smart.common.dto.BizClinicRoomQueryDTO;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -77,6 +81,8 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
     @Autowired
     private BizClinicRoomDoctorUserRepository roomDoctorUserRepository;
 
+    @Autowired
+    private BizIdCardRepository idCardRepository;
     @Override
     public List<BizWxAppletClinicDetailVO> stdSelectWxAppletClinicList(BizWxAppletClinicQueryDTO query) {
         return baseRepository.stdSelectWxAppletClinicList(query);
@@ -392,6 +398,29 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         return Boolean.TRUE;
     }
 
+    @Override
+    public Boolean validateCardNo(BizWxUserCheckCardNoDTO source) throws IOException {
+        BizIdCardPO idCard = idCardRepository.selectOne(new LambdaQueryWrapper<BizIdCardPO>()
+                .eq(BizIdCardPO::getIdCard, source.getCardNo())
+                .eq(BizIdCardPO::getName, source.getName())
+                .last("limit 1"));
+        if(ObjectUtil.isNotNull(idCard)){
+            return Boolean.TRUE;
+        }
+        IdCardInfoVO cardInfoVO = Id2Utils.getInfo(source.getName(), source.getCardNo());
+        if (!"0000".equals(cardInfoVO.getRespCode())) {
+            return Boolean.FALSE;
+        }
+        idCard = new BizIdCardPO();
+        idCard.setIdCard(source.getCardNo());
+        idCard.setName(source.getName());
+        idCard.setProvince(cardInfoVO.getProvince());
+        idCard.setCity(cardInfoVO.getCity());
+        idCard.setCounty(cardInfoVO.getCounty());
+        idCardRepository.insert(idCard);
+        return Boolean.TRUE;
+    }
+
     /**
      * 微信小程序基于医生已填写的信息更新数据
      */

+ 1 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizPainAssessmentServiceImpl.java

@@ -103,6 +103,7 @@ public class BizPainAssessmentServiceImpl implements IBizPainAssessmentService {
         if(CollectionUtil.isEmpty(ids)){
             throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
         }
+
         return baseRepository.deleteBatchIds(ids);
     }
 

+ 6 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/BizWxAppletClinicController.java

@@ -9,10 +9,12 @@ import cn.tr.module.smart.common.service.IBizClinicRoomService;
 import cn.tr.module.smart.common.service.IBizClinicRoomWxUserService;
 import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicDetailVO;
 import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
+import cn.tr.module.smart.wx.controller.vo.IdCardInfoVO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicShiftCareDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletFinishClinicDTO;
 import cn.tr.module.smart.wx.dto.BizWxUserCheckCardNoDTO;
+import cn.tr.module.smart.wx.utils.Id2Utils;
 import cn.tr.plugin.mybatis.base.BaseController;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
@@ -20,6 +22,8 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
 import java.util.*;
 
 /**
@@ -86,7 +90,7 @@ public class BizWxAppletClinicController extends BaseController{
 
     @PostMapping("/checkCardNo")
     @ApiOperation(value = "校验身份证号",position = 9)
-    public CommonResult<Boolean> checkCardNo(@RequestBody@Validated BizWxUserCheckCardNoDTO source){
-        return CommonResult.success(Boolean.TRUE);
+    public CommonResult<Boolean> checkCardNo(@RequestBody@Validated BizWxUserCheckCardNoDTO source) throws IOException {
+        return CommonResult.success(clinicRoomService.validateCardNo(source));
     }
 }

+ 16 - 35
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/BizPainAssessmentController.java → tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/BizWxAppletPainAssessmentController.java

@@ -1,13 +1,13 @@
 package cn.tr.module.smart.wx.controller;
 
+import cn.tr.module.smart.web.dto.BizPainAssessmentListDTO;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.tr.core.validation.Insert;
-import cn.tr.core.validation.Update;
 import cn.tr.core.pojo.CommonResult;
 import lombok.AllArgsConstructor;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -15,12 +15,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import cn.tr.module.smart.common.dto.BizPainAssessmentDTO;
 import cn.tr.module.smart.common.service.IBizPainAssessmentService;
-import cn.tr.module.smart.common.dto.BizPainAssessmentQueryDTO;
 import java.util.*;
 import cn.tr.plugin.mybatis.base.BaseController;
 import org.springframework.web.bind.annotation.*;
-import cn.tr.module.api.sys.log.annotation.OperateLog;
-import cn.tr.core.pojo.TableDataInfo;
 /**
  * 患者疼痛评估控制器
  *
@@ -29,51 +26,35 @@ import cn.tr.core.pojo.TableDataInfo;
  */
 @Api(tags = "患者疼痛评估")
 @RestController
-@RequestMapping("/common/painAssessment")
+@RequestMapping("/wx/painAssessment")
 @AllArgsConstructor
-public class BizPainAssessmentController extends BaseController{
+public class BizWxAppletPainAssessmentController extends BaseController{
 
     private final IBizPainAssessmentService bizPainAssessmentService;
 
-    @ApiOperationSupport(author = "lf",order = 1)
-    @ApiOperation(value="根据条件查询患者疼痛评估",notes = "权限: 无")
-    @PostMapping("/query/page")
-    public TableDataInfo<BizPainAssessmentDTO> selectList(@RequestBody BizPainAssessmentQueryDTO query) {
-        startPage();
-        return getDataTable(bizPainAssessmentService.selectBizPainAssessmentList(query));
+    @ApiOperationSupport(author = "wangzl",order = 1)
+    @ApiOperation(value="根据手术ID查询患者疼痛评估",notes = "权限: 无")
+    @GetMapping("/query/pain/{clinicId}")
+    public CommonResult<List<BizPainAssessmentListDTO>> selectPainByClinicList(@PathVariable String clinicId) {
+        return CommonResult.success(bizPainAssessmentService.selectPainByClinicList(clinicId));
     }
-
-    @ApiOperationSupport(author = "lf",order = 2)
-    @ApiOperation(value = "根据id查询患者疼痛评估",notes = "权限: common:painAssessment:query")
-    @GetMapping("/detail/{id}")
-    @SaCheckPermission("common:painAssessment:query")
-    public CommonResult<BizPainAssessmentDTO> findById(@PathVariable("id") String id){
-        return CommonResult.success(bizPainAssessmentService.selectBizPainAssessmentById(id));
+    @ApiOperationSupport(author = "wangzl",order = 2)
+    @ApiOperation(value="根据疼痛评价ID查询疼痛评价",notes = "权限: 无")
+    @GetMapping("/query/{assessmentId}")
+    public CommonResult<BizPainAssessmentDTO> selectById(@PathVariable String assessmentId) {
+        return CommonResult.success(bizPainAssessmentService.selectWebBizPainAssessmentById(assessmentId));
     }
 
     @ApiOperationSupport(author = "lf",order = 3)
-    @ApiOperation(value="添加患者疼痛评估",notes = "权限: common:painAssessment:add")
+    @ApiOperation(value="添加患者疼痛评估",notes = "权限: ")
     @PostMapping("/add")
-    @OperateLog
-    @SaCheckPermission("common:painAssessment:add")
     public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizPainAssessmentDTO source) {
         return CommonResult.success(bizPainAssessmentService.insertBizPainAssessment(source));
     }
 
-    @ApiOperationSupport(author = "lf",order = 4)
-    @ApiOperation(value="通过主键id编辑患者疼痛评估",notes = "权限: common:painAssessment:edit")
-    @PostMapping("/edit")
-    @OperateLog
-    @SaCheckPermission("common:painAssessment:edit")
-    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) BizPainAssessmentDTO source) {
-        return CommonResult.success(bizPainAssessmentService.updateBizPainAssessmentById(source));
-    }
-
     @ApiOperationSupport(author = "lf",order = 5)
-    @ApiOperation(value="删除患者疼痛评估",notes = "权限: common:painAssessment:remove")
+    @ApiOperation(value="删除患者疼痛评估",notes = "权限: 无")
     @PostMapping("/removeByIds")
-    @OperateLog
-    @SaCheckPermission("common:painAssessment:remove")
     public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
         return CommonResult.success(bizPainAssessmentService.removeBizPainAssessmentByIds(ids));
     }

+ 3 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/BizWxAppletClinicDetailVO.java

@@ -78,4 +78,7 @@ public class BizWxAppletClinicDetailVO implements Serializable {
 
     @ApiModelProperty("上一次填写术后问卷的时间")
     private Date lastAfterQuestionTime;
+
+    @ApiModelProperty("上一次镇痛评价的时间")
+    private Date lastPainAssessmentTime;
 }

+ 65 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/IdCardInfoVO.java

@@ -0,0 +1,65 @@
+package cn.tr.module.smart.wx.controller.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 身份证信息实体类
+ */
+@Data
+public class IdCardInfoVO implements Serializable {
+    
+    private static final long serialVersionUID = 1L;
+    
+    /**
+     * 姓名
+     */
+    private String name;
+    
+    /**
+     * 身份证号码
+     */
+    private String idNo;
+    
+    /**
+     * 响应信息
+     */
+    private String respMessage;
+    
+    /**
+     * 响应码
+     */
+    private String respCode;
+    
+    /**
+     * 省份
+     */
+    private String province;
+    
+    /**
+     * 城市
+     */
+    private String city;
+    
+    /**
+     * 区县
+     */
+    private String county;
+    
+    /**
+     * 生日(YYYYMMDD)
+     */
+    private Date birthday;
+    
+    /**
+     * 性别 M-男 F-女
+     */
+    private String sex;
+    
+    /**
+     * 年龄
+     */
+    private String age;
+}

+ 45 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/utils/Id2Utils.java

@@ -0,0 +1,45 @@
+package cn.tr.module.smart.wx.utils;
+
+import java.io.IOException;
+
+import cn.hutool.json.JSONUtil;
+import cn.tr.core.utils.JsonUtils;
+import cn.tr.module.smart.wx.controller.vo.IdCardInfoVO;
+import okhttp3.Call;
+import okhttp3.FormBody;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
+public class Id2Utils {
+	private static String url = "https://idenauthen.market.alicloudapi.com/idenAuthentication";
+	private static String appCode = "0b50e932833a476b96d6aafae04d95b0";
+
+	public static IdCardInfoVO getInfo(String name, String idNo) throws IOException {
+		return postData(appCode, url, name, idNo);
+	}
+
+	private static IdCardInfoVO postData(String appCode, String url, String name, String idNo) throws IOException {
+		String result = "";
+		RequestBody formBody = new FormBody.Builder().add("name", name).add("idNo", idNo).build();
+		Request request = new Request.Builder().url(url).addHeader("Authorization", "APPCODE " + appCode).post(formBody).build();
+		
+		Call call = new OkHttpClient().newCall(request);
+		Response response = null;
+		try {
+		    response = call.execute();
+		} catch (IOException e) {
+		    System.out.println("execute failed, message:" + e.getMessage());
+		}
+		
+		assert response != null;
+		if (!response.isSuccessful()) {      // 当返回结果发生错误时
+		    // 状态码为403时一般是套餐包用尽,需续购;注意:续购不会改变秘钥(appCode),仅增加次数
+		    // 续购链接:https://market.aliyun.com/products/57000002/cmapi025518.html
+		    System.out.println("request failed----" + "返回状态码" + response.code()  + ",message:" + response.message());
+		}
+		result = response.body().string();    //此处不可以使用toString()方法,该方法已过期
+		return JsonUtils.parseObject(result, IdCardInfoVO.class);
+	}
+}

+ 5 - 1
tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizClinicRoomMapper.xml

@@ -24,6 +24,8 @@
         <result property="questionAnswerId" column="question_answer_id"/>
         <result property="doctorId" column="doctor_id"/>
         <result property="doctorNickname" column="doctor_nickname"/>
+        <result property="lastPainAssessmentTime" column="last_pain_assessment_time"/>
+        <result property="lastAfterQuestionTime" column="last_after_question_time"/>
     </resultMap>
 
     <resultMap id="RoomAndPatient" type="cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomVO">
@@ -57,7 +59,9 @@
         bqa.answer_time       as last_modify_question_time,
         su.id                 as doctor_id,
         su.nickname           as doctor_nickname,
-        bcr.last_before_question_time as last_before_question_time
+        bcr.last_before_question_time as last_before_question_time,
+        bcr.last_pain_assessment_time as last_pain_assessment_time,
+        bcr.last_after_question_time as last_after_question_time
         from biz_clinic_room as bcr
         join biz_clinic_room_wx_user as bcrwu on bcrwu.clinic_room_id = bcr.id
         left join biz_clinic_room_doctor_user as bcrmu on bcrmu.clinic_room_id = bcr.id