浏览代码

护理单优化

lihong 2 年之前
父节点
当前提交
32d29e38e1

+ 6 - 2
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/nursing/YzTemperatureMapper.java

@@ -2,7 +2,9 @@ package thyyxxk.webserver.dao.his.medicaladvice.nursing;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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.YzTemperature;
 import thyyxxk.webserver.entity.medicaladvice.medicamanage.YzTemperatureVO;
 
@@ -17,7 +19,7 @@ import java.util.Map;
 @Mapper
 public interface YzTemperatureMapper extends BaseMapper<YzTemperature> {
     @Select("select  *, "+
-            " GLU glu," +
+            " GLU glu,CONVERT(char(8), rec_time, 108) toStringRecTime," +
             " MAP map," +
             " CVP cvp," +
             " ETCHO2 etcho2," +
@@ -29,7 +31,7 @@ public interface YzTemperatureMapper extends BaseMapper<YzTemperature> {
             "    ( admiss_times = #{admissTimes} ) and (${dateTimeCondition})" +
             "      and  isnull(scd_flag,'0')<>'1' order by rec_date ,rec_time ")
    List<YzTemperature> listYzTemperature(YzTemperatureVO yzTemperature);
-    @Select(" select   detail_no from yz_temperature where isnull(scd_flag,'0')<>'1' and inpatient_no =#{inpatientNo} and admiss_times =#{admissTimes} and convert(char(11),rec_date,121) = #{toStringRecDate} and  CONVERT(char(5), rec_time, 8)=#{recTimeStr}  ")
+    @Select(" select   detail_no from yz_temperature where isnull(scd_flag,'0')<>'1' and inpatient_no =#{inpatientNo} and admiss_times =#{admissTimes} and convert(char(11),rec_date,121) = #{toStringRecDate} and  CONVERT(char(8), rec_time, 108)=#{toStringRecTime}  ")
     List<Integer> exists(YzTemperatureVO query);
     @Select( " select sum ( col_1_am ) col_1_am from yz_temperature  where inpatient_no=#{inpatientNo} and  admiss_times =#{admissTimes}    and isnull(scd_flag, '') = '0' and isnull ( intake_flag , '' ) <> '1'  and (${dateTimeCondition})" )
     YzTemperature queryInputSum(YzTemperatureVO query);
@@ -43,4 +45,6 @@ public interface YzTemperatureMapper extends BaseMapper<YzTemperature> {
     YzTemperature queryOutSum(YzTemperatureVO query);
     @Select(" select min(rec_date) rec_start_date,max(rec_date) rec_end_date from  yz_temperature where scd_flag =1 and inpatient_no=#{inpatientNo} and admiss_times =#{admissTimes} ")
     Map<String,Object> getStartAndEndTime(YzTemperatureVO query);
+    @Update(" update yz_temperature  set rec_time = #{newRecTime} where isnull(scd_flag,'0')<>'1' and inpatient_no =#{query.inpatientNo} and admiss_times =#{query.admissTimes} and convert(char(11),rec_date,121) = #{query.toStringRecDate} and  CONVERT(char(8), rec_time, 108)=#{query.toStringRecTime}")
+    void updateRecTime(@Param("query") YzTemperatureVO query, @Param("newRecTime") String newRecTime);
 }

+ 68 - 25
src/main/java/thyyxxk/webserver/service/medicaladvice/nursing/NursingManagementService.java

@@ -25,6 +25,7 @@ import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.medicaladvice.nursing.NursingManagementDao;
 import thyyxxk.webserver.dao.his.medicaladvice.nursing.YzHlMbDao;
 import thyyxxk.webserver.dao.his.medicaladvice.nursing.YzTemperatureMapper;
+import thyyxxk.webserver.dao.his.medicalinsurance.UpIdCollectionDao;
 import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuPublicDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.datamodify.YzTemperature;
@@ -77,9 +78,16 @@ public class NursingManagementService {
     private YzHlMbDao yzHlMbDao;
     @Autowired
     private YiZhuPublicDao yiZhuPublicDao;
+    @Autowired
+    private  UpIdCollectionDao upIdCollectionDao;
+
+
 
     private static  final String separator = "_";
     private static  final Map<String,String> recTimeMap = new HashMap<>();
+    //替代 1901-01-01  这里 1901-01-01 08:00:00 转date 有5分钟误差 用以下先代替(兼容老系统)
+    private static final String XIU_ZHEN_DATE = "1991-01-01";
+
 
     static {
         recTimeMap.put("3", "03:00");
@@ -460,14 +468,11 @@ public class NursingManagementService {
        StringBuilder condition = new StringBuilder();
        condition.append("1=1");
        if("1".equals(yzTemperature.getTypeFlag())){
-           if(StrUtil.isNotBlank(yzTemperature.getRecDateStr())){
-               condition.append(" and rec_date='"+yzTemperature.getRecDateStr()+"'");
-           }
            if(yzTemperature.getStartRecTime() != null){
-               condition.append(" and rec_time >= '1900-01-01 "+DateUtil.format(yzTemperature.getStartRecTime(),"HH:mm")+":00'");
+               condition.append(StrUtil.format(" and convert(char(11),rec_date,121)+CONVERT(char(8), rec_time, 108) >='{}' ", DateUtil.formatDateTime(yzTemperature.getStartRecTime())));
            }
            if(yzTemperature.getEndRecTime() != null){
-               condition.append(" and rec_time <= '1900-01-01 "+DateUtil.format(yzTemperature.getEndRecTime(),"HH:mm")+":00'");
+               condition.append(StrUtil.format(" and convert(char(11),rec_date,121)+CONVERT(char(8), rec_time, 108) <='{}' ", DateUtil.formatDateTime(yzTemperature.getEndRecTime())));
            }
        }
        if(StrUtil.isNotBlank(yzTemperature.getWard())){
@@ -478,7 +483,7 @@ public class NursingManagementService {
        CommonUtil.BeanTrim(yzTemperatures);
        if(CollUtil.isNotEmpty(yzTemperatures)){
            Map<String, List<YzTemperature>> groupMap = yzTemperatures.stream().collect(Collectors.groupingBy(item -> {
-               return item.getInpatientNo() + item.getAdmissTimes() + DateUtil.format(item.getRecDate(), "yyyy-MM-dd") + DateUtil.format(item.getRecTime(), "HH:mm");
+               return item.getInpatientNo() + item.getAdmissTimes() + DateUtil.format(item.getRecDate(), "yyyy-MM-dd") + item.getToStringRecTime();
            }));
            List<YzTemperature> temp = new ArrayList<>();
            for (String key : groupMap.keySet()) {
@@ -486,29 +491,29 @@ public class NursingManagementService {
                List<String> otherInfos = groupMap.get(key).stream().map(item -> item.getOtherInfo()).collect(Collectors.toList());
                String join = CollUtil.join(otherInfos, "");
                yzTemperature1.setOtherInfo(join);
+               yzTemperature1.setRecTime(DateUtil.parseDateTime(XIU_ZHEN_DATE+" "+yzTemperature1.getToStringRecTime()));
                yzTemperature1.setToStringRecDate(DateUtil.format(yzTemperature1.getRecDate(),"yyyy-MM-dd"));
-               yzTemperature1.setToStringRecTime(DateUtil.format(yzTemperature1.getRecTime(),"HH:mm:ss"));
                yzTemperature1.setRecDateStr(DateUtil.format(yzTemperature1.getRecDate(),"MM-dd"));
-               yzTemperature1.setRecTimeStr(DateUtil.format(yzTemperature1.getRecTime(),"HH:mm"));
+               yzTemperature1.setRecTimeStr(yzTemperature1.getToStringRecTime().substring(0,5));
                yzTemperature1.setPressureAmPm(yzTemperature1.getPressure1AmAndPm());
                yzTemperature1.setUseridName(redisLikeService.getEmployeeName(yzTemperature1.getUserid()));
                temp.add(yzTemperature1);
            }
-           List<YzTemperature> collect = temp.stream().sorted(Comparator.comparing(item ->DateUtil.parseDateTime(DateUtil.formatDate(item.getRecDate()) + " "+ DateUtil.format(item.getRecTime(),"HH:mm")+":00"))).collect(Collectors.toList());
+           List<YzTemperature> collect = temp.stream().sorted(Comparator.comparing(item ->DateUtil.parseDateTime(DateUtil.formatDate(item.getRecDate()) + " "+ item.getToStringRecTime()))).collect(Collectors.toList());
            if(yzTemperature.getPrintFlag() !=null && yzTemperature.getPrintFlag()){
                List<YzTemperature> result = new ArrayList<>();
+               int subLength= getSubLength(yzTemperature.getHldType());
                for (YzTemperature item : collect) {
-                  int subLength= getSubLength(yzTemperature.getHldType());
-                   if(item.getOtherInfo() !=null && item.getOtherInfo().length()>subLength){
-                       List<String> infos = usingSubstringMethod(item.getOtherInfo(), subLength);
+                   if (item.getOtherInfo() != null && item.getOtherInfo().getBytes().length > subLength) {
+                       List<String> infos = subStringBytes(item.getOtherInfo(), subLength);
                        item.setOtherInfo(infos.get(0));
                        result.add(item);
-                       for (int i = 1; i <infos.size() ; i++) {
+                       for (int i = 1; i < infos.size(); i++) {
                            YzTemperature tempTemperature = new YzTemperature();
                            tempTemperature.setOtherInfo(infos.get(i));
                            result.add(tempTemperature);
                        }
-                   }else{
+                   } else {
                        result.add(item);
                    }
                }
@@ -531,13 +536,24 @@ public class NursingManagementService {
      * @return: int
      **/
     private int getSubLength(String hldType) {
-        int result = 18;
-        if ("2".equals(hldType)) {
-            result = 16;
-        } else if ("6".equals(hldType)) {
-            result = 14;
+        String hldTypeLen = upIdCollectionDao.getDictValueByDictName("1.7", "hld_type_len");
+        String[] resultArr;
+        try {
+            if(StrUtil.isNotBlank(hldTypeLen)){
+                resultArr = hldTypeLen.split(",");
+            }else {
+                resultArr = new String[]{"36","32","36","36","36","30"};
+            }
+            for (int i = 0; i <resultArr.length ; i++) {
+                if (Convert.toInt(hldType) == (i + 1)) {
+                    return Convert.toInt(resultArr[i]);
+                }
+            }
+        }catch (Exception e){
+            log.error("[getSubLength]报错:",e);
+            return 36;
         }
-        return result;
+        return 36;
     }
 
     /**
@@ -554,8 +570,9 @@ public class NursingManagementService {
     public ResultVo<String> saveYzTemperature(YzTemperatureVO query) {
         AssertUtil.isnotBlank(query.getRecTime(),"时间不能为空!");
         //先查询是否存在
-        query.setRecTimeStr(DateUtil.format(query.getRecTime(),"HH:mm"));
-        query.setRecTime(DateUtil.parseDateTime("1900-01-01 "+query.getRecTimeStr()+":00"));
+        query.setRecTimeStr(DateUtil.format(query.getRecTime(),"HH:mm:ss"));
+        query.setToStringRecTime(query.getRecTimeStr());
+        //query.setRecTime(DateUtil.parseDateTime(XIU_ZHEN_DATE +" "+query.getRecTimeStr()));
         query.setRecDate(DateUtil.parseDate(query.getToStringRecDate()));
         query.setScdFlag(0);
         String code = redisLikeService.getUserInfoByToken().getCode();
@@ -571,9 +588,9 @@ public class NursingManagementService {
         query.setModifyTime(now);
         YzTemperature yzTemperature = new YzTemperature();
         BeanUtil.copyProperties(query,yzTemperature);
-        //兼容老系统 将措施 字符大于18个分成几条
-        if(StrUtil.isNotBlank(yzTemperature.getOtherInfo()) && yzTemperature.getOtherInfo().length() > 18){
-            List<String> strList = usingSubstringMethod(yzTemperature.getOtherInfo(), 18);
+        //兼容老系统 将措施 字符大于36个分成几条
+        if(StrUtil.isNotBlank(yzTemperature.getOtherInfo()) && yzTemperature.getOtherInfo().getBytes().length >36){
+            List<String> strList = subStringBytes(yzTemperature.getOtherInfo(),36);
             for (int i = 0; i < strList.size(); i++) {
                 YzTemperature temp = new YzTemperature();
                 if(i == 0){
@@ -594,6 +611,8 @@ public class NursingManagementService {
         }else {
             yzTemperatureMapper.insert(yzTemperature);
         }
+        //修正时间 1900-01-01 08:00:00 转date 有五分钟误差 修改下
+        yzTemperatureMapper.updateRecTime(query,StrUtil.format("1900-01-01 {}",query.getToStringRecTime()));
         //保存过敏信息
         saveGm(query);
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION,"保存成功");
@@ -617,6 +636,30 @@ public class NursingManagementService {
         return results;
     }
 
+    private List<String> subStringBytes(String text,int bytesLen){
+        List<String> results = new ArrayList<>();
+        int length = text.length();
+        int len = 0;
+        String str = "" ;
+        for (int i = 0; i < length; i++) {
+            int tempLen = String.valueOf(text.charAt(i)).getBytes().length;
+            int temp = tempLen == 3 ? 2 : tempLen;
+            String tempStr = text.charAt(i) + "";
+            if(len >= bytesLen){
+                results.add(str);
+                len = temp;
+                str = tempStr;
+            }else {
+                len += temp;
+                str += tempStr;
+            }
+            if(i == length-1){
+                results.add(str);
+            }
+        }
+        return results;
+    }
+