|
|
@@ -1,6 +1,15 @@
|
|
|
package cn.tr.module.smart.common.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.tr.core.exception.TRExcCode;
|
|
|
+import cn.tr.core.strategy.LoginUserStrategy;
|
|
|
+import cn.tr.module.smart.wx.dto.BizClinicAddOrEditDTO;
|
|
|
+import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
|
|
|
+import cn.tr.module.smart.wx.dto.BizWxAppletClinicShiftCareDTO;
|
|
|
+import cn.tr.module.smart.wx.vo.BizWxAppletClinicVO;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
@@ -12,6 +21,8 @@ import cn.tr.module.smart.common.po.BizClinicPO;
|
|
|
import cn.tr.module.smart.common.dto.BizClinicDTO;
|
|
|
import cn.tr.module.smart.common.dto.BizClinicQueryDTO;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
import cn.tr.module.smart.common.service.IBizClinicService;
|
|
|
import cn.tr.module.smart.wx.mapper.BizClinicMapper;
|
|
|
/**
|
|
|
@@ -21,72 +32,145 @@ import cn.tr.module.smart.wx.mapper.BizClinicMapper;
|
|
|
* @date 2025/05/23 14:17
|
|
|
**/
|
|
|
@Service
|
|
|
-public class BizClinicServiceImpl implements IBizClinicService {
|
|
|
- @Autowired
|
|
|
- private BizClinicRepository baseRepository;
|
|
|
+public class BizClinicServiceImpl extends ServiceImpl<BizClinicRepository,BizClinicPO> implements IBizClinicService {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 根据条件查询手术信息
|
|
|
- * @param query 查询参数
|
|
|
- * @author lf
|
|
|
- * @date 2025/05/23 14:17
|
|
|
- */
|
|
|
+ * 根据条件查询手术信息
|
|
|
+ * @param query 查询参数
|
|
|
+ * @author lf
|
|
|
+ * @date 2025/05/23 14:17
|
|
|
+ */
|
|
|
@Override
|
|
|
public List<BizClinicDTO> selectBizClinicList(BizClinicQueryDTO query){
|
|
|
return BizClinicMapper.INSTANCE.convertDtoList(
|
|
|
- baseRepository.selectList(new LambdaQueryWrapper<BizClinicPO>()
|
|
|
+ baseMapper.selectList(new LambdaQueryWrapper<BizClinicPO>()
|
|
|
)
|
|
|
);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * 根据id查询手术信息
|
|
|
- * @param id 主键id
|
|
|
- * @author lf
|
|
|
- * @date 2025/05/23 14:17
|
|
|
- */
|
|
|
+ * 根据id查询手术信息
|
|
|
+ * @param id 主键id
|
|
|
+ * @author lf
|
|
|
+ * @date 2025/05/23 14:17
|
|
|
+ */
|
|
|
@Override
|
|
|
public BizClinicDTO selectBizClinicById(String id){
|
|
|
- return BizClinicMapper.INSTANCE.convertDto(baseRepository.selectById(id));
|
|
|
+ return BizClinicMapper.INSTANCE.convertDto(baseMapper.selectById(id));
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * 编辑手术信息
|
|
|
- * @param source 编辑实体类
|
|
|
- * @author lf
|
|
|
- * @date 2025/05/23 14:17
|
|
|
- */
|
|
|
+ * 编辑手术信息
|
|
|
+ * @param source 编辑实体类
|
|
|
+ * @author lf
|
|
|
+ * @date 2025/05/23 14:17
|
|
|
+ */
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public boolean updateBizClinicById(BizClinicDTO source){
|
|
|
- return baseRepository.updateById(BizClinicMapper.INSTANCE.convertPO(source))!=0;
|
|
|
+ return baseMapper.updateById(BizClinicMapper.INSTANCE.convertPO(source))!=0;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * 新增手术信息
|
|
|
- * @param source 新增实体类
|
|
|
- * @author lf
|
|
|
- * @date 2025/05/23 14:17
|
|
|
- */
|
|
|
+ * 新增手术信息
|
|
|
+ * @param source 新增实体类
|
|
|
+ * @author lf
|
|
|
+ * @date 2025/05/23 14:17
|
|
|
+ */
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean insertBizClinic(BizClinicDTO source){
|
|
|
- return baseRepository.insert(BizClinicMapper.INSTANCE.convertPO(source))!=0;
|
|
|
+ return baseMapper.insert(BizClinicMapper.INSTANCE.convertPO(source))!=0;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * 删除手术信息详情
|
|
|
- * @param ids 删除主键集合
|
|
|
- * @author lf
|
|
|
- * @date 2025/05/23 14:17
|
|
|
- */
|
|
|
+ * 删除手术信息详情
|
|
|
+ * @param ids 删除主键集合
|
|
|
+ * @author lf
|
|
|
+ * @date 2025/05/23 14:17
|
|
|
+ */
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int removeBizClinicByIds(Collection<String> ids){
|
|
|
if(CollectionUtil.isEmpty(ids)){
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
|
|
|
}
|
|
|
- return baseRepository.deleteBatchIds(ids);
|
|
|
- };
|
|
|
+ //先判断有没有删除数据的权限
|
|
|
+ String userId = LoginUserStrategy.tr.getCurrentUserId();
|
|
|
+ List<BizClinicPO> clinics = baseMapper.selectBatchIds(ids);
|
|
|
+ Map<String, List<BizClinicPO>> clinicMap = clinics.stream()
|
|
|
+ .collect(Collectors.groupingBy(BizClinicPO::getWxUserId));
|
|
|
+ if(CollectionUtil.size(clinicMap)>1){
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"所选患者手术信息和当前账号没有绑定关系");
|
|
|
+ }
|
|
|
+ List<BizClinicPO> clinicList = clinicMap.get(userId);
|
|
|
+ if(CollectionUtil.isNotEmpty(clinicMap)&&CollectionUtil.isEmpty(clinicList)){
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"所选患者手术信息和当前账号没有绑定关系");
|
|
|
+ }
|
|
|
+ int result = baseMapper.deleteBatchIds(ids);
|
|
|
+
|
|
|
+ //判断是否删除了当前看护
|
|
|
+ Optional<BizClinicPO> careClinic = clinicList.stream()
|
|
|
+ .filter(clinic -> Boolean.TRUE.equals(clinic.getCare()))
|
|
|
+ .findFirst();
|
|
|
+ if(careClinic.isPresent()){
|
|
|
+ //重新设置看护人员信息
|
|
|
+ BizClinicPO nextCare = baseMapper.selectOne(new LambdaQueryWrapper<BizClinicPO>()
|
|
|
+ .orderByDesc(BizClinicPO::getLastCareTime)
|
|
|
+ .last("limit 1"));
|
|
|
+ if(ObjectUtil.isNotNull(nextCare)){
|
|
|
+ baseMapper.updateById(nextCare);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<BizWxAppletClinicVO> stdSelectWxAppletList(BizWxAppletClinicQueryDTO query) {
|
|
|
+ return BizClinicMapper.INSTANCE.convertWxAppletVOList(
|
|
|
+ baseMapper.selectList(new LambdaQueryWrapper<BizClinicPO>()
|
|
|
+ .eq(BizClinicPO::getWxUserId, query.getUserId())
|
|
|
+ .orderByDesc(BizClinicPO::getCare,BizClinicPO::getClinicStartTime))
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BizWxAppletClinicVO stdSelectWxAppletCareClinicList(String currentUserId) {
|
|
|
+ return BizClinicMapper.INSTANCE.convertWxAppletVO(
|
|
|
+ baseMapper.selectOne(new LambdaQueryWrapper<BizClinicPO>()
|
|
|
+ .eq(BizClinicPO::getWxUserId, currentUserId)
|
|
|
+ .eq(BizClinicPO::getCare,Boolean.TRUE)
|
|
|
+ .last("limit 1"))
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean shiftWxAppletCurrent(BizWxAppletClinicShiftCareDTO source) {
|
|
|
+ BizClinicPO clinic = baseMapper.selectById(source.getClinicId());
|
|
|
+ if (ObjectUtil.isNull(clinic)) {
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"所切换的患者手术信息不存在");
|
|
|
+ }
|
|
|
+ if (!StrUtil.equals(clinic.getWxUserId(),source.getUserId())) {
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"此患者手术信息和当前账号没有绑定关系");
|
|
|
+ }
|
|
|
+ clinic.setCare(Boolean.TRUE);
|
|
|
+ clinic.setLastCareTime(new Date());
|
|
|
+ baseMapper.updateWxAppletAllNotCare(source.getUserId());
|
|
|
+ baseMapper.updateById(clinic);
|
|
|
+ return Boolean.TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean stdWxAppletAdd(BizClinicAddOrEditDTO source) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean stdWxAppletEdit(BizClinicAddOrEditDTO source) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ ;
|
|
|
}
|