소스 검색

优化绑卡代码

lighter 2 년 전
부모
커밋
3156d6249e

+ 8 - 17
src/main/java/thyyxxk/wxservice_server/dao/PatientCardsDao.java

@@ -23,24 +23,15 @@ public interface PatientCardsDao {
 
     @Select("select rtrim(name) name, rtrim(patient_id) patientId, rtrim(social_no) socialNo, " +
             "convert(varchar(10), lv_date, 21) lvDate, rtrim(ic_card_no) icCardNo " +
-            "from mz_patient_mi with(nolock) where patient_id=#{cardNo}")
-    List<IdCardAnalyzeResult> getPatientBaseInfoByPatientId(@Param("cardNo") String cardNo);
-
-    @Select("select rtrim(name) name, rtrim(patient_id) patientId, rtrim(social_no) socialNo, " +
-            "convert(varchar(10), lv_date, 21) lvDate, rtrim(ic_card_no) icCardNo " +
-            "from mz_patient_mi with(nolock) where ic_card_no=#{cardNo}")
-    List<IdCardAnalyzeResult> getPatientBaseInfoByMzCardNo(@Param("cardNo") String cardNo);
-
-    @Select("select rtrim(name) name, rtrim(patient_id) patientId, rtrim(social_no) socialNo, " +
-            "convert(varchar(10), lv_date, 21) lvDate, rtrim(ic_card_no) icCardNo " +
-            "from mz_patient_mi with(nolock) where social_no=#{cardNo}")
-    List<IdCardAnalyzeResult> getPatientBaseInfoBySocialNo(@Param("cardNo") String cardNo);
+            "from mz_patient_mi with(nolock) where ${cardType}=#{cardNo}")
+    List<IdCardAnalyzeResult> selectMzPatientBriefInfo(@Param("cardType") String cardType,
+                                                       @Param("cardNo") String cardNo);
 
     @Select("select count(1) from t_wechat_patient_bind with(nolock) where patient_id=#{patientId} and open_id=#{openId}")
-    Integer isThisCardBindBefore(@Param("patientId") String patientId, @Param("openId") String openId);
+    Integer selectHistoryBindCount(@Param("patientId") String patientId, @Param("openId") String openId);
 
     @Select("select count(1) from t_wechat_patient_bind with(nolock) where open_id=#{openId} and del_flag=0")
