package com.zy.asrs.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.core.common.Cools;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.*;
|
import com.zy.asrs.entity.param.GlobleParameter;
|
import com.zy.asrs.mapper.PakoutMapper;
|
import com.zy.asrs.service.*;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
@Service("pakoutService")
|
public class PakoutServiceImpl extends ServiceImpl<PakoutMapper, Pakout> implements PakoutService {
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private OrderDetlService orderDetlService;
|
|
@Autowired
|
private ManLocDetlService manLocDetlService;
|
|
@Autowired
|
private PlaService plaService;
|
|
@Autowired
|
private PlaQtyService plaQtyService;
|
|
@Override
|
public void deletePakout(String docNum) {
|
Order order = orderService.selectByNo(docNum);
|
if (Cools.isEmpty(order)){
|
throw new RuntimeException("未查询到订单档案");
|
}
|
List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", docNum));
|
|
for (OrderDetl orderDetl: orderDetls){
|
if (orderDetl.getQty() > 0.0){
|
throw new RuntimeException("拣货单已有出库任务,不可删除!");
|
}
|
orderDetl.setWorkQty(0.0D);
|
}
|
|
if (!orderDetlService.updateBatchById(orderDetls)){
|
throw new RuntimeException("订单明细批量更新失败");
|
}
|
order.setSettle(1L);
|
if (!orderService.updateById(order)){
|
throw new RuntimeException("订单明细批量更新失败");
|
}
|
|
List<Pakout> pakouts = selectList(new EntityWrapper<Pakout>().eq("doc_num", docNum));
|
for (Pakout pakout: pakouts){
|
|
Pla pla = plaService.selectByBatchAndPackageNo(pakout.getBatch(), pakout.getBarcode());
|
if(!Cools.isEmpty(pla)){
|
pla.setQtyAnfme(pla.getQtyAnfme() - pakout.getAnfme());
|
pla.setModifyTime(new Date());
|
if(pla.getQtyAnfme() <= 0){
|
pla.setStatus(GlobleParameter.PLA_STATUS_1);
|
}
|
plaService.updateById(pla);
|
plaQtyService.deleteById(pakout.getNodeId());
|
|
}else {
|
ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>()
|
.eq("loc_no", pakout.getLocNo())
|
.eq("matnr", pakout.getMatnr()));
|
manLocDetl.setStatus(1);
|
if (!manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>()
|
.eq("loc_no", pakout.getLocNo())
|
.eq("matnr", pakout.getMatnr()))){
|
throw new RuntimeException("库存状态更新失败");
|
}
|
}
|
}
|
|
if (!delete(new EntityWrapper<Pakout>().eq("doc_num",docNum))){
|
throw new RuntimeException("拣货单删除失败");
|
}
|
}
|
|
@Override
|
@Transactional
|
public void deletePakoutByWrkNo(String wrkNo) {
|
Pakout pakout = this.selectById(wrkNo);
|
//更新单据信息
|
if(pakout.getCount() > 0){
|
throw new CoolException("该条拣货信息已完成,无法删除");
|
}
|
OrderDetl orderDetl = orderDetlService.selectById(pakout.getDocId());
|
orderDetl.setWorkQty(orderDetl.getWorkQty() - pakout.getAnfme());
|
orderDetl.setUpdateTime(new Date());
|
orderDetlService.updateById(orderDetl);
|
|
Order order = orderService.selectByNo(pakout.getDocNum());
|
List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
|
//判断单据是否有正在作业的任务,true为没有
|
boolean flag = true;
|
for (OrderDetl od : orderDetlList){
|
if(od.getWorkQty() + od.getQty() > 0){
|
flag = false;
|
}
|
}
|
|
if(flag){
|
order.setSettle(1L);
|
order.setUpdateTime(new Date());
|
orderService.updateById(order);
|
}
|
|
//更新pla信息
|
Pla pla = plaService.selectByBatchAndPackageNo(pakout.getBatch(), pakout.getBarcode());
|
pla.setQtyAnfme(pla.getQtyAnfme() - pakout.getAnfme());
|
pla.setStatus(GlobleParameter.PLA_STATUS_1);
|
pla.setModifyTime(new Date());
|
plaService.updateById(pla);
|
|
//更新plaQty信息
|
plaQtyService.deleteById(pakout.getNodeId());
|
|
//删除拣货单
|
this.deleteById(wrkNo);
|
|
}
|
}
|