陈昶聿
5 天以前 e98752fd82d699c3b53f1f4e9e9e10281172d3f3
【丽水】手术撤销
已修改4个文件
94 ■■■■■ 文件已修改
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceExternalService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
@@ -799,4 +799,10 @@
//    @Excel(name = " 发送状态 1 被领取(在任务中是新建,在服务中是被领取)  2 待发送  3 已发送  4 不执行  5 发送失败 6 已完成\") ")
    @ApiModelProperty(value = "页面展示状态 :1:待随访(1 被领取、2 待发送、3 已发送、5 发送失败、7、超时);2:已完成( 6 已完成)、3:无需随访(4 不执行)")
    private Long sendstateView;
    @ApiModelProperty(value = "手术记录id 对应pat_med_operation_item.id")
    private Long operationItemId;
    @ApiModelProperty(value = "手术记录id集合")
    private List<Long> operationItemIds;
}
smartor/src/main/java/com/smartor/service/IServiceExternalService.java
@@ -119,6 +119,12 @@
    public Boolean addOperationInfo(@RequestBody Map dataMap);
    /**
     * 撤销手术信息
     */
    public Boolean cancelOperationInfo(@RequestBody Map dataMap);
    /**
     * 新增医疗组医生
     */
    public Boolean addMedicalTeam(Map dataMap);
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1520,6 +1520,80 @@
        return true;
    }
    @Override
    public Boolean cancelOperationInfo(Map dataMap) {
        log.info("ServiceExternalServiceImpl---cancelOperationInfo的撤销的值为:{}", dataMap);
        Map yeWuXX = (Map) dataMap.get("YeWuXX");
        Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
        ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
        PatArchive patArchive = addPatArchive(externalInHospPatientInfo, null, null);
        //手术撤销
        Map<String, Object> sscx = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("ShouShuCX") : null;
        ExternalOperationInfo externalOperationInfo = null;
        if (ObjectUtils.isNotEmpty(sscx))
            externalOperationInfo = BeanUtil.mapToBean(sscx, ExternalOperationInfo.class, true);
        PatMedOperation patMedOperation = new PatMedOperation();
        patMedOperation.setPatid(patArchive.getId());
        patMedOperation.setOrgid(patArchive.getOrgid());
        patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
        //查询一下,该患者是否已经有这些数据
        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
        if (CollectionUtils.isNotEmpty(patMedOperations)) {
            for(PatMedOperation operation : patMedOperations){
                Long id = operation.getId();
                //如果手术撤销,直接删除该条手术信息
                if (ObjectUtils.isNotEmpty(sscx)) {
                    operation.setId(id);
                    operation.setCheckFlag("1");
                    operation.setDelFlag("1");
                    //同时去查询,是否在subtask中生成任务,如果生成出得立马删除
                    //            手术随访
                    PatMedOperationItem pmoi = new PatMedOperationItem();
                    //获取需要出院手术随访,未处理的数据
                    pmoi.setOpid(operation.getId().toString());
                    List<PatMedOperationItem> patMedOperationItems
                            = patMedOperationItemMapper.selectOperationItemList(pmoi);
                    List<Long> operationItemIds = patMedOperationItems.stream()
                            .map(PatMedOperationItem::getId)
                            .filter(Objects::nonNull)
                            .distinct()
                            .collect(Collectors.toList());
                    //不需要服务了,需要通过patid和sendstate=1,2,3,5,7去查询一下,service_subtask里是否有正在执行的任务,
                    //有的话,立即停了
                    List<Long> sendstates = Arrays.asList(1L, 2L, 3L, 5L, 7L);
                    List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
                    ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
                    serviceSubtaskVO.setOrgid(patArchive.getOrgid());
                    serviceSubtaskVO.setPatid(patArchive.getId());
                    serviceSubtaskVO.setSendstates(sendstates);
                    serviceSubtaskVO.setOperationItemIds(operationItemIds);
                    serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
                    //去redis中,查询是否有subid,有的话移除cache-exist
                    if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
                            log.info("需要移除的subId为:{}", serviceSubtask.getId().toString());
                            serviceSubtask.setSendstate(4L);
                            serviceSubtask.setRemark("手术撤销");
                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                            redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
                            redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
                            redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
                            redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
                            redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
                            redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
                        }
                    }
                    operation.setUpdateTime(new Date());
                    patMedOperationMapper.updatePatMedOperation(operation);
                }
            }
        }
        return true;
    }
    //新增患者基本信息
    private PatArchive addPatArchive(ExternalInHospPatientInfo externalInHospPatientInfo, ExternalInHospPatientAddrInfo externalInHospPatientAddrInfo, ExternalInHospPatientLiaisonInfo externalInHospPatientLiaisonInfo) {
        Date parse = null;
@@ -2013,6 +2087,7 @@
                return true;
            case "SM_SQ_CheXiao":
                log.info("手术撤销入参类型为:{}", type);
                cancelOperationInfo(dataMap);
                return true;
            case "TJ_YW_BaoGaoXX":
                log.info("体检报告入参类型为:{}", type);
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -358,6 +358,12 @@
                #{itemTaskId}
            </foreach>
        </if>
        <if test="operationItemIds != null and operationItemIds.size() > 0">
            AND operation_item_id IN
            <foreach collection="operationItemIds" item="operationItemIdItem" open="(" separator="," close=")">
                #{operationItemIdItem}
            </foreach>
        </if>
        <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
        <if test="templatename != null  and templatename != ''">and templatename like concat('%', #{templatename},
            '%')
@@ -483,6 +489,7 @@
        <if test="libtemplatename != null ">and libtemplatename = #{libtemplatename}</if>
        <if test="openid != null ">and openid = #{openid}</if>
        <if test="sendstate != null ">and sendstate = #{sendstate}</if>
        <if test="operationItemId != null ">and operation_item_id = #{operationItemId}</if>
        <if test="drname != null  and drname != ''">and drname like concat('%', #{drname}, '%')</if>
        <if test="taskName != null  and taskName != ''">and task_name like concat('%', #{taskName}, '%')</if>
        <if test="drcode != null and drcode != ''">and (drcode = #{drcode}</if>