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 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 orderDetls = orderDetlService.selectList(new EntityWrapper().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 pakouts = selectList(new EntityWrapper().eq("doc_num", docNum)); for (Pakout pakout: pakouts){ Pla pla = plaService.selectByBatchAndPackageNo(pakout.getBatch(), Integer.parseInt(pakout.getBarcode()), pakout.getMaktx()); 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() .eq("loc_no", pakout.getLocNo()) .eq("matnr", pakout.getMatnr())); manLocDetl.setStatus(1); if (!manLocDetlService.update(manLocDetl,new EntityWrapper() .eq("loc_no", pakout.getLocNo()) .eq("matnr", pakout.getMatnr()))){ throw new RuntimeException("库存状态更新失败"); } } } if (!delete(new EntityWrapper().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 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(), Integer.parseInt(pakout.getBarcode()),pakout.getMaktx()); 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); } }