|  |  |  | 
|---|
|  |  |  | 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.common.DateUtils; | 
|---|
|  |  |  | import com.core.common.SnowflakeIdWorker; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.mapper.OrderDetlMapper; | 
|---|
|  |  |  | import com.zy.asrs.mapper.OrderMapper; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.service.impl.ServiceImpl; | 
|---|
|  |  |  | import com.zy.common.model.DetlDto; | 
|---|
|  |  |  | import com.zy.common.model.OrderDto; | 
|---|
|  |  |  | import com.zy.common.model.OrderMergeVo; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WrkDetlService wrkDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MatService matService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Order selectByNo(String orderNo) { | 
|---|
|  |  |  | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (complete) { | 
|---|
|  |  |  | if (complete && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) == 0) { | 
|---|
|  |  |  | // 出库订单重新整理明细 | 
|---|
|  |  |  | DocType docType = docTypeService.selectById(order.getDocType()); | 
|---|
|  |  |  | if (null != docType && docType.getPakout() == 1) { | 
|---|
|  |  |  | // 重组明细 | 
|---|
|  |  |  | if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { | 
|---|
|  |  |  | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("修改单据明细数量失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 工作档明细更新单据编号 | 
|---|
|  |  |  | for (WrkDetl wrkDetl : wrkDetls) { | 
|---|
|  |  |  | wrkDetlService.updateOrderNo(orderNo, wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | 
|---|
|  |  |  | orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", orderId)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<Order> selectComplete() { | 
|---|
|  |  |  | return this.baseMapper.selectComplete(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<OrderMergeVo> mergePreview(List<Long> ids) { | 
|---|
|  |  |  | List<OrderMergeVo> result = new ArrayList<>(); | 
|---|
|  |  |  | for (Long orderId : ids) { | 
|---|
|  |  |  | Order order = this.selectById(orderId); | 
|---|
|  |  |  | // 获取所有未作业的明细 | 
|---|
|  |  |  | List<OrderDetl> orderDetls = orderDetlService.selectRemainder(orderId); | 
|---|
|  |  |  | for (OrderDetl orderDetl : orderDetls) { | 
|---|
|  |  |  | Double leave = orderDetl.getAnfme() - orderDetl.getQty(); | 
|---|
|  |  |  | OrderMergeVo vo = new OrderMergeVo(orderDetl.getMatnr(), orderDetl.getBatch(), leave); | 
|---|
|  |  |  | OrderDto orderDto = new OrderDto(orderDetl.getOrderNo(), null, leave); | 
|---|
|  |  |  | if (OrderMergeVo.has(result, vo)) { | 
|---|
|  |  |  | OrderMergeVo exist = OrderMergeVo.find(result, vo.getMatnr(), vo.getBatch()); | 
|---|
|  |  |  | assert exist != null; | 
|---|
|  |  |  | exist.setAnfme(exist.getAnfme() + vo.getAnfme()); | 
|---|
|  |  |  | exist.getOrderDtos().add(orderDto); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | vo.getOrderDtos().add(orderDto); | 
|---|
|  |  |  | result.add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (OrderMergeVo vo : result) { | 
|---|
|  |  |  | Mat mat = matService.selectByMatnr(vo.getMatnr()); | 
|---|
|  |  |  | assert mat != null; | 
|---|
|  |  |  | vo.setMaktx(mat.getMaktx()); | 
|---|
|  |  |  | vo.setSpecs(mat.getSpecs()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|