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();
|
}
|
}
|