zwl
2025-09-12 7e10622ead5bd8b3ce0c9fda39d22ae0e938e030
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderDetlController.java
@@ -3,10 +3,11 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.wms.entity.OrderDetl;
import com.zy.asrs.common.wms.service.OrderDetlService;
import com.zy.asrs.common.wms.entity.*;
import com.zy.asrs.common.wms.service.*;
import com.zy.asrs.framework.annotations.ManagerAuth;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
@@ -23,6 +24,26 @@
    @Autowired
    private OrderDetlService orderDetlService;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private WorkService workService;
    @Autowired
    private LocDetlService locDetlService;
    @RequestMapping(value = "/orderDetl/forOrderNo/auth")
    @ManagerAuth
    public R forOrderNo(@RequestParam String orderNo) {
        return R.ok(orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo,orderNo).eq(OrderDetl::getHostId,getHostId())));
    }
    @RequestMapping(value = "/orderDetl/{id}/auth")
    @ManagerAuth
@@ -53,6 +74,87 @@
        return R.ok(orderDetlService.page(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/orderDetl/forOrderNo/auth/v1")
    @ManagerAuth
    public R forOrderNoV1(@RequestParam String orderNo,@RequestParam String locNo,@RequestParam String batch,@RequestParam String matnr) {
        LambdaQueryWrapper<LocDetl> locDetlLambdaQueryWrapper = new LambdaQueryWrapper<LocDetl>()
                .eq(LocDetl::getLocNo, locNo)
                .eq(LocDetl::getHostId, getHostId())
                .eq(LocDetl::getMatnr, matnr);
        List<LocDetl> detls = locDetlService.list(locDetlLambdaQueryWrapper);
        if (Cools.isEmpty(detls)){
            return R.error("未查询到库存数据");
        }
        if (detls.size()>1){
            return R.error("库存数据大于1条,为保证数据准确性,请用正常流程出库!!!");
        }
        List<OrderDetl> orderDetlList = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>()
                .eq(OrderDetl::getMatnr, matnr)
                .eq(OrderDetl::getHostId, getHostId())
                .like(OrderDetl::getOrderNo, orderNo)
        );
        if (Cools.isEmpty(orderDetlList)){
            return R.error("未查询到此订单此物料数据");
        }
        if (orderDetlList.size()>1){
            return R.error("此订单此物料数据数据大于1条,为保证数据准确性,请用正常流程出库!!!");
        }
        ArrayList<OrderDetl> orderDetls = new ArrayList<>();
        for(OrderDetl orderDetl:orderDetlList){
            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
            if (count <= 0D) {
                continue;
            }
            orderDetl.setAnfme(count);
            orderDetls.add(orderDetl);
        }
        return R.ok(orderDetls);
    }
    @RequestMapping(value = "/orderDetl/forOrderNo/mergePakin/v1")
    @ManagerAuth
    public R forOrderNoMergePakinV1(@RequestParam String orderNo) {
        List<DocType> docTypes = docTypeService.list(new LambdaQueryWrapper<DocType>().eq(DocType::getPakin, 1));
        ArrayList<Long> docTypeIds = new ArrayList<>();
        for (DocType docType : docTypes) {
            docTypeIds.add(docType.getDocId());
        }
        if (docTypeIds.isEmpty()) {
            return R.error("单据类型不存在");
        }
        List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getDocType, docTypeIds).in(Order::getSettle, 0, 1, 2));
        if (orders.isEmpty()) {
            return R.error("未查询到订单");
        }
        ArrayList<Long> orderIds = new ArrayList<>();
        for (Order order : orders) {
            orderIds.add(order.getId());
        }
        List<OrderDetl> orderDetlList = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>()
                .eq(OrderDetl::getHostId, getHostId())
                .in(OrderDetl::getOrderId, orderIds)
                .like(OrderDetl::getOrderNo, orderNo)
        );
        if (Cools.isEmpty(orderDetlList)){
            return R.error("未查询到此订单此物料数据");
        }
        ArrayList<OrderDetl> orderDetls = new ArrayList<>();
        for(OrderDetl orderDetl:orderDetlList){
            double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
            if (count <= 0D) {
                continue;
            }
            orderDetl.setAnfme(count);
            orderDetls.add(orderDetl);
        }
        return R.ok(orderDetls);
    }
    @RequestMapping(value = "/orderDetl/add/auth")
    @ManagerAuth
@@ -61,6 +163,49 @@
        orderDetlService.save(orderDetl);
        return R.ok();
    }
    @RequestMapping(value = "/order/cancel/wrk/auth")
    @ManagerAuth
    public R cancelWrk(String orderId) {
        Order order = orderService.getById(orderId);
        DocType docType = docTypeService.getById(order.getDocType());
        if (null != docType && docType.getPakin() == 1) {
            List<WaitPakin> waitPakinList = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getOrderNo, order.getOrderNo()));
            if (!Cools.isEmpty(waitPakinList)){
                for (WaitPakin entity : waitPakinList){
                    List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("barcode", entity.getZpallet()));
                    if(!Cools.isEmpty(wrkMasts) || wrkMasts.size() > 0){
                        continue;
                    }
                    waitPakinService.removeById(entity.getId());
                    //订单关联,修改订单作业数量
                    if (!Cools.isEmpty(entity.getOrderNo())) {
                        if (!orderDetlService.decrease(entity.getOrderNo(),entity.getHostId(), entity.getMatnr(), entity.getBatch(), entity.getAnfme())) {
                            return R.error("订单数据回滚失败");
                        }
                    }
                }
            }
        } else if (null != docType && docType.getPakout() == 1) {
            List<WrkDetl> wrkDetlList = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getOrderNo, order.getOrderNo()));
            if (!Cools.isEmpty(wrkDetlList)){
                List<Integer> wrkNoList = new ArrayList<>();
               for (WrkDetl wrkDetl:wrkDetlList){
                   if (!wrkNoList.contains(wrkDetl.getWrkNo())){
                       wrkNoList.add(wrkDetl.getWrkNo());
                   }
               }
               for (Integer wrkNo:wrkNoList){
                   List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_no", wrkNo));
                   if (wrkMasts.size()==1){
                       if (wrkMasts.get(0).getWrkSts()==101){
                           workService.cancelWrkMast(wrkNo.toString(), getUserId(), getHostId());
                       }
                   }
               }
            }
        }
        return R.ok();
    }
   @RequestMapping(value = "/orderDetl/update/auth")
   @ManagerAuth