Pārlūkot izejas kodu

优化病案日志;首页签收显示第一次签收时间

lighter 5 mēneši atpakaļ
vecāks
revīzija
5efd5d1244

+ 3 - 2
src/main/java/thyyxxk/webserver/dao/his/inpatient/casefrontsheet/CaseFrontSheetDao.java

@@ -516,8 +516,9 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
     @Select("select file_status from t_case_frontsheet_main with(nolock) where bah=#{bah} and admiss_times=#{times}")
     Integer selectFileStatus(String bah, int times);
 
-    @Select("select late_flag from t_case_frontsheet_main with(nolock) where bah=#{bah} and admiss_times=#{times}")
-    Integer selectLateFlag(String bah, int times);
+    @Select("select min(op_time) from ba_op_log with(nolock) where " +
+            "inpatient_no=#{bah} and admiss_times=#{times} and op_type=2")
+    Date selectFirstSignDate(String bah, int times);
 
     @Select("select sign_staff from t_case_frontsheet_main with(nolock) where bah=#{bah} and admiss_times=#{times}")
     String selectSignStaff(String bah, int times);

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

@@ -704,7 +704,7 @@ public class CaseFrontSheetMainService {
         }
     }
 
-    private ResultVo<List<CodeName>> saveSheet(CaseFrontsheetMain sheet) {
+    private ResultVo<List<CodeName>> saveSheet(CaseFrontsheetMain sheet, String staffId) {
         String bah = sheet.getBah();
         int times = sheet.getAdmissTimes();
         if (StringUtil.notBlank(sheet.getSocialNo())) {
@@ -764,10 +764,13 @@ public class CaseFrontSheetMainService {
                 dao.writeNewZySurgeryRecord(item);
             }
         }
+        if (null != staffId) {
+            dao.writeBaOpLog(1, staffId, bah, times);
+        }
         return ResultVoUtil.success();
     }
 
-    private ResultVo<List<CodeName>> archiveSheet(CaseFrontsheetMain sheet) {
+    private ResultVo<List<CodeName>> archiveSheet(CaseFrontsheetMain sheet, String staffId) {
         String staff = TokenUtil.getInstance().getTokenUserId();
         List<Integer> roles = userDao.getUserRoles(staff);
         if (!roles.contains(7) && !roles.contains(1)) {
@@ -775,7 +778,9 @@ public class CaseFrontSheetMainService {
         }
         String bah = sheet.getBah();
         int times = sheet.getAdmissTimes();
-        sheet.setSignDate(new Date());
+
+        Date firstSignDate = dao.selectFirstSignDate(bah, times);
+        sheet.setSignDate(null == firstSignDate ? new Date() : firstSignDate);
         sheet.setUnsignDate(null);
         sheet.setSignStaff(staff);
         sheet.setFileStatus(State.FileStatus.SIGNED);
@@ -787,6 +792,7 @@ public class CaseFrontSheetMainService {
             }
             insertSheetData(sheet);
             basDao.updateActFileStatus(bah, times, State.FileStatus.SIGNED);
+            dao.writeBaOpLog(2, staffId, bah, times);
             return ResultVoUtil.success();
         }
         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复签收。");
@@ -904,7 +910,7 @@ public class CaseFrontSheetMainService {
         }
         sheet.setIsDoctorPrint(true);
         sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
-        ResultVo<List<CodeName>> save = saveSheet(sheet);
+        ResultVo<List<CodeName>> save = saveSheet(sheet, TokenUtil.getInstance().getTokenUserId());
         if (save.getCode() != ExceptionEnum.SUCCESS.getCode()) {
             Map<String, List<CodeName>> map = new HashMap<>();
             map.put("force", save.getData());
@@ -942,20 +948,15 @@ public class CaseFrontSheetMainService {
                 item.setType(dao.selectOperationType(item.getCode()));
             }
         });
-        final String bah = sheet.getBah();
-        final int times = sheet.getAdmissTimes();
-        int optype = info.getOpType();
-        if (optype == 2) {
-            dao.writeBaOpLog(optype, info.getStaffId(), bah, times);
-            return archiveSheet(sheet);
+        if (info.getOpType() == 2) {
+            return archiveSheet(sheet, info.getStaffId());
         }
         List<CodeName> message = VerifyCaseFrontSheet.getInstance().saveVerify(sheet);
         if (message.isEmpty()) {
-            dao.writeBaOpLog(optype, info.getStaffId(), bah, times);
             if (!sheet.getDisdiagList().isEmpty()) {
                 sheet.setMainDisdiagStatus(sheet.getDisdiagList().get(0).getDismissStatus());
             }
-            return optype == 1 ? saveSheet(sheet) : archiveSheet(sheet);
+            return saveSheet(sheet, info.getStaffId());
         }
         return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "校验未通过。", message);
     }
@@ -1240,7 +1241,7 @@ public class CaseFrontSheetMainService {
             return "OK";
         }
         sheet.setAddressMember(getStandardAddress(sheet.getStandardAddress()));
-        ResultVo<List<CodeName>> save = saveSheet(sheet);
+        ResultVo<List<CodeName>> save = saveSheet(sheet, null);
         if (save.getCode() != ExceptionEnum.SUCCESS.getCode()) {
             return "校验未通过。";
         }