package jnpf.tmsService.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import jnpf.exception.DataException;
|
import jnpf.tmsEntity.TmsTrainModeEntity;
|
import jnpf.tmsEntity.trainmode.TmsTrainModeForm;
|
import jnpf.tmsEntity.trainmode.TmsTrainModeQuery;
|
import jnpf.tmsMapper.TmsTrainModeMapper;
|
import jnpf.tmsService.TmsTrainModeService;
|
import jnpf.util.RandomUtil;
|
import jnpf.util.StringUtil;
|
import jnpf.util.UserProvider;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
@RequiredArgsConstructor
|
public class TmsTrainModeServiceImpl implements TmsTrainModeService {
|
|
private final TmsTrainModeMapper trainModeMapper;
|
|
@Override
|
public List<TmsTrainModeForm> getList(TmsTrainModeQuery query) {
|
LambdaQueryWrapper<TmsTrainModeEntity> qw = new LambdaQueryWrapper<>();
|
if (StringUtil.isNotEmpty(query.getEnabled())) {
|
qw.eq(TmsTrainModeEntity::getEnabled, query.getEnabled());
|
}
|
if (StringUtil.isNotEmpty(query.getKeyword())) {
|
String kw = query.getKeyword().trim();
|
qw.and(w -> w.like(TmsTrainModeEntity::getModeCode, kw)
|
.or()
|
.like(TmsTrainModeEntity::getModeName, kw));
|
}
|
qw.orderByAsc(TmsTrainModeEntity::getSortNo);
|
qw.orderByDesc(TmsTrainModeEntity::getCreatorTime);
|
|
long current = query.getCurrentPage() > 0 ? query.getCurrentPage() : 1;
|
long size = query.getPageSize() > 0 ? query.getPageSize() : 20;
|
Page<TmsTrainModeEntity> page = trainModeMapper.selectPage(new Page<>(current, size), qw);
|
|
List<TmsTrainModeForm> list = new ArrayList<>(page.getRecords().size());
|
for (TmsTrainModeEntity row : page.getRecords()) {
|
list.add(toForm(row));
|
}
|
query.setData(list, page.getTotal());
|
return list;
|
}
|
|
@Override
|
public TmsTrainModeForm getInfo(String id) {
|
TmsTrainModeEntity entity = requireOne(id);
|
return toForm(entity);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public String create(TmsTrainModeForm form) {
|
validateForm(form, null);
|
Date now = new Date();
|
TmsTrainModeEntity entity = new TmsTrainModeEntity();
|
entity.setId(RandomUtil.uuId());
|
applyForm(entity, form);
|
entity.setCreatorUserId(UserProvider.getLoginUserId());
|
entity.setCreatorTime(now);
|
trainModeMapper.insert(entity);
|
return entity.getId();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void update(String id, TmsTrainModeForm form) {
|
TmsTrainModeEntity entity = requireOne(id);
|
validateForm(form, id);
|
// 编码不允许改
|
form.setModeCode(entity.getModeCode());
|
applyForm(entity, form);
|
entity.setLastModifyUserId(UserProvider.getLoginUserId());
|
entity.setLastModifyTime(new Date());
|
trainModeMapper.updateById(entity);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void setEnabled(String id, String enabled) {
|
if (!"0".equals(enabled) && !"1".equals(enabled)) {
|
throw new DataException("启用状态无效");
|
}
|
TmsTrainModeEntity entity = requireOne(id);
|
entity.setEnabled(enabled);
|
entity.setLastModifyUserId(UserProvider.getLoginUserId());
|
entity.setLastModifyTime(new Date());
|
trainModeMapper.updateById(entity);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void delete(String id) {
|
TmsTrainModeEntity entity = requireOne(id);
|
if (!"0".equals(entity.getEnabled())) {
|
throw new DataException("请先停用后再删除");
|
}
|
trainModeMapper.deleteById(id);
|
}
|
|
private TmsTrainModeEntity requireOne(String id) {
|
if (StringUtil.isEmpty(id)) {
|
throw new DataException("培训方式不存在");
|
}
|
TmsTrainModeEntity entity = trainModeMapper.selectById(id);
|
if (entity == null) {
|
throw new DataException("培训方式不存在");
|
}
|
return entity;
|
}
|
|
private void validateForm(TmsTrainModeForm form, String excludeId) {
|
if (form == null || StringUtil.isEmpty(form.getModeCode())) {
|
throw new DataException("请填写方式编码");
|
}
|
if (StringUtil.isEmpty(form.getModeName())) {
|
throw new DataException("请填写方式名称");
|
}
|
String code = form.getModeCode().trim();
|
form.setModeCode(code);
|
LambdaQueryWrapper<TmsTrainModeEntity> qw = new LambdaQueryWrapper<>();
|
qw.eq(TmsTrainModeEntity::getModeCode, code);
|
if (StringUtil.isNotEmpty(excludeId)) {
|
qw.ne(TmsTrainModeEntity::getId, excludeId);
|
}
|
if (trainModeMapper.selectCount(qw) > 0) {
|
throw new DataException("方式编码已存在");
|
}
|
}
|
|
private void applyForm(TmsTrainModeEntity entity, TmsTrainModeForm form) {
|
entity.setModeCode(form.getModeCode().trim());
|
entity.setModeName(form.getModeName().trim());
|
entity.setSignRule(StringUtil.isNotEmpty(form.getSignRule()) ? form.getSignRule() : "both");
|
entity.setAllowGuestSign(yn(form.getAllowGuestSign(), "0"));
|
entity.setSameDayRequired(yn(form.getSameDayRequired(), "0"));
|
entity.setPlaceRequired(yn(form.getPlaceRequired(), "1"));
|
entity.setSortNo(form.getSortNo() == null ? 0 : form.getSortNo());
|
entity.setEnabled(yn(form.getEnabled(), "1"));
|
entity.setRemark(form.getRemark());
|
}
|
|
private static String yn(String v, String def) {
|
if ("0".equals(v) || "1".equals(v)) {
|
return v;
|
}
|
return def;
|
}
|
|
private TmsTrainModeForm toForm(TmsTrainModeEntity entity) {
|
TmsTrainModeForm form = new TmsTrainModeForm();
|
form.setId(entity.getId());
|
form.setModeCode(entity.getModeCode());
|
form.setModeName(entity.getModeName());
|
form.setSignRule(entity.getSignRule());
|
form.setAllowGuestSign(entity.getAllowGuestSign());
|
form.setSameDayRequired(entity.getSameDayRequired());
|
form.setPlaceRequired(entity.getPlaceRequired());
|
form.setSortNo(entity.getSortNo());
|
form.setEnabled(entity.getEnabled());
|
form.setRemark(entity.getRemark());
|
return form;
|
}
|
}
|