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.TmsSignModeEntity;
|
import jnpf.tmsEntity.signmode.TmsSignModeForm;
|
import jnpf.tmsEntity.signmode.TmsSignModeQuery;
|
import jnpf.tmsMapper.TmsSignModeMapper;
|
import jnpf.tmsService.TmsSignModeService;
|
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 TmsSignModeServiceImpl implements TmsSignModeService {
|
|
private final TmsSignModeMapper signModeMapper;
|
|
@Override
|
public List<TmsSignModeForm> getList(TmsSignModeQuery query) {
|
LambdaQueryWrapper<TmsSignModeEntity> qw = new LambdaQueryWrapper<>();
|
if (StringUtil.isNotEmpty(query.getEnabled())) {
|
qw.eq(TmsSignModeEntity::getEnabled, query.getEnabled());
|
}
|
if (StringUtil.isNotEmpty(query.getKeyword())) {
|
String kw = query.getKeyword().trim();
|
qw.and(w -> w.like(TmsSignModeEntity::getModeCode, kw)
|
.or()
|
.like(TmsSignModeEntity::getModeName, kw));
|
}
|
qw.orderByDesc(TmsSignModeEntity::getCreatorTime);
|
|
long current = query.getCurrentPage() > 0 ? query.getCurrentPage() : 1;
|
long size = query.getPageSize() > 0 ? query.getPageSize() : 20;
|
Page<TmsSignModeEntity> page = signModeMapper.selectPage(new Page<>(current, size), qw);
|
|
List<TmsSignModeForm> list = new ArrayList<>(page.getRecords().size());
|
for (TmsSignModeEntity row : page.getRecords()) {
|
list.add(toForm(row));
|
}
|
query.setData(list, page.getTotal());
|
return list;
|
}
|
|
@Override
|
public TmsSignModeForm getInfo(String id) {
|
return toForm(requireOne(id));
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public String create(TmsSignModeForm form) {
|
validateForm(form, null);
|
TmsSignModeEntity entity = new TmsSignModeEntity();
|
entity.setId(RandomUtil.uuId());
|
applyForm(entity, form);
|
entity.setCreatorUserId(UserProvider.getLoginUserId());
|
entity.setCreatorTime(new Date());
|
signModeMapper.insert(entity);
|
return entity.getId();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void update(String id, TmsSignModeForm form) {
|
TmsSignModeEntity entity = requireOne(id);
|
validateForm(form, id);
|
form.setModeCode(entity.getModeCode());
|
applyForm(entity, form);
|
entity.setLastModifyUserId(UserProvider.getLoginUserId());
|
entity.setLastModifyTime(new Date());
|
signModeMapper.updateById(entity);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void setEnabled(String id, String enabled) {
|
if (!"0".equals(enabled) && !"1".equals(enabled)) {
|
throw new DataException("启用状态无效");
|
}
|
TmsSignModeEntity entity = requireOne(id);
|
entity.setEnabled(enabled);
|
entity.setLastModifyUserId(UserProvider.getLoginUserId());
|
entity.setLastModifyTime(new Date());
|
signModeMapper.updateById(entity);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void delete(String id) {
|
TmsSignModeEntity entity = requireOne(id);
|
if (!"0".equals(entity.getEnabled())) {
|
throw new DataException("请先停用后再删除");
|
}
|
signModeMapper.deleteById(id);
|
}
|
|
private TmsSignModeEntity requireOne(String id) {
|
if (StringUtil.isEmpty(id)) {
|
throw new DataException("签到方式不存在");
|
}
|
TmsSignModeEntity entity = signModeMapper.selectById(id);
|
if (entity == null) {
|
throw new DataException("签到方式不存在");
|
}
|
return entity;
|
}
|
|
private void validateForm(TmsSignModeForm 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<TmsSignModeEntity> qw = new LambdaQueryWrapper<>();
|
qw.eq(TmsSignModeEntity::getModeCode, code);
|
if (StringUtil.isNotEmpty(excludeId)) {
|
qw.ne(TmsSignModeEntity::getId, excludeId);
|
}
|
if (signModeMapper.selectCount(qw) > 0) {
|
throw new DataException("方式编码已存在");
|
}
|
}
|
|
private void applyForm(TmsSignModeEntity entity, TmsSignModeForm form) {
|
entity.setModeCode(form.getModeCode().trim());
|
entity.setModeName(form.getModeName().trim());
|
entity.setTipSeconds(form.getTipSeconds() == null ? 30 : Math.max(0, form.getTipSeconds()));
|
entity.setMatchRoster(yn(form.getMatchRoster(), "1"));
|
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 TmsSignModeForm toForm(TmsSignModeEntity entity) {
|
TmsSignModeForm form = new TmsSignModeForm();
|
form.setId(entity.getId());
|
form.setModeCode(entity.getModeCode());
|
form.setModeName(entity.getModeName());
|
form.setTipSeconds(entity.getTipSeconds());
|
form.setMatchRoster(entity.getMatchRoster());
|
form.setEnabled(entity.getEnabled());
|
form.setRemark(entity.getRemark());
|
return form;
|
}
|
}
|