自动化立体仓库 - WMS系统
zyx
2024-03-01 aa310a47a05110a393c508921c92fa17ea95b491
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,12 +3,14 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.InOutCountDto;
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
@@ -48,6 +50,18 @@
    private TagService tagService;
    @Autowired
    private TagMapper tagMapper;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private NodeService nodeService;
    @Autowired
    private ManLocDetlService manLocDetlService;
    @Autowired
    private ManPakOutService manPakOutService;
    @Autowired
    private LocOwnerService locOwnerService;
    @Autowired
    private ReportQueryMapper reportQueryMapper;
    @Override
    @Transactional
@@ -55,6 +69,19 @@
        Order order = orderService.selectByNo(param.getOrderNo());
        if (!Cools.isEmpty(order)) {
            throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交");
        }
        for (DetlDto detlDto : param.getOrderDetails()){
            if (Cools.isEmpty(detlDto) || Cools.isEmpty(detlDto.getOwnerName(),detlDto.getPayment())){
                throw new CoolException(param.getOrderNo() + "缺少货主或货物形态");
            }else {
                LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner", detlDto.getOwnerName()));
                if (Cools.isEmpty(locOwner)){
                    LocOwner locOwner1 = new LocOwner();
                    locOwner1.setOwner(detlDto.getOwnerName());
                    locOwnerService.insert(locOwner1);
                }
            }
        }
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
        Date now = new Date();
@@ -102,7 +129,7 @@
        List<DetlDto> list = new ArrayList<>();
        List<DetlDto> orderDetails = param.getOrderDetails();
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                assert detlDto != null;
@@ -110,6 +137,7 @@
            } else {
                list.add(dto);
            }
            dto.setWeight(detail.getWeight());
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -122,7 +150,7 @@
            //批号为空会出现问题,设置一个默认值
            if (detlDto.getBatch() == null) {
                orderDetl.setBatch("");
            }else {
            } else {
                orderDetl.setBatch(detlDto.getBatch());
            }
@@ -133,59 +161,21 @@
            orderDetl.setCreateTime(now);
            orderDetl.setUpdateBy(9527L);
            orderDetl.setUpdateTime(now);
            LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner", detlDto.getOwnerName()));
            if (Cools.isEmpty(locOwner)){
                throw new CoolException("生成单据明细失败,请联系管理员");
            }else {
                orderDetl.setOwner(locOwner.getId().intValue());
            }
            orderDetl.setPayment(detlDto.getPayment());
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setWeight(detlDto.getWeight());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
    }
//    @Override
//    @Transactional
//    public List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param) {
//        List<OpenOrderCompeteResult> results = new ArrayList<>();
//        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
//            // 指定订单
//            Order order = orderService.selectByNo(param.getOrderNo());
//            if (null != order) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                if (order.getSettle() == 4L) {
//                    // 修改订单状态 4.完成 ===>> 6.已上报
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                        throw new CoolException("服务器内部错误,请联系管理员");
//                    }
//                }
//            }
//        } else {
//            // 所有订单
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
//            for (Order order : orders) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                // 修改订单状态 4.完成 ===>> 6.已上报
//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                }
//            }
//        }
//        return results;
//    }
    @Override
    @Transactional
@@ -252,6 +242,7 @@
            } else {
                list.add(dto);
            }
            dto.setWeight(detail.getWeight());
        }
        for (DetlDto detlDto : list) {
            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -270,61 +261,17 @@
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setWeight(detlDto.getWeight());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
        }
    }
