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 com.gkhy.safePlatform.targetDuty.service.baseService.TargetDivideDetailBaseService;
|
import com.gkhy.safePlatform.targetDuty.service.baseService.TargetMngBaseService;
|
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 implements TargetDivideDetailService {
|
|
@Autowired
|
private TargetDivideDetailBaseService targetDivideDetailBaseService;
|
|
@Autowired
|
private TargetMngBaseService targetMngBaseService;
|
|
|
|
@Override
|
public ResultVO queryAll(PageQuery<TargetDivideDetailQueryCriteria> pageQuery) {
|
Long pageIndex = pageQuery.getPageIndex();
|
Long pageSize = pageQuery.getPageSize();
|
IPage<TargetDivideDetail> page = new Page<>(pageIndex, pageSize);
|
|
page = targetDivideDetailBaseService.selectPage(page,
|
QueryHelpPlus.getPredicate(TargetDivideDetail.class, pageQuery.getSearchParams()));
|
List<TargetDivideDetailDto> respList = BeanCopyUtils.copyBeanList(page.getRecords(), TargetDivideDetailDto.class);
|
|
return new SearchResultVO<>(
|
true,
|
pageIndex,
|
pageSize,page.getPages(),
|
page.getTotal(),
|
respList,
|
ResultCodes.OK
|
);
|
}
|
|
|
@Override
|
public List<TargetDivideDetail> queryAll(TargetDivideDetailQueryCriteria criteria) {
|
return targetDivideDetailBaseService.queryAll(criteria);
|
}
|
|
@Override
|
public void addOrUpdate(TargetDivideDetailSaveOrUpdate infoDto) {
|
if(infoDto.getTargetId() == null){
|
throw new TargetDutyException("缺少targetId");
|
}
|
TargetMng targetMng = targetMngBaseService.getOne(new QueryWrapper<TargetMng>().eq("id",infoDto.getTargetId()));
|
if(targetMng == null){
|
throw new TargetDutyException(TargetDutyResultCodes.E1);
|
}
|
|
if(StringUtils.hasText(infoDto.getDelTargetDivideDetails())){
|
List<Long> idList = Arrays.stream(infoDto.getDelTargetDivideDetails().split(",")).map(s-> Long.parseLong(s.trim()))
|
.collect(Collectors.toList());
|
List<TargetDivideDetail> delList = new ArrayList<>();
|
idList.forEach(f->{
|
TargetDivideDetail info = new TargetDivideDetail();
|
info.setDelFlag(1);
|
info.setId(f);
|
delList.add(info);
|
});
|
targetDivideDetailBaseService.updateBatchById(delList);
|
}
|
|
//保存主数据
|
//如果目标指标已经被分解,那么就不能再次增加
|
if(targetMng.getDivideStatus() == 1 && infoDto.getTargetId() == null){
|
throw new TargetDutyException(TargetDutyResultCodes.E2);
|
}
|
|
List<TargetDivideDetail> list = infoDto.getTargetDivideDetailList();
|
list.forEach(f->{f.setTargetId(infoDto.getTargetId());});
|
targetDivideDetailBaseService.saveOrUpdateBatch(list);
|
|
//查询最新的分解数量,如果>0,设置状态为 《已分解》,否则设置为未分解
|
int divideStatus = 2;
|
if(infoDto.getTargetId() != null){
|
long number = targetDivideDetailBaseService.count(new QueryWrapper<TargetDivideDetail>().eq("target_id",infoDto.getTargetId()));
|
if(number > 0){
|
divideStatus = 1;
|
}
|
}
|
targetMng.setDivideStatus(divideStatus);
|
targetMngBaseService.update(targetMng,new UpdateWrapper<TargetMng>().eq("id",targetMng.getId()));
|
|
|
}
|
}
|