Kaynağa Gözat

解除签收后自动签收

lighter 1 yıl önce
ebeveyn
işleme
dcfac8d832

+ 17 - 10
src/main/java/thyyxxk/webserver/controller/inpatient/casefrontsheet/CaseFrontSheetController.java

@@ -176,16 +176,23 @@ public class CaseFrontSheetController {
         return ResultVoUtil.success(service.signedByDateCount(signDate));
     }
 
-    @PostMapping("/autoSign")
-    public String autoSign(@RequestBody SheetOverview overview) {
-        CaseFrontsheetMain mainSheet = service.getPatientInfo(overview);
-        if (null == mainSheet) {
-            return "未找到病案数据。";
+    @GetMapping("/autoSign")
+    public void autoSign() {
+        List<SheetOverview> list = service.getSheetsForAutoSign();
+        for (SheetOverview o : list) {
+            CaseFrontsheetMain mainSheet = service.getPatientInfo(o);
+            if (null == mainSheet) {
+                continue;
+            }
+            String prtres = service.printVerifyForAutoSign(mainSheet);
+            if (!prtres.equals("OK")) {
+                continue;
+            }
+            mainSheet.setSignDate(o.getSignDateOrigin());
+            mainSheet.setLateFlag(o.getLateFlag());
+            mainSheet.setSignStaff(o.getSignStaff());
+            service.autoSign(mainSheet);
         }
-        String prtres = service.printVerifyForAutoSign(mainSheet);
-        if (!prtres.equals("OK")) {
-            return prtres;
-        }
-        return service.autoSign(mainSheet);
+
     }
 }

+ 5 - 0
src/main/java/thyyxxk/webserver/dao/his/inpatient/casefrontsheet/CaseFrontSheetDao.java

@@ -691,4 +691,9 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
             "from t_case_frontsheet_main where file_status=1 and sign_date>=#{start} " +
             "and sign_date<=#{end} order by sign_date")
     List<SheetOverview> signedListByDate(String start, String end);
+
+    @Select("select bah,admiss_times as times,sign_date as signDateOrigin,sign_staff,late_flag " +
+            "from t_case_frontsheet_main where file_status=0 and sign_staff is not null " +
+            "and sign_date is not null and datediff(day,sign_date,getdate())>=3 ")
+    List<SheetOverview> selectSheetsForAutoSign();
 }

+ 1 - 0
src/main/java/thyyxxk/webserver/entity/casefrontsheet/request/SheetOverview.java

@@ -26,6 +26,7 @@ public class SheetOverview {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date signDate;
+    private Date signDateOrigin;
     private String signStaff;
     private String signStaffName;
     private String signTime;

+ 13 - 7
src/main/java/thyyxxk/webserver/service/inpatient/casefrontsheet/CaseFrontSheetMainService.java

@@ -602,12 +602,17 @@ public class CaseFrontSheetMainService {
     }
 
     private void insertSheetData(CaseFrontsheetMain sheet) {
-        Integer lateFlag = dao.selectLateFlag(sheet.getBah(), sheet.getAdmissTimes());
+        Integer lateFlag = sheet.getLateFlag();
         if (null == lateFlag) {
-            lateFlag = calculateLateState(sheet.getDismissDate());
+            lateFlag = dao.selectLateFlag(sheet.getBah(), sheet.getAdmissTimes());
+            if (null == lateFlag) {
+                lateFlag = calculateLateState(sheet.getDismissDate());
+            }
         }
         sheet.setLateFlag(lateFlag);
-        sheet.setSignStaff(dao.selectSignStaff(sheet.getBah(), sheet.getAdmissTimes()));
+        if (null == sheet.getSignStaff()) {
+            sheet.setSignStaff(dao.selectSignStaff(sheet.getBah(), sheet.getAdmissTimes()));
+        }
         dao.deleteOldSheet(sheet.getBah(), sheet.getAdmissTimes());
         //在t_case_frontsheet_main表中插入 主体的内容
         dao.insert(sheet);
@@ -1040,6 +1045,10 @@ public class CaseFrontSheetMainService {
         return map;
     }
 
+    public List<SheetOverview> getSheetsForAutoSign() {
+        return dao.selectSheetsForAutoSign();
+    }
+
     public String printVerifyForAutoSign(CaseFrontsheetMain sheet) {
         Integer status = dao.selectFileStatus(sheet.getBah(), sheet.getAdmissTimes());
         if (null != status && status == State.FileStatus.SIGNED) {
@@ -1057,14 +1066,11 @@ public class CaseFrontSheetMainService {
         return "校验未通过。";
     }
 
-    public String autoSign(CaseFrontsheetMain sheet) {
+    public void autoSign(CaseFrontsheetMain sheet) {
         String bah = sheet.getBah();
         int times = sheet.getAdmissTimes();
-        sheet.setSignDate(new Date());
         sheet.setFileStatus(State.FileStatus.SIGNED);
-        sheet.setSignStaff(dao.selectSignStaff(bah, times));
         insertSheetData(sheet);
         basDao.updateActFileStatus(bah, times, State.FileStatus.SIGNED);
-        return "OK";
     }
 }