LIJU 2 weeks ago
parent
commit
b825b83c13

+ 13 - 0
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/nursing/NursingManagementDao.java

@@ -155,6 +155,19 @@ public interface NursingManagementDao {
           " </script>  ")
  Integer batchSaveYzTemperatureGm(List<YzTemperatureGm> list);
 
+  /**
+   * 删除指定患者本次住院下,给定列表中的过敏药物条目(按名称删除)
+   */
+  @Delete(" <script> delete from yz_temperature_gm where inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} and gmxm in "+
+          " <foreach collection='items' item='item' open='(' separator=',' close=')'> #{item} </foreach> </script> ")
+  void deleteYzTemperatureGmByItems(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes, @Param("items") List<String> items);
+
+  /**
+   * 清空指定患者本次住院下的全部过敏药物
+   */
+  @Delete(" delete from yz_temperature_gm where inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} ")
+  void deleteAllYzTemperatureGm(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") Integer admissTimes);
+
 @Insert("<script> " +
         " insert into yz_temperature_sum ( inpatient_no,admiss_times,rec_date,pressure_am,pressure_pm,intake,shit,shit_other,shit_unit,shit_shape,urine_quan_am,body_weight,body_weight_info,output_sum,output_other,userid,input_time,modify_userid,modify_time,urine_quan_info,intake_speed,intake_breast_milk,intake_water,intake_milk,urine_quan_color,output_other_info,body_length,urine_info,intake_info,output_info) values " +
         "   <foreach collection='list' item='item'  separator=',' > " +

+ 51 - 27
src/main/java/thyyxxk/webserver/service/medicaladvice/nursing/NursingManagementService.java

@@ -225,33 +225,57 @@ public class NursingManagementService {
 
     public ResultVo<String> saveGm(YzTemperatureVO yzTemperature){
         List<String> gmItems = yzTemperature.getGmItems();
-        List<String> exist = queyGm(yzTemperature);
-       if(CollUtil.isNotEmpty(gmItems)){
-           List<String> collect = gmItems.stream().filter(item -> StrUtil.isNotBlank(item)).collect(Collectors.toList());
-           if(CollUtil.isEmpty(collect)){
-               throw new BizException(ExceptionEnum.LOGICAL_ERROR, "保存的过敏药物不能为空");
-           }
-           List<String> notExist = collect.stream().filter(item -> !exist.contains(item)).collect(Collectors.toList());
-           if(CollUtil.isNotEmpty(notExist)){
-               Date now = new Date();
-               int i = 1;
-               List<YzTemperatureGm> data = new ArrayList<>();
-               for(String gm:notExist){
-                   YzTemperatureGm yzTemperatureGm = new YzTemperatureGm();
-                   yzTemperatureGm.setInpatientNo(yzTemperature.getVisitIds().get(0).split(separator)[0]);
-                   yzTemperatureGm.setAdmissTimes(Convert.toInt(yzTemperature.getVisitIds().get(0).split(separator)[1]));
-                   yzTemperatureGm.setGmxm(gm);
-                   yzTemperatureGm.setOrderTime(now);
-                   yzTemperatureGm.setPsTime(now);
-                   yzTemperatureGm.setResultTime(now);
-                   yzTemperatureGm.setActOrderNo(new BigDecimal(DateUtil.format(new Date(), "HHmmss")+i));
-                   data.add(yzTemperatureGm);
-                   ++i;
-               }
-               batchSaveData(data);
-           }
-       }
-        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE,"保存过敏药物信息成功");
+        // 若未携带gmItems(为null),视为非本功能调用,不进行任何变更
+        if (gmItems == null) {
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "过敏药物未变更");
+        }
+        // 标准化住院信息
+        String inpatientNo = StrUtil.isBlank(yzTemperature.getInpatientNo()) ? yzTemperature.getVisitIds().get(0).split(separator)[0] : yzTemperature.getInpatientNo();
+        Integer admissTimes = yzTemperature.getAdmissTimes() == null ? Convert.toInt(yzTemperature.getVisitIds().get(0).split(separator)[1]) : yzTemperature.getAdmissTimes();
+        
+        // 允许清空:若列表为空或仅包含空白,则清空该患者本次住院所有过敏药物
+        if (CollUtil.isEmpty(gmItems) || CollUtil.isEmpty(gmItems.stream().filter(StrUtil::isNotBlank).collect(Collectors.toList()))) {
+            dao.deleteAllYzTemperatureGm(inpatientNo, admissTimes);
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "过敏药物清空成功");
+        }
+
+        // 去重、去空白
+        List<String> collect = gmItems.stream().filter(StrUtil::isNotBlank).distinct().collect(Collectors.toList());
+
+        // 查询已存在
+        YzTemperatureVO temp = new YzTemperatureVO();
+        temp.setInpatientNo(inpatientNo);
+        temp.setAdmissTimes(admissTimes);
+        List<String> exist = queyGm(temp);
+
+        // 需要新增的
+        List<String> notExist = collect.stream().filter(item -> !exist.contains(item)).collect(Collectors.toList());
+        if (CollUtil.isNotEmpty(notExist)) {
+            Date now = new Date();
+            int i = 1;
+            List<YzTemperatureGm> data = new ArrayList<>();
+            for (String gm : notExist) {
+                YzTemperatureGm yzTemperatureGm = new YzTemperatureGm();
+                yzTemperatureGm.setInpatientNo(inpatientNo);
+                yzTemperatureGm.setAdmissTimes(admissTimes);
+                yzTemperatureGm.setGmxm(gm);
+                yzTemperatureGm.setOrderTime(now);
+                yzTemperatureGm.setPsTime(now);
+                yzTemperatureGm.setResultTime(now);
+                yzTemperatureGm.setActOrderNo(new BigDecimal(DateUtil.format(new Date(), "HHmmss") + i));
+                data.add(yzTemperatureGm);
+                ++i;
+            }
+            batchSaveData(data);
+        }
+
+        // 需要删除的(库里有但本次未提交的),按名称删除
+        List<String> toDelete = exist.stream().filter(item -> !collect.contains(item)).collect(Collectors.toList());
+        if (CollUtil.isNotEmpty(toDelete)) {
+            dao.deleteYzTemperatureGmByItems(inpatientNo, admissTimes, toDelete);
+        }
+
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "保存过敏药物信息成功");
     }
 
     public List<YzTemperatureSum> getYzTemperatureSums(YzTemperatureVO yzTemperature) {