| package com.vincent.rsf.server.manager.service.impl; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.vincent.rsf.framework.common.R; | 
| import com.vincent.rsf.framework.exception.CoolException; | 
| import com.vincent.rsf.server.manager.entity.AsnOrder; | 
| import com.vincent.rsf.server.manager.entity.AsnOrderItem; | 
| import com.vincent.rsf.server.manager.entity.AsnOrderItemLog; | 
| import com.vincent.rsf.server.manager.enums.AsnExceStatus; | 
| import com.vincent.rsf.server.manager.mapper.AsnOrderLogMapper; | 
| import com.vincent.rsf.server.manager.entity.AsnOrderLog; | 
| import com.vincent.rsf.server.manager.service.AsnOrderItemLogService; | 
| import com.vincent.rsf.server.manager.service.AsnOrderItemService; | 
| import com.vincent.rsf.server.manager.service.AsnOrderLogService; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.vincent.rsf.server.manager.service.AsnOrderService; | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.Objects; | 
|   | 
| @Service("asnOrderLogService") | 
| public class AsnOrderLogServiceImpl extends ServiceImpl<AsnOrderLogMapper, AsnOrderLog> implements AsnOrderLogService { | 
|   | 
|     @Autowired | 
|     private AsnOrderItemLogService asnOrderItemLogService; | 
|     @Autowired | 
|     private AsnOrderItemService asnOrderItemService; | 
|     @Autowired | 
|     private AsnOrderService asnOrderService; | 
|     /** | 
|      * @author Ryan | 
|      * @description 继续收货 | 
|      * @param | 
|      * @return | 
|      * @time 2025/4/17 15:08 | 
|      */ | 
|     @Override | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public R continueRecipt(Long id) { | 
|         AsnOrderLog orderLog = this.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getId, id)); | 
|         if (Objects.isNull(orderLog)) { | 
|             throw new CoolException("单据不存在!!"); | 
|         } | 
|         AsnOrder order = new AsnOrder(); | 
|         BeanUtils.copyProperties(orderLog, order); | 
|         order.setId(orderLog.getAsnId()) | 
|                 .setDeleted(0) | 
|                 .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); | 
|   | 
|         AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, orderLog.getCode())); | 
|         if (Objects.isNull(asnOrder)) { | 
|             throw new CoolException("收货单据已添加,刷新后再操作!!"); | 
|         } | 
|   | 
|         if (!asnOrderService.saveOrUpdate(order)) { | 
|             throw new CoolException("单据保存失败!!"); | 
|         } | 
|         List<AsnOrderItemLog> itemLogs = asnOrderItemLogService | 
|                 .list(new LambdaQueryWrapper<AsnOrderItemLog>() | 
|                 .eq(AsnOrderItemLog::getLogId, id)); | 
|         List<AsnOrderItem> orderItems = new ArrayList<>(); | 
|         if (!Objects.isNull(itemLogs) || !itemLogs.isEmpty()) { | 
|             for (AsnOrderItemLog itemLog : itemLogs) { | 
|                 AsnOrderItem item = new AsnOrderItem(); | 
|                 BeanUtils.copyProperties(itemLog, item); | 
|                 item.setId(itemLog.getAsnItemId()) | 
|                         .setAsnId(order.getId()) | 
|                         .setMatnrId(Long.parseLong(itemLog.getMatnrId())) | 
|                         .setDeleted(0); | 
|                 orderItems.add(item); | 
|             } | 
|            if (!asnOrderItemService.saveOrUpdateBatch(orderItems)) { | 
|                throw new CoolException("明细保存失败"); | 
|            } | 
|         } | 
|         if (!this.removeById(orderLog.getId())) { | 
|             throw new CoolException("历史单据删除失败!!"); | 
|         } | 
|         if (!asnOrderItemLogService.remove(new LambdaQueryWrapper<AsnOrderItemLog>() | 
|                 .eq(AsnOrderItemLog::getLogId, orderLog.getId()))) { | 
|             throw new CoolException("历史单据明细删除失败!!"); | 
|         } | 
|   | 
|         return R.ok(); | 
|     } | 
| } |