-    Integer validBindCount(@Param("openId") String openId);
+    Integer selectValidBindCount(@Param("openId") String openId);
 
     @Insert("insert into t_wechat_patient_bind (name, patient_id, social_no, phone, province, " +
             "city, district, street, open_id, del_flag, is_default, ic_card_no, guard_name,guard_id_no) " +
@@ -67,14 +58,14 @@ public interface PatientCardsDao {
     @Update("update t_wechat_patient_bind set del_flag=0,name=#{name},phone=#{phone}, " +
             "province=#{province}, city=#{city}, district=#{district}, street=#{street} " +
             "where patient_id=#{patientId} and open_id=#{openId}")
-    void bindPatientCardAgain(IdCardAnalyzeResult param);
+    void unfrozenPatientCard(IdCardAnalyzeResult param);
 
     @Delete("update t_wechat_patient_bind set del_flag=1 where patient_id=#{patientId} and open_id=#{openId}")
-    void unBindPatientCard(@Param("patientId") String patientId, @Param("openId") String openId);
+    void frozenPatientCard(@Param("patientId") String patientId, @Param("openId") String openId);
 
     @Update("update t_wechat_patient_bind set ic_card_no=#{cardNo}, " +
             "old_ic_card_no=#{oldCardNo} where ic_card_no=#{oldCardNo}")
-    void updateCardNo(@Param("cardNo") String cardNo, @Param("oldCardNo") String oldCardNo);
+    void updateIcCardNo(@Param("cardNo") String cardNo, @Param("oldCardNo") String oldCardNo);
 
     @Select("select top 1 name from t_wechat_patient_bind with(nolock) where ic_card_no=#{cardNo} and del_flag=0")
     String selectPatientNameByCardNo(@Param("cardNo") String cardNo);

+ 2 - 2
src/main/java/thyyxxk/wxservice_server/service/IdCardAnalyzeService.java

@@ -162,9 +162,9 @@ public class IdCardAnalyzeService {
 
     private ResultVo<HashMap<String, Object>> bindExistCard(IdCardAnalyzeResult temp) {
         HashMap<String, Object> map = new HashMap<>(Constants.Capacity.TWO);
-        final int count = cardsDao.isThisCardBindBefore(temp.getPatientId(), temp.getOpenId());
+        final int count = cardsDao.selectHistoryBindCount(temp.getPatientId(), temp.getOpenId());
         if (count > 0) {
-            cardsDao.bindPatientCardAgain(temp);
+            cardsDao.unfrozenPatientCard(temp);
         } else {
             cardsDao.bindPatientCard(temp);
         }

+ 48 - 56
src/main/java/thyyxxk/wxservice_server/service/PatientCardsService.java

@@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 import thyyxxk.wxservice_server.config.exception.ExceptionEnum;
-import thyyxxk.wxservice_server.constant.Constants;
 import thyyxxk.wxservice_server.dao.PatientCardsDao;
 import thyyxxk.wxservice_server.entity.ResultVo;
 import thyyxxk.wxservice_server.entity.analyzeidcard.IdCardAnalyzeResult;
@@ -72,63 +71,56 @@ public class PatientCardsService {
 
     public ResultVo<HashMap<String, Object>> bindPatientId(IdCardAnalyzeResult param) {
         log.info("绑定就诊卡:{}", param);
-        final List<IdCardAnalyzeResult> list;
-        if (param.getCardType() == 0) {
-            list = dao.getPatientBaseInfoByPatientId(param.getCardNo());
-        } else if (param.getCardType() == 1) {
-            list = dao.getPatientBaseInfoByMzCardNo(param.getCardNo());
-        } else {
-            list = dao.getPatientBaseInfoBySocialNo(param.getCardNo());
-        }
+        String column = param.getCardType() == 0 ? "patient_id" :
+                (param.getCardType() == 1 ? "ic_card_no" : "social_no");
+        List<IdCardAnalyzeResult> list = dao.selectMzPatientBriefInfo(column, param.getCardNo());
         if (null == list || list.isEmpty()) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有找到对应的就诊卡信息!");
-        } else {
-            HashMap<String, Object> map = new HashMap<>(Constants.Capacity.TWO);
-            if (list.size() == 1) {
-                IdCardAnalyzeResult temp = list.get(0);
-                if (param.getName().trim().equals(temp.getName())) {
-                    param.setPatientId(temp.getPatientId());
-                    param.setIcCardNo(temp.getIcCardNo());
-                    param.setSocialNo(temp.getSocialNo());
-                    final int count = dao.isThisCardBindBefore(param.getPatientId(), param.getOpenId());
-                    if (count > 0) {
-                        dao.bindPatientCardAgain(param);
-                    } else {
-                        if (dao.validBindCount(param.getOpenId()) == 0) {
-                            param.setIsDefault(1);
-                        } else {
-                            param.setIsDefault(0);
-                        }
-                        dao.bindPatientCard(param);
-                    }
-                    map.put("code", 0);
-                    map.put("cards", dao.getBindPatientCard(param.getOpenId()));
-                    log.info("绑定就诊卡成功:{}", param);
-                    String msgContent = "{\"touser\":\"\",\"data\":" +
-                            "{\"keyword3\":{\"color\":\"#173177\",\"value\":\"" + temp.getIcCardNo() + "\"}," +
-                            "\"keyword4\":{\"color\":\"#173177\",\"value\":\"" +
-                            DateUtil.formatDatetime(new Date(), "yyyy-MM-dd HH:mm:ss") + "\"}," +
-                            "\"keyword1\":{\"color\":\"#173177\",\"value\":\"" + param.getName() + "\"}," +
-                            "\"keyword2\":{\"color\":\"#173177\",\"value\":\"门诊就诊卡\"}," +
-                            "\"remark\":{\"color\":\"#FF0000\",\"value\":\"感谢您的使用,祝您健康!\"}," +
-                            "\"first\":{\"color\":\"#FF0000\",\"value\":\"您好,您已成功绑定就诊卡!\"}}," +
-                            "\"template_id\":\"3bXASQD7J9t8qkJ1x-zIrutOCIadP9neI-dXQOBIQQk\"," +
-                            "\"url\":\"\"}";
-                    PushMessageParam pojo = new PushMessageParam();
-                    pojo.setCardNo(temp.getIcCardNo());
-                    pojo.setMsgContext(JSONObject.parseObject(msgContent));
-                    pushWxMessageService.pushMessage(pojo);
-                    return ResultVoUtil.success(map);
-                } else {
-                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "就诊卡姓名信息不匹配!");
-                }
-            } else {
-                map.put("code", 1);
-                map.put("cards", list);
-                log.info("绑定就诊卡: 身份证{} 有多张就诊卡:{}", param.getCardNo(), list);
-                return ResultVoUtil.success(map);
+        }
+        if (list.size() > 1) {
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("code", 1);
+            map.put("cards", list);
+            return ResultVoUtil.success(map);
+        }
+        IdCardAnalyzeResult mzPatientMi = list.get(0);
+        if (param.getName().trim().equals(mzPatientMi.getName())) {
+            param.setPatientId(mzPatientMi.getPatientId());
+            param.setIcCardNo(mzPatientMi.getIcCardNo());
+            param.setSocialNo(mzPatientMi.getSocialNo());
+            int historyBindCount = dao.selectHistoryBindCount(param.getPatientId(), param.getOpenId());
+            if (historyBindCount > 0) {
+                dao.unfrozenPatientCard(param);
+                return ResultVoUtil.success(bindCardSuccess(param));
             }
+            int validBindCount = dao.selectValidBindCount(param.getOpenId());
+            param.setIsDefault(validBindCount == 0 ? 1 : 0);
+            dao.bindPatientCard(param);
+            return ResultVoUtil.success(bindCardSuccess(param));
         }
+        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "就诊卡姓名信息不匹配!");
+    }
+
+    private HashMap<String, Object> bindCardSuccess(IdCardAnalyzeResult param) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("code", 0);
+        map.put("cards", dao.getBindPatientCard(param.getOpenId()));
+        log.info("绑定就诊卡成功:{}", param);
+        String msgContent = "{\"touser\":\"\",\"data\":" +
+                "{\"keyword3\":{\"color\":\"#173177\",\"value\":\"" + param.getIcCardNo() + "\"}," +
+                "\"keyword4\":{\"color\":\"#173177\",\"value\":\"" +
+                DateUtil.formatDatetime(new Date(), "yyyy-MM-dd HH:mm:ss") + "\"}," +
+                "\"keyword1\":{\"color\":\"#173177\",\"value\":\"" + param.getName() + "\"}," +
+                "\"keyword2\":{\"color\":\"#173177\",\"value\":\"门诊就诊卡\"}," +
+                "\"remark\":{\"color\":\"#FF0000\",\"value\":\"感谢您的使用,祝您健康!\"}," +
+                "\"first\":{\"color\":\"#FF0000\",\"value\":\"您好,您已成功绑定就诊卡!\"}}," +
+                "\"template_id\":\"3bXASQD7J9t8qkJ1x-zIrutOCIadP9neI-dXQOBIQQk\"," +
+                "\"url\":\"\"}";
+        PushMessageParam pojo = new PushMessageParam();
+        pojo.setCardNo(param.getIcCardNo());
+        pojo.setMsgContext(JSONObject.parseObject(msgContent));
+        pushWxMessageService.pushMessage(pojo);
+        return map;
     }
 
     public ResultVo<String> setDefaultCard(String patientId, String openId) {
@@ -148,7 +140,7 @@ public class PatientCardsService {
 
     public ResultVo<List<IdCardAnalyzeResult>> relieveBindCard(IdCardAnalyzeResult param) {
         log.info("解除就诊卡绑定:{}", param);
-        dao.unBindPatientCard(param.getPatientId(), param.getOpenId());
+        dao.frozenPatientCard(param.getPatientId(), param.getOpenId());
         return ResultVoUtil.success(dao.getBindPatientCard(param.getOpenId()));
     }
 
@@ -158,7 +150,7 @@ public class PatientCardsService {
         pojo.setCardNo(param.getCardNo());
         String msgContent;
         if (param.getActionType() == 1) {
-            dao.updateCardNo(param.getCardNo(), param.getOldCardNo());
+            dao.updateIcCardNo(param.getCardNo(), param.getOldCardNo());
             msgContent = "{\"touser\":\"\",\"data\":" +
                     "{\"keyword3\":{\"color\":\"#173177\",\"value\":\"" + param.getCardNo() + "\"}," +
                     "\"keyword1\":{\"color\":\"#173177\",\"value\":\"" + dao.selectPatientNameByCardNo(param.getCardNo()) + "\"}," +