自动化立体仓库 - WMS系统
zc
22 小时以前 e4758766ab64095ff52973eabdaec32568bd2fc7
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,8 +1,8 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -14,6 +14,7 @@
import com.zy.asrs.utils.MatUtils;
import com.zy.common.model.DetlDto;
import com.zy.common.utils.NodeUtils;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -56,9 +57,20 @@
    @Autowired
    private WrkDetlLogServiceImpl wrkDetlLogService;
    @Autowired
    private ApiLogService apiLogService;
    public void callApiLogSaveOrder(Object order,  String name, Boolean bool) {
        apiLogService.save(name, "null", null,null,
                 JSON.toJSONString(order),
                null, bool);
    }
    @Override
    @Transactional
    public void pakinOrderCreate(OpenOrderPakinParam param) {
        callApiLogSaveOrder(param,"入库单", true);
        Order order = orderService.selectByNo(param.getOrderNo());
        if (!Cools.isEmpty(order) && order.getSettle() !=1) {
            throw new CoolException(param.getOrderNo() + "单据已有工作任务");
@@ -107,14 +119,16 @@
                now,    // 修改时间
                null    // 备注
        );
        order.setShipCode(String.valueOf(param.getDetails().get(0).getQuality()));
        if (!orderService.insert(order)) {
            throw new CoolException("生成单据主档失败,请联系管理员");
        }
        // 单据明细档
        List<DetlDto> list = new ArrayList<>();
        List<DetlDto> orderDetails = param.getOrderDetails();
        List<DetlDto> orderDetails = param.getDetails();
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(), detail.getMark());
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getFromOrderNo()
                    , detail.getMark(),detail.getCustomer(),detail.getSuppName(),detail.getTemp1(),detail.getTemp2(),detail.getTemp3(),detail.getTemp4());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                assert detlDto != null;
@@ -144,6 +158,12 @@
            orderDetl.setSuppCode(detlDto.getFromOrderNo());
            orderDetl.setMemo(detlDto.getMemo());
            orderDetl.setManu(detlDto.getMark());
            orderDetl.setSupp(detlDto.getSuppName()); //供应商
            orderDetl.setSku(detlDto.getCustomer());
            orderDetl.setTemp1(detlDto.getTemp1());
            orderDetl.setTemp2(detlDto.getTemp2());
            orderDetl.setTemp3(detlDto.getTemp3());
            orderDetl.setTemp4(detlDto.getTemp4());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
