package com.gkhy.safePlatform.targetDuty.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.targetDuty.entity.ExamineItem; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.enums.TargetDutyResultCodes; import com.gkhy.safePlatform.targetDuty.excepiton.TargetDutyException; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDivideDetailSaveOrUpdate; import com.gkhy.safePlatform.targetDuty.repository.TargetDivideDetailRepository; import com.gkhy.safePlatform.targetDuty.entity.TargetDivideDetail; import com.gkhy.safePlatform.targetDuty.repository.TargetMngRepository; import com.gkhy.safePlatform.targetDuty.service.TargetDivideDetailService; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.vo.SearchResultVO; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDivideDetailQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetDivideDetailDto; import com.gkhy.safePlatform.targetDuty.utils.QueryHelpPlus; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * 目标指标分解详情(TargetDivideDetail)表服务实现类 * * @author xurui * @since 2022-07-20 13:32:39 */ @Service("targetDivideDetailService") public class TargetDivideDetailServiceImpl extends ServiceImpl implements TargetDivideDetailService { @Autowired private TargetDivideDetailRepository targetDivideDetailRepository; @Autowired private TargetMngRepository targetMngRepository; @Override public ResultVO queryAll(PageQuery pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); IPage page = new Page<>(pageIndex, pageSize); page = baseMapper.selectPage(page, QueryHelpPlus.getPredicate(TargetDivideDetail.class, pageQuery.getSearchParams())); List respList = BeanCopyUtils.copyBeanList(page.getRecords(), TargetDivideDetailDto.class); return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public List queryAll(TargetDivideDetailQueryCriteria criteria) { return baseMapper.selectList(QueryHelpPlus.getPredicate(TargetDivideDetail.class, criteria)); } @Override public void addOrUpdate(TargetDivideDetailSaveOrUpdate infoDto) { TargetMng targetMng = targetMngRepository.selectOne(new QueryWrapper().eq("id",infoDto.getTargetId())); if(targetMng == null){ throw new TargetDutyException(TargetDutyResultCodes.E1); } if(StringUtils.hasText(infoDto.getDelTargetDivideDetails())){ List idList = Arrays.stream(infoDto.getDelTargetDivideDetails().split(",")).map(s-> Long.parseLong(s.trim())) .collect(Collectors.toList()); List delList = new ArrayList<>(); idList.forEach(f->{ TargetDivideDetail info = new TargetDivideDetail(); info.setDelFlag(1); info.setId(f); delList.add(info); }); this.updateBatchById(delList); } //保存主数据 //如果目标指标已经被分解,那么就不能再次增加 if(targetMng.getDivideStatus() == 1 && infoDto.getTargetId() == null){ throw new TargetDutyException(TargetDutyResultCodes.E2); } List list = infoDto.getTargetDivideDetailList(); list.forEach(f->{f.setTargetId(infoDto.getTargetId());}); this.saveOrUpdateBatch(list); //查询最新的分解数量,如果>0,设置状态为 《已分解》,否则设置为未分解 int divideStatus = 2; if(infoDto.getTargetId() != null){ long number = this.count(new QueryWrapper().eq("target_id",infoDto.getTargetId())); if(number > 0){ divideStatus = 1; } } targetMng.setDivideStatus(divideStatus); targetMngRepository.update(targetMng,new UpdateWrapper().eq("id",targetMng.getId())); } }