Procházet zdrojové kódy

优化修改护理记录单。

xiaochan před 4 roky
rodič
revize
187e6fddd4

+ 5 - 4
src/main/java/thyyxxk/webserver/controller/datamodify/YzTemperatureController.java

@@ -6,7 +6,6 @@ import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.YzTemperature;
 import thyyxxk.webserver.service.datamodify.YzTemperatureService;
 
-import java.text.ParseException;
 import java.util.List;
 
 /**
@@ -27,9 +26,11 @@ public class YzTemperatureController {
         this.service = service;
     }
 
-    @PostMapping("/query")
-    public ResultVo<YzTemperature> queryDetails(@RequestBody YzTemperature param) throws ParseException {
-        return service.queryDetails(param);
+    @GetMapping("/queryYzTemperature")
+    public ResultVo<YzTemperature> queryYzTemperature(@RequestParam("date") String date,
+                                                      @RequestParam("inpatientNo") String inpatientNo,
+                                                      @RequestParam("admissTimes") Integer admissTimes) {
+        return service.queryYzTemperature(date, inpatientNo, admissTimes);
     }
 
     @GetMapping("/getWard")

+ 19 - 10
src/main/java/thyyxxk/webserver/dao/his/datamodify/YzTemperatureDao.java

@@ -1,6 +1,7 @@
 package thyyxxk.webserver.dao.his.datamodify;
 
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
@@ -34,7 +35,10 @@ public interface YzTemperatureDao {
             "and rec_date=#{toStringRecDate} and rec_time=#{toStringRecTime} " +
             "order by detail_no"
     )
-    List<YzTemperature> queryDetails(YzTemperature param);
+    List<YzTemperature> queryDetails(@Param("toStringRecDate") String toStringRecDate,
+                                     @Param("toStringRecTime") String toStringRecTime,
+                                     @Param("inpatientNo") String inpatientNo,
+                                     @Param("admissTimes") Integer admissTimes);
 
     /**
      * 获取病区
@@ -51,7 +55,6 @@ public interface YzTemperatureDao {
      *              现在能修改的字段有 体温:temperature1 脉搏:pulse1 呼吸:breathe1
      *              血压am: pressure1Am, 血压pm:pressure1Pm  spo2:spo2 意识:mind 皮肤:skin
      *              管道名称:tubesName 管道状态:tubesStatus  病区:ward
-     * @return 返回状态
      */
     @Update("<script>" +
             "update yz_temperature set " +
@@ -93,21 +96,27 @@ public interface YzTemperatureDao {
             "inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes} and scd_flag='0' " +
             "and rec_date=#{toStringRecDate} and rec_time=#{toStringRecTime} and detail_no=#{detailNo}" +
             "</script>")
-    Boolean teperatureHead(YzTemperature param);
+    void teperatureHead(YzTemperature param);
+
 
     /**
      * 更新 剩下的地方 主要是更新 病室和 修改人 修改时间
      *
-     * @param param 科室 修改人 修改时间
+     * @param param        更新条件以及更新的字段
+     * @param detailNoList 下面这个是很坑爹的东西需要很多个这个才能锁定唯一的一条
      */
     @Update("<script>" +
-            "update yz_temperature set modify_userid=#{modifyUserid},modify_time=#{modifyTime}" +
-            "<if test=\"ward!=null\">" +
-            ",ward=#{ward}" +
+            "update yz_temperature set modify_userid=#{param.modifyUserid},modify_time=#{param.modifyTime}" +
+            "<if test=\"param.ward!=null\">" +
+            ",ward=#{param.ward}" +
             "</if>" +
             "where " +
-            "inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes} and scd_flag='0' " +
-            "and rec_date=#{toStringRecDate} and rec_time=#{toStringRecTime} and detail_no=#{detailNo}" +
+            "inpatient_no=#{param.inpatientNo} and admiss_times=#{param.admissTimes} and scd_flag='0' " +
+            "and rec_date=#{param.toStringRecDate} and rec_time=#{param.toStringRecTime} and detail_no in " +
+            "<foreach collection=\"detailNoList\" item=\"detailNo\" index=\"index\" open=\"(\" close=\")\" separator=\",\">" +
+            "#{detailNo}" +
+            "</foreach>" +
             "</script>")
-    void teperatureBody(YzTemperature param);
+    void teperatureBody(@Param("param") YzTemperature param,
+                        @Param("detailNoList") Integer[] detailNoList);
 }

