package com.ruoyi.zhdd.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.BeanCopyUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.zhdd.domain.Resource; import com.ruoyi.zhdd.domain.ResourceDetail; import com.ruoyi.zhdd.domain.bo.ResourceDetailBo; import com.ruoyi.zhdd.domain.vo.IncidentVo; import com.ruoyi.zhdd.domain.vo.ResourceDetailStatic; import com.ruoyi.zhdd.domain.vo.ResourceDetailVo; import com.ruoyi.zhdd.domain.vo.ResourceVo; import com.ruoyi.zhdd.mapper.ResourceDetailMapper; import com.ruoyi.zhdd.service.IIncidentService; import com.ruoyi.zhdd.service.IResourceDetailService; import com.ruoyi.zhdd.service.IResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 应急资源明细Service业务层处理 * * @author xintong * @date 2021-10-27 */ @Service public class ResourceDetailServiceImpl extends ServicePlusImpl implements IResourceDetailService { @Autowired private IIncidentService incidentService; @Autowired private IResourceService resourceService; @Override public ResourceDetailVo queryById(String id) { return getVoById(id); } @Override public TableDataInfo queryPageList(ResourceDetailBo bo) { PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo)); return PageUtils.buildDataInfo(result); } @Override public List queryList(ResourceDetailBo bo) { return listVo(buildQueryWrapper(bo)); } private LambdaQueryWrapper buildQueryWrapper(ResourceDetailBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getResourceId() != null, ResourceDetail::getResourceId, bo.getResourceId()); lqw.like(StringUtils.isNotBlank(bo.getName()), ResourceDetail::getName, bo.getName()); lqw.eq(StringUtils.isNotBlank(bo.getModel()), ResourceDetail::getModel, bo.getModel()); lqw.eq(StringUtils.isNotBlank(bo.getSize()), ResourceDetail::getSize, bo.getSize()); lqw.eq(bo.getNum() != null, ResourceDetail::getNum, bo.getNum()); lqw.eq(StringUtils.isNotBlank(bo.getUnit()), ResourceDetail::getUnit, bo.getUnit()); return lqw; } @Override public Boolean insertByBo(ResourceDetailBo bo) { ResourceDetail add = BeanUtil.toBean(bo, ResourceDetail.class); validEntityBeforeSave(add); return save(add); } @Override public Boolean updateByBo(ResourceDetailBo bo) { ResourceDetail update = BeanUtil.toBean(bo, ResourceDetail.class); validEntityBeforeSave(update); return updateById(update); } /** * 保存前的数据校验 * * @param entity 实体类数据 */ private void validEntityBeforeSave(ResourceDetail entity) { //TODO 做一些数据校验,如唯一约束 } @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return removeByIds(ids); } @Override public List searchWarehouseByGoods(ResourceDetailBo bo) { List list = baseMapper.searchWarehouseByGoods(bo); return BeanCopyUtils.listCopy(list, new CopyOptions(), ResourceVo.class); } /** * 根据事件id查询主办和协办单位,再查询可用资源 * * @param id * @return */ @Override public List queryResourceAvailable(String id) { IncidentVo incidentVo = incidentService.queryById(id); if (incidentVo == null) { return new ArrayList<>(); } // 查询主办协办部门 String madinDept = incidentVo.getMadinDept(); String assistDept = incidentVo.getAssistDept(); List deptList = new ArrayList<>(); if (StrUtil.isNotBlank(madinDept)) { CollUtil.addAll(deptList, madinDept); } if (StrUtil.isNotBlank(assistDept)) { CollUtil.addAll(deptList, assistDept.split(",")); } if (deptList.size() == 0) { return new ArrayList<>(); } // 查询对应的资源id List list = resourceService.list(Wrappers.lambdaQuery().in(Resource::getManageUnitId, deptList)); if (list == null || list.size() == 0) { return new ArrayList<>(); } List collect = list.stream().map(Resource::getId).distinct().collect(Collectors.toList()); return baseMapper.queryResourceAvailable(collect); } /** * 查询存在物资的仓库ids * * @return */ @Override public List queryExistResourceId() { return baseMapper.queryExistResourceId(); } @Override public List queryResourceTotalNum() { return baseMapper.queryResourceTotalNum(); } }