package cn.cslg.pas.service.business;
import cn.cslg.pas.common.dto.customAnalyse.SchemaDataDTO;
import cn.cslg.pas.common.dto.customAnalyse.SchemaDimensionDTO;
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
import cn.cslg.pas.common.utils.CacheUtils;
import cn.cslg.pas.common.utils.LoginUtils;
import cn.cslg.pas.domain.business.CustomAnalysisItemSchema;
import cn.cslg.pas.exception.UnLoginException;
import cn.cslg.pas.mapper.CustomAnalysisItemSchemaMapper;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* 自定义分析项目维度数据 服务实现类
*
*/
@Service
public class CustomAnalysisItemSchemaService extends ServiceImpl {
@Autowired
private CacheUtils cacheUtils;
@Autowired
private LoginUtils loginUtils;
@Autowired
private CustomAnalysisItemSchemaMapper customAnalysisItemSchemaMapper;
public List getListByUid(String uid) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustomAnalysisItemSchema::getUid, uid);
return this.list(queryWrapper);
}
public SchemaDimensionDTO getItemSchemaByUid(String uid) {
List schemaList = this.getListByUid(uid);
CustomAnalysisItemSchema d1 = schemaList.stream().filter(item -> item.getDimension().equals("x")).findFirst().orElse(new CustomAnalysisItemSchema());
CustomAnalysisItemSchema d2 = schemaList.stream().filter(item -> item.getDimension().equals("y")).findFirst().orElse(new CustomAnalysisItemSchema());
SchemaDimensionDTO dto = new SchemaDimensionDTO();
SchemaDataDTO x = new SchemaDataDTO();
SchemaDataDTO y = new SchemaDataDTO();
x.setField(d1.getField());
x.setExpand(d1.getExpand());
x.setPtype(d1.getPtype());
x.setNum(d1.getNum());
x.setType(d1.getType());
x.setGroupBy(d1.getGroupBy());
x.setFieldKind(d1.getFieldKind());
x.setName(d1.getName());
y.setField(d2.getField());
y.setExpand(d2.getExpand());
y.setPtype(d2.getPtype());
y.setNum(d2.getNum());
y.setType(d2.getType());
y.setName(d2.getName());
y.setGroupBy(d2.getGroupBy());
y.setFieldKind(d2.getFieldKind());
dto.setX(x);
dto.setY(y);
return dto;
}
public void add(SchemaDimensionDTO dto, String uid) {
//获取登陆人信息 用于设置创建人
PersonnelVO personnelVO = new PersonnelVO();
try {
personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
} catch (Exception e) {
throw new UnLoginException("未登录");
}
List customAnalysisItemSchema = new ArrayList<>();
CustomAnalysisItemSchema d1 = new CustomAnalysisItemSchema();
CustomAnalysisItemSchema d2 = new CustomAnalysisItemSchema();
d1.setUid(uid);
d1.setDimension("x");
d1.setField(dto.getX().getField());
d1.setExpand(dto.getX().getExpand());
d1.setPtype(dto.getX().getPtype());
d1.setType(dto.getX().getType());
d1.setNum(dto.getX().getNum());
d1.setName(dto.getX().getName());
d1.setGroupBy(dto.getX().getGroupBy());
d1.setFieldKind(dto.getX().getFieldKind());
d1.setCreateId(personnelVO.getId());
d1.setCreateName(personnelVO.getName());
d1.setCreateTime(new Date());
d1.setUpdateTime(new Date());
d2.setUid(uid);
d2.setDimension("y");
d2.setField(dto.getY().getField());
d2.setExpand(dto.getY().getExpand());
d2.setPtype(dto.getY().getPtype());
d2.setType(dto.getY().getType());
d2.setNum(dto.getY().getNum());
d2.setName(dto.getY().getName());
d2.setGroupBy(dto.getY().getGroupBy());
d2.setFieldKind(dto.getY().getFieldKind());
d2.setCreateId(personnelVO.getId());
d2.setCreateName(personnelVO.getName());
d2.setCreateTime(new Date());
d2.setUpdateTime(new Date());
customAnalysisItemSchema.add(d1);
customAnalysisItemSchema.add(d2);
this.saveBatch(customAnalysisItemSchema);
}
public void edit(SchemaDimensionDTO dto, String uid) {
List schemaList = this.getListByUid(uid);
if (schemaList.size() == 0) {
this.add(dto, uid);
} else {
schemaList.forEach(item -> {
switch (item.getDimension()) {
case "x":
item.setField(dto.getX().getField());
item.setExpand(dto.getX().getExpand());
item.setPtype(dto.getX().getPtype());
item.setNum(dto.getX().getNum());
item.setType(dto.getX().getType());
item.setName(dto.getX().getName());
item.setGroupBy(dto.getX().getGroupBy());
item.setFieldKind(dto.getX().getFieldKind());
break;
case "y":
item.setField(dto.getY().getField());
item.setExpand(dto.getY().getExpand());
item.setPtype(dto.getY().getPtype());
item.setNum(dto.getY().getNum());
item.setType(dto.getY().getType());
item.setName(dto.getY().getName());
item.setGroupBy(dto.getY().getGroupBy());
item.setFieldKind(dto.getY().getFieldKind());
break;
}
});
this.saveOrUpdateBatch(schemaList);
}
}
public void deleteByUid(String uid) {
this.remove(Wrappers.lambdaQuery().eq(CustomAnalysisItemSchema::getUid, uid));
}
}