package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.production.dto.ProcessRouteDto; import com.ruoyi.production.mapper.ProcessRouteItemMapper; import com.ruoyi.production.mapper.ProcessRouteMapper; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.mapper.ProductProcessRouteMapper; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.pojo.ProductProcessRoute; import com.ruoyi.production.service.ProcessRouteService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.List; @Service @AllArgsConstructor @Slf4j public class ProcessRouteServiceImpl extends ServiceImpl implements ProcessRouteService { @Autowired private ProcessRouteMapper processRouteMapper; @Autowired private ProcessRouteItemMapper processRouteItemMapper; @Autowired private ProductOrderMapper productOrderMapper; @Override public IPage pageProcessRouteDto(Page page, ProcessRouteDto processRouteDto) { return processRouteMapper.pageProcessRouteDto(page, processRouteDto); } @Override public Integer saveProcessRoute(ProcessRoute processRoute) { String nickName = SecurityUtils.getLoginUser().getNickName(); processRoute.setCreateBy(nickName); this.save(processRoute); // 新增子表数据 if(CollectionUtils.isNotEmpty(processRoute.getProcessRouteItems())){ for (ProcessRouteItem processRouteItem : processRoute.getProcessRouteItems()) { processRouteItem.setRouteId(processRoute.getId()); processRouteItemMapper.insert(processRouteItem); } } if(StringUtils.isEmpty(processRoute.getProcessRouteCode())){ String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String idStr = String.format("%06d", processRoute.getId()); String newProductCode = "GYLX" + dateStr + idStr; // 更新数据库中的productCode processRoute.setProcessRouteCode(newProductCode); } return processRouteMapper.updateById(processRoute); } @Override public int batchDelete(List ids) { //先判断是否已经引用了 List productOrders = productOrderMapper.selectList(Wrappers.lambdaQuery().in(ProductOrder::getRouteId, ids)); if (CollectionUtils.isNotEmpty(productOrders)){ throw new RuntimeException("该工艺路线生产已引用,不能删除"); } //删除工艺路线详情 processRouteItemMapper.delete(Wrappers.lambdaQuery().in(ProcessRouteItem::getRouteId, ids)); return processRouteMapper.deleteBatchIds(ids); } @Override public int updateProcessRoute(ProcessRoute processRoute) { this.updateById(processRoute); processRouteItemMapper.delete(Wrappers.lambdaQuery().eq(ProcessRouteItem::getRouteId, processRoute.getId())); if(CollectionUtils.isNotEmpty(processRoute.getProcessRouteItems())){ for (ProcessRouteItem processRouteItem : processRoute.getProcessRouteItems()) { processRouteItem.setRouteId(processRoute.getId()); processRouteItemMapper.insert(processRouteItem); } } return 1; } }