kongwz пре 5 година
родитељ
комит
1befd1a68a

+ 7 - 14
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0305.java

@@ -4,6 +4,7 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.DateUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
@@ -26,34 +27,26 @@ import java.util.regex.Pattern;
 public class CLI0305 extends QCCatalogue {
     public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm"; //输注时间
     public static String FORMAT_LONG_CN_MI = "yyyy年MM月dd日HH时mm分"; //记录时间
+    DateUtil dateUtil = new DateUtil();
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
         if(clinicalBloodDocs != null && clinicalBloodDocs.size()>0){
             for (ClinicalBloodDoc cliB:clinicalBloodDocs) {
                 Map<String, String> cliBStructureMap = cliB.getStructureMap();
-                String infusionDtae = cliBStructureMap.get("输注时间");
                 String infusion_begin= cliBStructureMap.get("输注开始");
                 String infusion_end = cliBStructureMap.get("输注结束");
-                String record_date= cliBStructureMap.get("记录时间");
-                if(StringUtils.isNotEmpty(infusionDtae) && StringUtils.isNotEmpty(record_date)){
+               if(StringUtils.isNotEmpty(infusion_begin) && StringUtils.isNotEmpty(infusion_end)){
                     try {
-                        Date date_in = new SimpleDateFormat(DATE_TIME_FORMAT).parse(infusionDtae);
-                        Date date_out = new SimpleDateFormat(FORMAT_LONG_CN_MI).parse(record_date);
-                        Calendar from  =  Calendar.getInstance();
-                        from.setTime(date_in);
-                        Calendar  to  =  Calendar.getInstance();
-                        to.setTime(date_out);
-                        int fromYear = from.get(Calendar.DAY_OF_MONTH);
-                        int toYear = to.get(Calendar.DAY_OF_MONTH);
-                        int year = toYear  -  fromYear;
-                        if(year >= 1){
+                        Date date_in = new SimpleDateFormat(DATE_TIME_FORMAT).parse(infusion_begin);
+                        Date date_out = new SimpleDateFormat(DATE_TIME_FORMAT).parse(infusion_end);
+                        double distanceHour = dateUtil.getDistanceTime2(date_in, date_out);
+                        if(distanceHour > 24.0){
                             status.set("-1");
                         }
                     } catch (ParseException e) {
                         e.printStackTrace();
                     }
-                }else if(StringUtils.isNotEmpty(infusion_begin) && StringUtils.isNotEmpty(infusion_end)){
 
                 }
             }

+ 23 - 17
kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java

@@ -5,6 +5,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
@@ -22,32 +23,37 @@ import java.util.Map;
  */
 @Component
 public class DUT0296 extends QCCatalogue {
-    public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
-
+    public static final String DATE_TIME_FORMAT_chanx = "yyyy-MM-dd HH:mm";
+    public static final String DATE_TIME_FORMAT_tz = "yyyy/MM/dd HH:mm:ss";
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
+
         LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
         if (leaveHospitalDoc != null) {
             Map<String, String> structureMap_leave = leaveHospitalDoc.getStructureMap();
             String be_date = structureMap_leave.get("入院时间"); //2019-12-07 08:48
             String leave_date = structureMap_leave.get("出院时间");//2019-12-10 10:49
-            try {
-                Date date_in = new SimpleDateFormat(DATE_TIME_FORMAT).parse(be_date);
-                Date date_out = new SimpleDateFormat(DATE_TIME_FORMAT).parse(leave_date);
-                Calendar from = Calendar.getInstance();
-                from.setTime(date_in);
-                Calendar to = Calendar.getInstance();
-                to.setTime(date_out);
-                int fromMonth = from.get(Calendar.DAY_OF_YEAR);
-                int toMonth = to.get(Calendar.DAY_OF_YEAR);
-                int day = toMonth - fromMonth;
-                if (day > 30) {
-                    status.set("-1");
-                }
+            ffr(be_date, leave_date);
+        }
+    }
 
-            } catch (Exception e) {
-                e.printStackTrace();
+    private void ffr(String be_date, String leave_date) {
+        try {
+            Date date_in = StringUtil.parseDateTime(StringUtil.removeBlank(be_date));
+            Date date_out = StringUtil.parseDateTime(StringUtil.removeBlank(leave_date));
+            Calendar from = Calendar.getInstance();
+            from.setTime(date_in);
+            Calendar to = Calendar.getInstance();
+            to.setTime(date_out);
+            int fromMonth = from.get(Calendar.DAY_OF_YEAR);
+            int toMonth = to.get(Calendar.DAY_OF_YEAR);
+            int day = toMonth - fromMonth;
+            if (day > 30) {
+                status.set("-1");
             }
+
+        } catch (Exception e) {
+            e.printStackTrace();
         }
     }
 }

+ 48 - 0
public/src/main/java/com/lantone/qc/pub/util/DateUtil.java

@@ -752,6 +752,54 @@ public class DateUtil {
     }
 
 
+    //计算时间差,以天数为单位。如:2018-08-08 和 2018-08-05 相差3天
+    public static int getDistanceTime(Date startTime, Date endTime) {
+        int days = 0;
+        long time1 = startTime.getTime();
+        long time2 = endTime.getTime();
+
+        long diff;
+        if (time1 < time2) {
+            diff = time2 - time1;
+        } else {
+            diff = time1 - time2;
+        }
+        days = (int) (diff / (24 * 60 * 60 * 1000));
+        return days;
+    }
+    //计算时间差,以小时为单位。如:2018-08-08 和 2018-08-07 相差24h
+    public double getDistanceTime2(Date startTime, Date endTime) {
+        double hour = 0;
+        long time1 = startTime.getTime();
+        long time2 = endTime.getTime();
+
+        long diff;
+        if (time1 < time2) {
+            diff = time2 - time1;
+        } else {
+            diff = time1 - time2;
+        }
+        hour = (diff / (60 * 60 * 1000));
+        return hour;
+    }
+
+    //计算时间差,以小时为单位。如:2018-08-08 和 2018-08-07 相差24h
+    public double getDistanceTime3(Date startTime, Date endTime) {
+        double min = 0;
+        long time1 = startTime.getTime();
+        long time2 = endTime.getTime();
+
+        long diff;
+        if (time1 < time2) {
+            diff = time2 - time1;
+        } else {
+            diff = time1 - time2;
+        }
+        min = (diff / (60 * 1000));
+        return min;
+    }
+
+
     public static void main(String[] args) {
         try {
             int age = getAge("2019-04-05");           //由出生日期获得年龄***