gunshi-project-ss/src/main/java/com/gunshi/project/ss/service/ByPlanService.java

107 lines
4.2 KiB
Java
Raw Normal View History

2025-12-29 17:13:09 +08:00
package com.gunshi.project.ss.service;
2025-08-27 15:56:26 +08:00
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
2025-12-29 17:13:09 +08:00
import com.gunshi.project.ss.entity.so.ByPlanPageSo;
import com.gunshi.project.ss.mapper.ByPlanDetailMapper;
import com.gunshi.project.ss.mapper.ByPlanMapper;
import com.gunshi.project.ss.model.ByPlan;
import com.gunshi.project.ss.model.ByPlanDetail;
2025-09-04 10:44:33 +08:00
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.mapper.SysUserMapper;
2025-08-27 15:56:26 +08:00
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.BatchResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class ByPlanService extends ServiceImpl<ByPlanMapper, ByPlan> {
@Autowired
private ByPlanDetailMapper byPlanDetailMapper;
2025-09-04 10:44:33 +08:00
@Autowired
private ByPlanDetailService byPlanDetailService;
@Autowired
private SysUserMapper sysUserMapper;
2025-08-27 15:56:26 +08:00
public boolean update(ByPlan dto) {
LambdaQueryWrapper<ByPlan> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ByPlan::getPlanId, dto.getPlanId());
ByPlan one = getOne(queryWrapper);
if(Objects.isNull(one)){
throw new RuntimeException("该计划不存在,请检查");
}
boolean save = updateById(dto);
List<ByPlanDetail> byPlanDetail = dto.getByPlanDetail();
2025-09-04 16:39:08 +08:00
if(byPlanDetail == null || byPlanDetail.isEmpty()){
throw new IllegalArgumentException("防止部位至少需要一条数据");
}
2025-08-27 15:56:26 +08:00
byPlanDetail.forEach(detail -> {
detail.setId(IdWorker.getId());
2025-09-04 16:39:08 +08:00
detail.setPlanId(dto.getPlanId());
2025-08-27 15:56:26 +08:00
});
LambdaQueryWrapper<ByPlanDetail> queryWrapper2 = new LambdaQueryWrapper<>();
//先删除,再新增
queryWrapper2.eq(ByPlanDetail::getPlanId, dto.getPlanId());
int delete = byPlanDetailMapper.delete(queryWrapper2);
List<BatchResult> insert = byPlanDetailMapper.insert(byPlanDetail);
return true;
}
public Page<ByPlan> pageQuery(ByPlanPageSo dto) {
LambdaQueryWrapper<ByPlan> queryWrapper = new LambdaQueryWrapper<>();
if(!StringUtils.isBlank(dto.getPlanName())){
queryWrapper.like(ByPlan::getPlanName,dto.getPlanName());
}
queryWrapper.orderByDesc(ByPlan::getPlanDateStart);
Page<ByPlan> byPlanPage = baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper);
List<ByPlan> records = byPlanPage.getRecords();
Iterator<ByPlan> iterator = records.iterator();
while(iterator.hasNext()){
ByPlan entity = iterator.next();
2025-12-02 15:18:17 +08:00
List<ByPlanDetail> query = byPlanDetailMapper.selectList(entity.getPlanId(),dto);
//如果preDetailName不为空的情况下且details为空那么就去掉这个主数据
if (!StringUtils.isBlank(dto.getPreDetailName()) && query.isEmpty()) {
2025-08-27 15:56:26 +08:00
iterator.remove();
continue;
}
2025-12-02 15:18:17 +08:00
List<ByPlanDetail> details = byPlanDetailMapper.selectList(entity.getPlanId(), null);
2025-08-27 15:56:26 +08:00
entity.setByPlanDetail(details);
2025-09-04 10:44:33 +08:00
//根据用户id查询用户名称
2025-09-04 16:39:08 +08:00
if(entity.getUserId() != null){
SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(entity.getUserId()));
if(sysUser != null){
2025-12-12 14:23:48 +08:00
entity.setUserName(sysUser.getNickName());
2025-09-04 16:39:08 +08:00
}
2025-09-04 10:44:33 +08:00
}
2025-08-27 15:56:26 +08:00
}
return byPlanPage;
}
2025-09-04 10:44:33 +08:00
public boolean saveData(ByPlan dto) {
dto.setId(IdWorker.getId());
List<ByPlanDetail> byPlanDetail = dto.getByPlanDetail();
boolean save = save(dto);
byPlanDetail.forEach(detail -> {
detail.setId(IdWorker.getId());
});
if(save){
byPlanDetailService.saveBatch(byPlanDetail);
}
return true;
}
2025-08-27 15:56:26 +08:00
}