package com.xiaopeng.maintenance.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
import com.xiaopeng.api.model.maintenance.XpTaskRuleRole;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.bean.BeanUtils;
import com.xiaopeng.maintenance.dto.TaskRuleDetailDto;
import com.xiaopeng.api.vo.maintenance.TaskRuleDetailVO;
import com.xiaopeng.maintenance.mapper.XpTaskRuleMapper;
import com.xiaopeng.maintenance.mapper.XpTaskRuleRoleMapper;
import com.xiaopeng.maintenance.service.IXpTaskRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 任务规则设置 服务实现类
*
*
* @author mitao
* @since 2026-02-03
*/
@Service
public class XpTaskRuleServiceImpl extends ServiceImpl implements IXpTaskRuleService {
@Autowired
private XpTaskRuleRoleMapper taskRuleRoleMapper;
@Override
public R taskRuleDetail() {
XpTaskRule taskRule = this.getOne(null);
if (taskRule == null){
TaskRuleDetailVO taskRuleDetailVO = new TaskRuleDetailVO();
return R.ok(taskRuleDetailVO);
}
TaskRuleDetailVO taskRuleDetailVO = new TaskRuleDetailVO();
BeanUtils.copyProperties(taskRule, taskRuleDetailVO);
List xpTaskRuleRoles = taskRuleRoleMapper.selectList(null);
taskRuleDetailVO.setTaskRuleRoleList(xpTaskRuleRoles);
return R.ok(taskRuleDetailVO);
}
@Override
public void saveOrUpdateTaskRule(TaskRuleDetailDto dto) {
if (dto.getId()!=null){
XpTaskRule xpTaskRule = new XpTaskRule();
BeanUtils.copyProperties(dto, xpTaskRule);
this.updateById(xpTaskRule);
taskRuleRoleMapper.delete(new LambdaQueryWrapper()
.isNotNull(XpTaskRuleRole::getId));
for (XpTaskRuleRole xpTaskRuleRole : dto.getTaskRuleRoleList()) {
taskRuleRoleMapper.insert(xpTaskRuleRole);
}
}else{
XpTaskRule xpTaskRule = new XpTaskRule();
BeanUtils.copyProperties(dto, xpTaskRule);
this.save(xpTaskRule);
for (XpTaskRuleRole xpTaskRuleRole : dto.getTaskRuleRoleList()) {
taskRuleRoleMapper.insert(xpTaskRuleRole);
}
}
}
}