package org.dromara.eims.service.impl; import org.dromara.common.core.constant.DictConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.eims.domain.EimsMaintOrder; import org.dromara.eims.mapper.EimsMaintOrderMapper; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsMaintOrditmBo; import org.dromara.eims.domain.vo.EimsMaintOrditmVo; import org.dromara.eims.domain.EimsMaintOrditm; import org.dromara.eims.mapper.EimsMaintOrditmMapper; import org.dromara.eims.service.IEimsMaintOrditmService; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; /** * 工单条目Service业务层处理 * * @author zhuguifei * @date 2025-03-10 */ @RequiredArgsConstructor @Service public class EimsMaintOrditmServiceImpl implements IEimsMaintOrditmService { private final EimsMaintOrditmMapper baseMapper; private final EimsMaintOrderMapper orderMapper; /** * 查询工单条目 * * @param id 主键 * @return 工单条目 */ @Override public EimsMaintOrditmVo queryById(Long id){ return baseMapper.selectVoById(id); } /** * 分页查询工单条目列表 * * @param bo 查询条件 * @param pageQuery 分页参数 * @return 工单条目分页列表 */ @Override public TableDataInfo queryPageList(EimsMaintOrditmBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询符合条件的工单条目列表 * * @param bo 查询条件 * @return 工单条目列表 */ @Override public List queryList(EimsMaintOrditmBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(EimsMaintOrditmBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getOrderId() != null, EimsMaintOrditm::getOrderId, bo.getOrderId()); lqw.eq(bo.getEquId() != null, EimsMaintOrditm::getEquId, bo.getEquId()); lqw.like(StringUtils.isNotBlank(bo.getItmName()), EimsMaintOrditm::getItmName, bo.getItmName()); lqw.eq(StringUtils.isNotBlank(bo.getItmAction()), EimsMaintOrditm::getItmAction, bo.getItmAction()); lqw.eq(bo.getItmUser() != null, EimsMaintOrditm::getItmUser, bo.getItmUser()); lqw.eq(bo.getItmTime() != null, EimsMaintOrditm::getItmTime, bo.getItmTime()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), EimsMaintOrditm::getStatus, bo.getStatus()); return lqw; } /** * 新增工单条目 * * @param bo 工单条目 * @return 是否新增成功 */ @Override public Boolean insertByBo(EimsMaintOrditmBo bo) { EimsMaintOrditm add = MapstructUtils.convert(bo, EimsMaintOrditm.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } return flag; } /** * 修改工单条目 * * @param bo 工单条目 * @return 是否修改成功 */ @Transactional(rollbackFor = Exception.class) @Override public Boolean updateByBo(EimsMaintOrditmBo bo) { EimsMaintOrditm update = MapstructUtils.convert(bo, EimsMaintOrditm.class); // 完成工单明细同步修改工单状态 //1.第一次完成保养工单明细把保养工单状态修改为 保养中 Long orderId = bo.getOrderId(); EimsMaintOrder order = orderMapper.selectById(orderId); if(bo.getStatus().equals(DictConstants.EIMS_ORDITM_STATUS_DETAIL.YIWANCHENG)){ //没有完成时间自动添加完成时间 if(bo.getItmTime()==null){ update.setItmTime(new Date()); } if(order.getStatus().equals(DictConstants.MAINT_ORDER_STATUS_DETAIL.DAIBAOYANG)){ order.setStatus(DictConstants.MAINT_ORDER_STATUS_DETAIL.BAOYANG); if(order.getStartTime()==null){ order.setStartTime(new Date()); } orderMapper.updateById(order); } } validEntityBeforeSave(update); boolean flag = baseMapper.updateById(update) > 0; //2.查询所有保养项是否都已完成 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(EimsMaintOrditm::getOrderId, bo.getOrderId()); List eimsMaintOrditms = baseMapper.selectList(queryWrapper); List wwc = eimsMaintOrditms.stream().filter(item->!item.getStatus().equals(DictConstants.EIMS_ORDITM_STATUS_DETAIL.YIWANCHENG)).toList(); if(wwc.isEmpty()){ order.setStatus(DictConstants.MAINT_ORDER_STATUS_DETAIL.DAIYANZHENG); orderMapper.updateById(order); } return flag; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(EimsMaintOrditm entity){ //TODO 做一些数据校验,如唯一约束 } /** * 校验并批量删除工单条目信息 * * @param ids 待删除的主键集合 * @param isValid 是否进行有效性校验 * @return 是否删除成功 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; } }