소스 검색

新增
1、轮候模块增加抄送人
2、轮候模块医护审核时增加第一第二审核人
3、增加抄送映射表
修改
1、点餐统计导出末尾增加合计

liangwenxuan 1 개월 전
부모
커밋
ee6f99fa19
13개의 변경된 파일122개의 추가작업 그리고 67개의 파일을 삭제
  1. 0 21
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/business/BpmCheckInWaitController.java
  2. 21 0
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmTaskCopyRelationDO.java
  3. 9 0
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmTaskCopyRelationMapper.java
  4. 0 6
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/business/BpmElderlApplyService.java
  5. 0 33
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/business/BpmElderlApplyServiceImpl.java
  6. 41 4
      yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
  7. 2 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/bpm/BpmCheckInWaitApi.java
  8. 2 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/bpm/vo/CheckInWaitRecordRespVO.java
  9. 3 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/bpm/vo/CheckInWaitSupplementReqVO.java
  10. 16 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/bpm/BpmCheckInWaitApiImpl.java
  11. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyCheckInWaitDO.java
  12. 21 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyOrderFoodServiceImpl.java
  13. 5 2
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ElderlyOrderFoodMapper.xml

+ 0 - 21
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/business/BpmCheckInWaitController.java

@@ -40,26 +40,5 @@ public class BpmCheckInWaitController {
         return success(elderlApplyService.checkInWaitCreate(getLoginUserId(),
                 SecurityFrameworkUtils.getLoginUserNickname(), createReqVO));
     }
-
-    @PostMapping("/third-review/supplement")
-    @Operation(summary = "第三审批补充护理等级与备注")
-    public CommonResult<Boolean> supplementByThirdReview(@Valid @RequestBody BpmCheckInWaitSupplementReqVO reqVO) {
-        elderlApplyService.supplementCheckInWaitByThirdReview(getLoginUserId(), reqVO);
-        return success(Boolean.TRUE);
-    }
-
-    @PostMapping("/fourth-review/supplement")
-    @Operation(summary = "第四审批补充体检报告")
-    public CommonResult<Boolean> supplementByFourthReview(@Valid @RequestBody BpmCheckInWaitSupplementReqVO reqVO) {
-        elderlApplyService.supplementCheckInWaitByFourthReview(getLoginUserId(), reqVO);
-        return success(Boolean.TRUE);
-    }
-
-    @PostMapping("/sixth-review/supplement")
-    @Operation(summary = "第六审批补充床位")
-    public CommonResult<Boolean> supplementBySixthReview(@Valid @RequestBody BpmCheckInWaitSupplementReqVO reqVO) {
-        elderlApplyService.supplementCheckInWaitBySixthReview(getLoginUserId(), reqVO);
-        return success(Boolean.TRUE);
-    }
 }
 

+ 21 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmTaskCopyRelationDO.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.bpm.dal.dataobject.definition;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@TableName(value = "bpm_task_copy_relation")
+@KeySequence("bpm_task_copy_relation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class BpmTaskCopyRelationDO {
+    private Long id;
+    private String taskDefinitionKey;
+    private String userIdList;
+    private Long tenantId;
+}

+ 9 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/definition/BpmTaskCopyRelationMapper.java

@@ -0,0 +1,9 @@
+package cn.iocoder.yudao.module.bpm.dal.mysql.definition;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmTaskCopyRelationDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BpmTaskCopyRelationMapper extends BaseMapperX<BpmTaskCopyRelationDO> {
+}

+ 0 - 6
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/business/BpmElderlApplyService.java

@@ -37,10 +37,4 @@ public interface BpmElderlApplyService {
 
     Long checkInWaitCreate(Long loginUserId, String nickname, BpmCheckInWaitCreateReqVO createReqVO);
 
-    void supplementCheckInWaitByThirdReview(Long loginUserId, BpmCheckInWaitSupplementReqVO reqVO);
-
-    void supplementCheckInWaitByFourthReview(Long loginUserId, BpmCheckInWaitSupplementReqVO reqVO);
-
-    void supplementCheckInWaitBySixthReview(Long loginUserId, BpmCheckInWaitSupplementReqVO reqVO);
-
 }

+ 0 - 33
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/business/BpmElderlApplyServiceImpl.java

@@ -374,37 +374,4 @@ public class BpmElderlApplyServiceImpl implements BpmElderlApplyService {
         BpmBusinessFormCreateReqVO businessFormCreateReqVO = BeanUtils.toBean(createReqVO, BpmBusinessFormCreateReqVO.class);
         return bpmBusinessFormService.create(businessFormCreateReqVO);
     }