@@ -153,6 +173,7 @@
    @Override
    @Transactional
    public List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param) {
        callApiLogSaveOrder(param,"出库单", true);
        List<OpenOrderCompeteResult> results = new ArrayList<>();
        if (!Cools.isEmpty(param) && !Cools.isEmpty(param.getOrderNo())) {
            // 指定订单
@@ -199,6 +220,7 @@
    @Override
    @Transactional
    public void pakoutOrderCreate(OpenOrderPakoutParam param) {
        callApiLogSaveOrder(param,"出库单", true);
        Order order = orderService.selectByNo(param.getOrderNo());
        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
        if (!Cools.isEmpty(order)) {
@@ -246,14 +268,17 @@
                now,    // 修改时间
                null    // 备注
        );
        order.setShipCode(param.getQuality());
        if (!orderService.insert(order)) {
            throw new CoolException("生成单据主档失败,请联系管理员");
        }
        // 单据明细档
        List<DetlDto> list = new ArrayList<>();
        List<DetlDto> orderDetails = param.getOrderDetails();
        List<DetlDto> orderDetails = param.getDetails();
        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.getFromOrderNo()
                    , detail.getMark(),detail.getCustomer(),detail.getSuppName(),detail.getTemp1(),detail.getTemp2(),detail.getTemp3(),detail.getTemp4());
            dto.setTemp1(param.getQuality());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                assert detlDto != null;
@@ -283,6 +308,12 @@
            orderDetl.setSuppCode(detlDto.getFromOrderNo());
            orderDetl.setMemo(detlDto.getMemo());
            orderDetl.setManu(detlDto.getMark());
            orderDetl.setSupp(detlDto.getSuppName());
            orderDetl.setSku(detlDto.getCustomer());
            orderDetl.setTemp1(detlDto.getTemp1());
            orderDetl.setTemp2(detlDto.getTemp2());
            orderDetl.setTemp3(detlDto.getTemp3());
            orderDetl.setTemp4(detlDto.getTemp4());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
@@ -462,6 +493,10 @@
            throw new CoolException("商品数据为空");
        }
        for(MatSyncParam.MatParam matParam : param.getMatDetails()){
            if(Cools.isEmpty(matParam.getMatnr())){
                throw new CoolException("商品编码不能为空");
@@ -472,15 +507,15 @@
            // 分类
            Long tagId;
            // 一级分类
            if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
                Tag priTag = tagService.selectByName(matParam.getGroupCode(), 1);
            if (!Cools.isEmpty(matParam.getTagId()) && !Cools.isEmpty(matParam.getGroupName())) {
                Tag priTag = tagService.selectByName(matParam.getTagId(), 1);
                if (priTag == null) {
                    Tag top = tagService.getTop();
                    NodeUtils nodeUtils = new NodeUtils();
                    nodeUtils.executePath(top.getId());
                    priTag = new Tag(
                            null,    // 编号
                            matParam.getGroupCode(),    // 名称
                            matParam.getTagId(),    // 名称
                            top.getId(),    // 父级
                            top.getName(),    // 父级名称
                            nodeUtils.path.toString(),    // 关联路径
@@ -562,6 +597,40 @@
                    throw new CoolException("更新已存在商品信息失败,请联系管理员");
                }
            }
            //Tag tag = tagService.selectOne(new EntityWrapper<Tag>().eq("memo", matParam.getTagId()));
//            if (tag == null) {
//                throw new CoolException("出错,未找到分类");
//            }
//            if (mat == null) {
//                mat = new Mat();
//                mat.sync(matParam);
////            mat.setMatnr(param.getMatnr());
////            mat.setMaktx(param.getMaktx());
////            mat.setSpecs(param.getSpecs());
////            mat.setModel(param.getModel());
//
//                mat.setTagId(tag.getId());
//                mat.setStatus(1);
//                mat.setCreateTime(now);
//                mat.setUpdateTime(now);
//                if (!matService.insert(mat)) {
//                    throw new CoolException("服务器内部错误,请联系管理员");
//                } else {
//                    log.info("同步新物料[商品编号:{}]", mat.getMatnr());
//                }
//            } else {
//                mat.sync(matParam);
//                mat.setTagId(tag.getId());
//                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
//                    throw new CoolException("更新已存在商品信息失败,请联系管理员");
//                }
//            }
        }
    }
@@ -579,22 +648,24 @@
                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>()
                        .eq("wrk_no", wrkMastLog.getWrkNo()).eq("zpallet", wrkMastLog.getBarcode()));
                wrkDetlLogs.forEach(wrkDetlLog -> {
                    LocDetlByTimeDTO locDetlByTimeDTO = new LocDetlByTimeDTO();
                    if (!Cools.isEmpty(wrkDetlLog.getOrderNo())){
                        Order order = orderService.selectByNo(wrkDetlLog.getOrderNo());
                        if (!Cools.isEmpty(order)) {
                            locDetlByTimeDTO.setDate(order.getOrderTime());
                            locDetlByTimeDTO.setWarehouse(order.getItemName());
                            locDetlByTimeDTO.setOrderType(order.getDocType$());
                    if (wrkDetlLog.getOrderNo() != null && !wrkDetlLog.getOrderNo().isEmpty()) {
                        LocDetlByTimeDTO locDetlByTimeDTO = new LocDetlByTimeDTO();
                        if (!Cools.isEmpty(wrkDetlLog.getOrderNo())){
                            Order order = orderService.selectByNo(wrkDetlLog.getOrderNo());
                            if (!Cools.isEmpty(order)) {
                                locDetlByTimeDTO.setDate(order.getOrderTime());
                                locDetlByTimeDTO.setWarehouse(order.getItemName());
                                locDetlByTimeDTO.setOrderType(order.getDocType$());
                            }
                            locDetlByTimeDTO.setMatnr(wrkDetlLog.getMatnr());
                            locDetlByTimeDTO.setLocNo(wrkMastLog.getIoType() <100? wrkMastLog.getLocNo(): wrkMastLog.getSourceLocNo());
                            locDetlByTimeDTO.setBatch(wrkDetlLog.getBatch());
                            locDetlByTimeDTO.setAnfme(wrkDetlLog.getAnfme());
                            locDetlByTimeDTO.setOrderNo(wrkDetlLog.getOrderNo());
                            locDetlByTimeDTO.setMark(wrkDetlLog.getManu());
                            locDetlByTimeDTO.setWorkNo(wrkDetlLog.getWrkNo().toString());
                            locDetlByTimeDTOS.add(locDetlByTimeDTO);
                        }
                        locDetlByTimeDTO.setMatnr(wrkDetlLog.getMatnr());
                        locDetlByTimeDTO.setLocNo(wrkMastLog.getIoType() <100? wrkMastLog.getLocNo(): wrkMastLog.getSourceLocNo());
                        locDetlByTimeDTO.setBatch(wrkDetlLog.getBatch());
                        locDetlByTimeDTO.setAnfme(wrkDetlLog.getAnfme());
                        locDetlByTimeDTO.setOrderNo(wrkDetlLog.getOrderNo());
                        locDetlByTimeDTO.setMark(wrkDetlLog.getManu());
                        locDetlByTimeDTO.setWorkNo(wrkDetlLog.getWrkNo().toString());
                        locDetlByTimeDTOS.add(locDetlByTimeDTO);
                    }
                });
@@ -765,4 +836,20 @@
            }
        });
    }
    @Transactional
    @Override
    public void orderDelete(String orderNo) {
        Order order = orderService.selectByNo(orderNo);
        if (order == null) {
            throw new CoolException("未查询到对应订单信息");
        }
        if (order.getSettle() != 1){
            throw new CoolException("该订单已有对应任务,禁止删除");
        }
        List<OrderDetl> OrderDetl = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
        if (!Cools.isEmpty(OrderDetl)) {
            orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
        }
        orderService.delete(new EntityWrapper<Order>().eq("order_no", orderNo));
    }
}