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.enums.TmsSignRule; import jnpf.tmsEntity.enums.TmsYesNo; 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); } /** * 按 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() : TmsSignRule.BOTH.getCode()); entity.setAllowGuestSign(yn(form.getAllowGuestSign(), TmsYesNo.NO.getCode())); entity.setSameDayRequired(yn(form.getSameDayRequired(), TmsYesNo.NO.getCode())); entity.setPlaceRequired(yn(form.getPlaceRequired(), TmsYesNo.YES.getCode())); entity.setSortNo(form.getSortNo() == null ? 0 : form.getSortNo()); entity.setEnabled(yn(form.getEnabled(), "1")); entity.setRemark(form.getRemark()); } /** * 是否转 Y/N */ private static String yn(String v, String def) { if ("0".equals(v) || "1".equals(v)) { return v; } return def; } /** * 实体转为表单/VO */ 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; } }