-
-    @Override
-    public void supplementCheckInWaitByThirdReview(Long loginUserId, BpmCheckInWaitSupplementReqVO reqVO) {
-        if (reqVO.getNurseLevelId() == null) {
-            throw new IllegalArgumentException("护理等级不能为空");
-        }
-        if (reqVO.getRemark() == null || reqVO.getRemark().trim().isEmpty()) {
-            throw new IllegalArgumentException("备注不能为空");
-        }
-        CheckInWaitSupplementReqVO updateReqVO = BeanUtils.toBean(reqVO, CheckInWaitSupplementReqVO.class);
-        checkInWaitApi.updateThirdReviewInfo(updateReqVO);
-        checkInWaitApi.updateCheckInWaitStatus(reqVO.getId(), 5);
-    }
-
-    @Override
-    public void supplementCheckInWaitByFourthReview(Long loginUserId, BpmCheckInWaitSupplementReqVO reqVO) {
-        if (reqVO.getPhysicalExaminationReport() == null || reqVO.getPhysicalExaminationReport().trim().isEmpty()) {
-            throw new IllegalArgumentException("体检报告不能为空");
-        }
-        CheckInWaitSupplementReqVO updateReqVO = BeanUtils.toBean(reqVO, CheckInWaitSupplementReqVO.class);
-        checkInWaitApi.updateFourthReviewInfo(updateReqVO);
-        checkInWaitApi.updateCheckInWaitStatus(reqVO.getId(), 7);
-    }
-
-    @Override
-    public void supplementCheckInWaitBySixthReview(Long loginUserId, BpmCheckInWaitSupplementReqVO reqVO) {
-        if (reqVO.getBedId() == null) {
-            throw new IllegalArgumentException("床位不能为空");
-        }
-        CheckInWaitSupplementReqVO updateReqVO = BeanUtils.toBean(reqVO, CheckInWaitSupplementReqVO.class);
-        checkInWaitApi.updateSixthReviewInfo(updateReqVO);
-        checkInWaitApi.updateCheckInWaitStatus(reqVO.getId(), 10);
-    }
 }

+ 41 - 4
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 import cn.iocoder.yudao.framework.common.util.object.PageUtils;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
@@ -19,6 +20,8 @@ import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.business.BpmBusinessFormDO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
+import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmTaskCopyRelationDO;
+import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmTaskCopyRelationMapper;
 import cn.iocoder.yudao.module.bpm.enums.BpmBusinessTypeEnum;
 import cn.iocoder.yudao.module.bpm.enums.BpmCheckInWaitStatusEnum;
 import cn.iocoder.yudao.module.bpm.enums.definition.*;
@@ -150,6 +153,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
     @Autowired
     private RequestScopedStorage requestScopedStorage;
 
+    @Autowired
+    private BpmTaskCopyRelationMapper bpmTaskCopyRelationMapper;
+
     // ========== Query 查询相关方法 ==========
 
     @Override
@@ -646,10 +652,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
         }
         LogRecordContext.putVariable("nickname", SecurityFrameworkUtils.getLoginUserNickname());
         LogRecordContext.putVariable("instanceName", instance.getName());
-
+        Set<Long> copyUserIdList = getCopyUserIdList(task.getTaskDefinitionKey());
+        copyUserIdList.addAll(reqVO.getCopyUserIds());
         if (CollUtil.isNotEmpty(reqVO.getCopyUserIds())) {
             //processInstanceCopyService.createProcessInstanceCopy(reqVO.getCopyUserIds(), reqVO.getId());
-            processInstanceCopyService.createProcessInstanceCopy(reqVO.getCopyUserIds(), task);
+            processInstanceCopyService.createProcessInstanceCopy(copyUserIdList, task);
         }
     }
 
@@ -674,9 +681,17 @@ public class BpmTaskServiceImpl implements BpmTaskService {
                     BpmCheckInWaitStatusEnum.FIRST_APPROVAL_PASSED_WAIT_SECOND_APPROVAL.getStatus());
             return;
         }
