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 getList(TmsSignModeQuery query) { LambdaQueryWrapper 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 page = signModeMapper.selectPage(new Page<>(current, size), qw); List 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 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; } }