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