+        if ("second_approve".equals(key)) {
+            reqVO.setAuditName(parseString(variables, "firstAuditName"));
+            if (StrUtil.isNotBlank(reqVO.getAuditName())) {
+                checkInWaitApi.updateSecondReviewInfo(reqVO);
+            }
+            checkInWaitApi.updateCheckInWaitStatusByBusinessId(businessForm.getBusinessId(),
+                    BpmCheckInWaitStatusEnum.SECOND_APPROVAL_PASSED_WAIT_THIRD_APPROVAL.getStatus());
+            return;
+        }
         if ("third_approve".equals(key)) {
             reqVO.setNurseLevelId(parseLong(variables, "nurseLevelId"));
-            reqVO.setRemark(parseString(variables, "remark"));
             if (reqVO.getNurseLevelId() != null || StrUtil.isNotBlank(reqVO.getRemark())) {
                 checkInWaitApi.updateThirdReviewInfo(reqVO);
             }
@@ -686,6 +701,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
         }
         if ("fourth_approve".equals(key)) {
             reqVO.setPhysicalExaminationReport(parseString(variables, "physicalExaminationReport"));
+            reqVO.setRemark(parseString(variables, "remark"));
             if (StrUtil.isNotBlank(reqVO.getPhysicalExaminationReport())) {
                 checkInWaitApi.updateFourthReviewInfo(reqVO);
             }
@@ -693,6 +709,15 @@ public class BpmTaskServiceImpl implements BpmTaskService {
                     BpmCheckInWaitStatusEnum.FOURTH_APPROVAL_PASSED_WAIT_FIFTH_APPROVAL.getStatus());
             return;
         }