+ 36 - 56
src/main/java/thyyxxk/webserver/service/datamodify/YzTemperatureService.java

@@ -1,19 +1,17 @@
 package thyyxxk.webserver.service.datamodify;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
-import thyyxxk.webserver.constants.GetDateFormat;
 import thyyxxk.webserver.dao.his.datamodify.YzTemperatureDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.YzTemperature;
-import thyyxxk.webserver.utils.DateUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.TokenUtil;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
@@ -28,33 +26,33 @@ import java.util.List;
  */
 @Service
 @Slf4j
+@DS("dev")
 public class YzTemperatureService {
 
     private final YzTemperatureDao dao;
 
-    private static final String GET_DATE_FORMAT = "yyyy-MM-dd";
-    private static final String GET_TIME_FORMAT = "HH:mm:ss";
-
+    @Autowired
     public YzTemperatureService(YzTemperatureDao dao) {
         this.dao = dao;
     }
 
+
     /**
-     * 查询护理记录单
-     *
-     * @param param 根据 住院号 住院次数 日期 查询 坑爹的这个人把 日期要 拆分出来
-     * @return 返回一条拼接好问题描述的数据
+     * @param date        日期
+     * @param inpatientNo 住院号
+     * @param admissTimes 住院次数
+     * @return 返回一条护理记录单
      */
-    public ResultVo<YzTemperature> queryDetails(YzTemperature param) throws ParseException {
-        String date = DateUtil.formatDatetime(param.getDate(), GET_DATE_FORMAT);
-        String time = DateUtil.formatDatetime(param.getDate(), GET_TIME_FORMAT);
+    public ResultVo<YzTemperature> queryYzTemperature(String date, String inpatientNo, Integer admissTimes) {
+        String[] splitStringDate = date.split(" ");
 
-        log.info("查询护理记录单 --> 操作人:{},住院号:{},住院次数:{},日期:{},时间:{}",
-                TokenUtil.getTokenUserId(), param.getInpatientNo(), param.getAdmissTimes(), date, time);
-        param.setToStringRecDate(date);
-        param.setToStringRecTime(time);
+        String toStringRecDate = splitStringDate[0];
+        String toStringRecTime = splitStringDate[1];
 
-        List<YzTemperature> list = dao.queryDetails(param);
+        log.info("查询护理记录单 --> 操作人:{},住院号:{},住院次数:{},日期:{},时间:{}",
+                TokenUtil.getTokenUserId(), inpatientNo, admissTimes, toStringRecDate, toStringRecTime);
+
+        List<YzTemperature> list = dao.queryDetails(toStringRecDate, toStringRecTime, inpatientNo, admissTimes);
         StringBuilder splicingOtherInfo = new StringBuilder();
         YzTemperature pojo = new YzTemperature();
 
@@ -62,9 +60,9 @@ public class YzTemperatureService {
             for (int i = 0; i < list.size(); i++) {
                 if (i == 0) {
                     pojo = list.get(0);
-                    //坑爹的1900年的 日期 传到前端会少几分钟 需要转成 string 在把 1900替换成2000
-                    String timeS = "2021-01-01 " + time;
-                    pojo.setRecTime(new SimpleDateFormat(GetDateFormat.DATE_TIME).parse(timeS));
+                    //坑爹的1900年的 日期 传到前端会少几分钟 所以我直接把前面能够搜索到的条件变成
+                    pojo.setToStringRecDate(toStringRecDate);
+                    pojo.setToStringRecTime(toStringRecTime);
                 }
                 //拼接字符串 把otherInfo 拼起来
                 splicingOtherInfo.append(list.get(i).getOtherInfo());
@@ -87,48 +85,30 @@ public class YzTemperatureService {
      * @return 返回状态
      */
     public ResultVo<Boolean> modify(YzTemperature param) {
-        //把你的日期转化成 对应的格式
-        param.setToStringRecDate(DateUtil.formatDatetime(param.getDate(), GET_DATE_FORMAT));
-        param.setToStringRecTime(DateUtil.formatDatetime(param.getDate(), GET_TIME_FORMAT));
-
-
         //查询出原来的 数据
-        YzTemperature pojo = new YzTemperature();
-        List<YzTemperature> list = dao.queryDetails(param);
+        List<YzTemperature> list = dao.queryDetails(param.getToStringRecDate(), param.getToStringRecTime(),
+                param.getInpatientNo(), param.getAdmissTimes());
 
         param.setModifyUserid(TokenUtil.getTokenUserId());
         param.setModifyTime(new Date());
 
+        Integer[] detailNoList = new Integer[list.size()];
+        param.setDetailNo(list.get(0).getDetailNo());
+        YzTemperature pojo = list.get(0);
+
         for (int i = 0; i < list.size(); i++) {
-            if (i == 0) {
-                param.setDetailNo(list.get(i).getDetailNo());
-                pojo = list.get(i);
-                if (!dao.teperatureHead(param)) {
-                    return ResultVoUtil.fail(ExceptionEnum.SLIGHTLY_ERROR);
-                }
-            } else {
-                param.setDetailNo(list.get(i).getDetailNo());
-                dao.teperatureBody(param);
-            }
+            detailNoList[i] = list.get(i).getDetailNo();
         }
 
-        log.info("护理记录单修改前 --> 操作人:{},修改的记录单日期:{},时间:{},住院次数:{},住院号:{},体温:{}," +
-                        "心率/脉搏:{},呼吸:{},血压am:{},血压pm:{}," +
-                        "spo2:{},意识:{},皮肤:{},管道名称:{},管道情况:{},病区:{}",
-                TokenUtil.getTokenUserId(), pojo.getRecDate(), pojo.getRecTime(), pojo.getAdmissTimes(), pojo.getInpatientNo(),
-                pojo.getTemperature1(), pojo.getPulse1(), pojo.getBreathe1(), pojo.getPressure1Am(),
-                pojo.getPressure1Pm(), pojo.getSpo2(), pojo.getMind(), pojo.getSkin(), pojo.getTubesName(), pojo.getTubesStatus(),
-                pojo.getWard());
-
-        log.info("修改护理记录单后 --> 操作人:{},修改的记录单日期:{},时间:{},住院次数:{},住院号:{},体温:{}," +
-                        "心率/脉搏:{},呼吸:{},血压am:{},血压pm:{}," +
-                        "spo2:{},意识:{},皮肤:{},管道名称:{},管道情况:{},病区:{}",
-                TokenUtil.getTokenUserId(), param.getToStringRecDate(), param.getToStringRecTime(), param.getAdmissTimes(),
-                param.getInpatientNo(), param.getTemperature1(), param.getPulse1(), param.getBreathe1(), param.getPressure1Am(),
-                param.getPressure1Pm(), param.getSpo2(), param.getMind(), param.getSkin(), param.getTubesName(), param.getTubesStatus(),
-                param.getWard());
-
-        return ResultVoUtil.success();
+        //这个是修改护理记录单我已知的部分,因为护理记录单很坑爹所以,这个是头部是护理记录单的主要信息,下面是用来更新科室和病情观察护理措施及效果
+        // dao.teperatureHead(param); 现在还不让更改别的地方 所以只能更新科室
+        dao.teperatureBody(param, detailNoList);
+
+        log.info("护理记录单修改前 --> 操作人:{},病区:{}",
+                TokenUtil.getTokenUserId(), pojo.getWard());
+        log.info("修改护理记录单后 --> 操作人:{},病区:{}",
+                TokenUtil.getTokenUserId(), param.getWard());
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "修改成功,L('ω')┘三└('ω')」");
     }
 
     /**