//    @Override
//    public List<OpenOrderCompeteResult> pakoutOrderComplete(OpenOrderCompleteParam param) {
//        List<OpenOrderCompeteResult> results = new ArrayList<>();
//        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
//            // 指定订单
//            Order order = orderService.selectByNo(param.getOrderNo());
//            if (null != order) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                if (order.getSettle() == 4L) {
//                    // 修改订单状态 4.完成 ===>> 6.已上报
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                        throw new CoolException("服务器内部错误,请联系管理员");
//                    }
//                }
//            }
//        } else {
//            // 所有订单
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
//            for (Order order : orders) {
//                OpenOrderCompeteResult result = new OpenOrderCompeteResult();
//                results.add(result);
//                result.setOrderNo(order.getOrderNo());
//                result.setOrderTime(order.getOrderTime());
//                result.setOrderType(order.getDocType$());
//                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
//                for (OrderDetl orderDetl : orderDetls) {
//                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
//                }
//                // 修改订单状态 4.完成 ===>> 6.已上报
//                if (!orderService.updateSettle(order.getId(), 6L, null)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                }
//            }
//        }
//        return results;
//    }
    @Override
    @Transactional
    public List<StockVo> queryStock() {
        return locDetlService.queryStockTotal();
    public List<StockVo> queryStock(StockVo stockVo) {
        return locDetlService.queryStockTotal(stockVo);
    }
    @Override
@@ -445,12 +392,12 @@
    @Override
    @Transactional
    public void syncMat(MatSyncParam param) {
        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) {
        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <= 0) {
            throw new CoolException("商品数据为空");
        }
        for(MatSyncParam.MatParam matParam : param.getMatDetails()){
            if(Cools.isEmpty(matParam.getMatnr())){
        for (MatSyncParam.MatParam matParam : param.getMatDetails()) {
            if (Cools.isEmpty(matParam.getMatnr())) {
                throw new CoolException("商品编码不能为空");
            }
@@ -536,6 +483,9 @@
                mat.setStatus(1);
                mat.setCreateTime(now);
                mat.setUpdateTime(now);
                if (Cools.isEmpty(matParam.getLength()) || matParam.getLength() == 0) {
                    mat.setLength(null);
                }
                if (!matService.insert(mat)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                } else {
@@ -543,7 +493,7 @@
                }
            } else {
                mat.sync(param);
                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
                    throw new CoolException("更新已存在商品信息失败,请联系管理员");
                }
            }
@@ -551,4 +501,43 @@
    }
    @Override
    public R getInOutDetl() {
        List<InOutCountDto> top100 = wrkMastService.selectTop100();
        return R.ok().add(top100);
    }
    /*
    * 速腾数字孪生调用接口
    * */
    @Override
    public DigitalTwin inventoryQuantity() {
        DigitalTwin digitalTwin = new DigitalTwin();
        LocChartPie locUseRate = reportQueryMapper.getLocUseRate();
        LocChartPie locUseRateL = reportQueryMapper.getLocUseRateL();
        LocChartPie locUseRateP = reportQueryMapper.getLocUseRateP();
        if(locUseRate!=null) {
            digitalTwin.setCount(locUseRate.getOqty()+locUseRate.getFqty()+locUseRate.getUqty()+locUseRate.getXqty());
            digitalTwin.setOqty(locUseRate.getOqty());
            digitalTwin.setFqty(locUseRate.getFqty());
            digitalTwin.setUqty(locUseRate.getUqty());
            digitalTwin.setXqty(locUseRate.getXqty());
        }
        if(locUseRateL!=null) {
            digitalTwin.setCountL(locUseRateL.getOqty()+locUseRateL.getFqty()+locUseRateL.getUqty()+locUseRateL.getXqty());
            digitalTwin.setOqtyL(locUseRateL.getOqty());
            digitalTwin.setFqtyL(locUseRateL.getFqty());
            digitalTwin.setUqtyL(locUseRateL.getUqty());
            digitalTwin.setXqtyL(locUseRateL.getXqty());
        }
        if (locUseRateP!=null){
            digitalTwin.setCountP(locUseRateP.getOqty()+locUseRateP.getFqty()+locUseRateP.getUqty()+locUseRateP.getXqty());
            digitalTwin.setOqtyP(locUseRateP.getOqty());
            digitalTwin.setFqtyP(locUseRateP.getFqty());
            digitalTwin.setUqtyP(locUseRateP.getUqty());
            digitalTwin.setXqtyP(locUseRateP.getXqty());
        }
        return digitalTwin;
    }
}