+        if ("fifth_approve".equals(key)) {
+            reqVO.setAuditName(parseString(variables, "auditName"));
+            if (StrUtil.isNotBlank(reqVO.getAuditName())) {
+                checkInWaitApi.updateFifthReviewInfo(reqVO);
+            }
+            checkInWaitApi.updateCheckInWaitStatusByBusinessId(businessForm.getBusinessId(),
+                    BpmCheckInWaitStatusEnum.FOURTH_APPROVAL_PASSED_WAIT_FIFTH_APPROVAL.getStatus());
+            return;
+        }
         if ("sixth_approve".equals(key)) {
             reqVO.setBedId(parseLong(variables, "bedId"));
             if (reqVO.getBedId() != null) {
@@ -1679,5 +1704,17 @@ public class BpmTaskServiceImpl implements BpmTaskService {
 
         return map;
     }
-
+    private Set<Long> getCopyUserIdList(String taskDefinitionKey){
+        Set<Long> result = new HashSet<>();
+        List<BpmTaskCopyRelationDO> bpmTaskCopyRelationList = bpmTaskCopyRelationMapper.selectList(new LambdaQueryWrapperX<BpmTaskCopyRelationDO>()
+                .eq(BpmTaskCopyRelationDO::getTaskDefinitionKey, taskDefinitionKey));
+        for (BpmTaskCopyRelationDO bpmTaskCopyRelationDO : bpmTaskCopyRelationList) {
+            result.addAll(Arrays.stream(bpmTaskCopyRelationDO.getUserIdList().split(","))
+                    .map(String::trim)
+                    .filter(s -> !s.isEmpty())
+                    .map(Long::parseLong)
+                    .collect(Collectors.toSet()));
+        }
+        return result;
+    }
 }

+ 2 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/bpm/BpmCheckInWaitApi.java

@@ -16,6 +16,7 @@ public interface BpmCheckInWaitApi {
     Integer updateInfo(CheckInWaitSupplementReqVO reqVO);
 
     Integer updateFirstReviewInfo(CheckInWaitSupplementReqVO reqVO);
+    Integer updateSecondReviewInfo(CheckInWaitSupplementReqVO reqVO);
 
     Integer updateCheckInWaitStatus(Long id, Integer status);
 
@@ -24,6 +25,7 @@ public interface BpmCheckInWaitApi {
     Integer updateThirdReviewInfo(CheckInWaitSupplementReqVO reqVO);
 
     Integer updateFourthReviewInfo(CheckInWaitSupplementReqVO reqVO);
+    Integer updateFifthReviewInfo(CheckInWaitSupplementReqVO reqVO);
 
     Integer updateSixthReviewInfo(CheckInWaitSupplementReqVO reqVO);
 

+ 2 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/bpm/vo/CheckInWaitRecordRespVO.java

@@ -20,6 +20,8 @@ public class CheckInWaitRecordRespVO {
     private Long nurseLevelId;
     private String remark;
     private String physicalExaminationReport;
+    private String firstAuditName;
+    private String auditName;
     private Long bedId;
     private Integer bpmStatus;
     private String processInstanceId;

+ 3 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/bpm/vo/CheckInWaitSupplementReqVO.java

@@ -15,5 +15,8 @@ public class CheckInWaitSupplementReqVO {
 
     private String isPsychosis;
 
+    private String firstAuditName;
+    private String auditName;
+
     private Long bedId;
 }

+ 16 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/bpm/BpmCheckInWaitApiImpl.java

@@ -78,6 +78,13 @@ public class BpmCheckInWaitApiImpl implements BpmCheckInWaitApi {
         updateDO.setIsPsychosis(reqVO.getIsPsychosis());
         return checkInWaitMapper.updateById(updateDO);
     }
+    @Override
+    public Integer updateSecondReviewInfo(CheckInWaitSupplementReqVO reqVO) {
+        ElderlyCheckInWaitDO updateDO = new ElderlyCheckInWaitDO();
+        updateDO.setId(reqVO.getId());
+        updateDO.setFirstAuditName(reqVO.getFirstAuditName());
+        return checkInWaitMapper.updateById(updateDO);
+    }
 
     @Override
     public Integer updateCheckInWaitStatus(Long id, Integer status) {
@@ -111,11 +118,20 @@ public class BpmCheckInWaitApiImpl implements BpmCheckInWaitApi {
     public Integer updateFourthReviewInfo(CheckInWaitSupplementReqVO reqVO) {
         ElderlyCheckInWaitDO updateDO = new ElderlyCheckInWaitDO();
         updateDO.setId(reqVO.getId());
+        updateDO.setRemark(reqVO.getRemark());
         updateDO.setPhysicalExaminationReport(reqVO.getPhysicalExaminationReport());
         return checkInWaitMapper.updateById(updateDO);
     }
 
     @Override
+    public Integer updateFifthReviewInfo(CheckInWaitSupplementReqVO reqVO) {
+        ElderlyCheckInWaitDO updateDO = new ElderlyCheckInWaitDO();
+        updateDO.setId(reqVO.getId());
+        updateDO.setAuditName(reqVO.getAuditName());
+        return checkInWaitMapper.updateById(updateDO);
+    }
+
+    @Override
     public Integer updateSixthReviewInfo(CheckInWaitSupplementReqVO reqVO) {
         ElderlyCheckInWaitDO updateDO = new ElderlyCheckInWaitDO();
         updateDO.setId(reqVO.getId());

+ 2 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/biz/ElderlyCheckInWaitDO.java

@@ -40,6 +40,8 @@ public class ElderlyCheckInWaitDO extends BaseNoDeleteDO {
     private String remark;
 
     private String physicalExaminationReport;
+    private String firstAuditName;
+    private String auditName;
 
     private Long bedId;
 

+ 21 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ElderlyOrderFoodServiceImpl.java

@@ -26,6 +26,7 @@ import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -170,7 +171,26 @@ public class ElderlyOrderFoodServiceImpl implements ElderlyOrderFoodService {
 
     @Override
     public List<ElderOrderFoodExportExcelVO> getList(ElderlyOrderFoodPageReqVO reqVO) {
-        return elderlyOrderFoodMapper.getList(reqVO);
+        List<ElderOrderFoodExportExcelVO> list = elderlyOrderFoodMapper.getList(reqVO);
+        Map<LocalDate, Map<String, Long>> collect = list.stream()
+                .filter(vo -> vo.getExtraDishes() != null && !vo.getExtraDishes().trim().isEmpty())
+                .collect(Collectors.groupingBy(
+                        ElderOrderFoodExportExcelVO::getOrderFoodDate,
+                        Collectors.groupingBy(
+                                ElderOrderFoodExportExcelVO::getExtraDishes,
+                                Collectors.counting()
+                        )
+                ));
+        for (Map.Entry<LocalDate, Map<String, Long>> localDateEntry : collect.entrySet()) {
+            for (Map.Entry<String, Long> countEntry : localDateEntry.getValue().entrySet()) {
+                ElderOrderFoodExportExcelVO value = new ElderOrderFoodExportExcelVO();
+                value.setElderName("总计");
+                value.setOrderFoodDate(localDateEntry.getKey());
+                value.setExtraDishes(countEntry.getKey() + ":" + countEntry.getValue());
+                list.add(value);
+            }
+        }
+        return list;
     }
 
     private void validateExists(Long id) {

+ 5 - 2
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ElderlyOrderFoodMapper.xml

@@ -19,8 +19,11 @@
                  LEFT JOIN org_build_floor f ON f.id = ei.floor_id
                  LEFT JOIN org_build_room r ON r.id = ei.room_id
         WHERE 1 = 1
-        <if test="reqVO.tenantId != null">
-            AND eof.tenant_id = #{reqVO.tenantId}
+        <if test="reqVO.tenantIds != null and reqVO.tenantIds.length > 0">
+            AND eof.tenant_id IN
+            <foreach collection="reqVO.tenantIds" item="tenantId" open="(" separator="," close=")">
+                #{tenantId}
+            </foreach>
         </if>
         <if test="reqVO.buildName != null and reqVO.buildName != ''">
             AND b.build_name like concat('%',#{reqVO.buildName},'%')