自动化立体仓库 - WMS系统
cl
20 小时以前 042ecb8af79454dd05a752de2a02f677a8da3f3a
src/main/java/com/zy/asrs/controller/OutController.java
@@ -13,6 +13,7 @@
import com.zy.common.model.OrderMergeVo;
import com.zy.common.model.TaskDto;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -23,7 +24,7 @@
/**
 * Created by vincent on 2022/3/26
 */
@Slf4j
@RestController
public class OutController extends BaseController {
@@ -76,37 +77,41 @@
        List<LocDto> locDtoList = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetlList) {
            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
            Order order = orderService.selectByNo(orderDetl.getOrderNo());
            DocType docType = docTypeService.selectById(order.getDocType());
            if("人工补货单".equals(docType.getDocName())){
                if (issued <= 0.0D) { continue; }
                issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                if (issued > 0) {
                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                    locDto.setLack(Boolean.TRUE);
                    locDtoList.add(locDto);
            try {
                double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
                Order order = orderService.selectByNo(orderDetl.getOrderNo());
                DocType docType = docTypeService.selectById(order.getDocType());
                if("人工补货单".equals(docType.getDocName())){
                    if (issued <= 0.0D) { continue; }
                    issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                    if (issued > 0) {
                        LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                        locDto.setLack(Boolean.TRUE);
                        locDtoList.add(locDto);
                    }
                }else {
                    if (issued <= 0.0D) { continue; }
                    //从平库寻找
                    issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                    //先找AGV的库存,如果返回的issued大于0,则去四项库找
                    issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                    //从四项库的库存里面找,
                    issued = locDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                    if (issued > 0) {
                        LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                        locDto.setLack(Boolean.TRUE);
                        locDtoList.add(locDto);
                    }
                }
            }else {
                if (issued <= 0.0D) { continue; }
                //从平库寻找
                issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                //先找AGV的库存,如果返回的issued大于0,则去四项库找
                issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                //从四项库的库存里面找,
                issued = locDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                if (issued > 0) {
                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                    locDto.setLack(Boolean.TRUE);
                    locDtoList.add(locDto);
                }
            } catch (Exception e) {
                // 单条明细异常时记录并继续
                log.error("出库预览异常 orderDetlId={} orderNo={} matnr={}", orderDetl.getId(), orderDetl.getOrderNo(), orderDetl.getMatnr(), e);
                e.printStackTrace();
            }
        }
        return R.ok().add(locDtoList);
@@ -116,7 +121,7 @@
    @ManagerAuth(memo = "订单出库")
    @Transactional
    public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
        log.info("订单出库:{}", locDtos);
        //判断是否可以生成出库工作档
        boolean lack = true;
        for (LocDto locDto : locDtos) {
@@ -163,7 +168,9 @@
    @RequestMapping(value = "/order/merge/preview/auth")
    @ManagerAuth
    public R mergePreview(@RequestParam(value = "orderIds[]") List<Long> orderIds){
        return R.ok().add(orderService.mergePreview(orderIds));
        List<OrderMergeVo> orderMergeVos = orderService.mergePreview(orderIds);
        log.info("合并出库汇总locDtoList:{}", orderMergeVos);
        return R.ok().add(orderMergeVos);
    }
    @PostMapping("/out/pakout/preview/merge/auth")
@@ -190,7 +197,7 @@
            }
        }
        log.info("合并出库预览locDtoList:{}", locDtoList);
        return R.ok().add(locDtoList);
    }