package com.zy.asrs.service.impl; 
 | 
  
 | 
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.*; 
 | 
import com.zy.asrs.entity.param.*; 
 | 
import com.zy.asrs.entity.result.OpenOrderCompeteResult; 
 | 
import com.zy.asrs.entity.result.StockVo; 
 | 
import com.zy.asrs.mapper.TagMapper; 
 | 
import com.zy.asrs.service.*; 
 | 
import com.zy.asrs.utils.MatUtils; 
 | 
import com.zy.asrs.utils.OrderInAndOutUtil; 
 | 
import com.zy.common.model.DetlDto; 
 | 
import com.zy.common.utils.NodeUtils; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * Created by vincent on 2022/4/9 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class OpenServiceImpl implements OpenService { 
 | 
  
 | 
    @Autowired 
 | 
    private OrderService orderService; 
 | 
    @Autowired 
 | 
    private OrderDetlService orderDetlService; 
 | 
    @Autowired 
 | 
    private SnowflakeIdWorker snowflakeIdWorker; 
 | 
    @Autowired 
 | 
    private DocTypeService docTypeService; 
 | 
    @Autowired 
 | 
    private MatService matService; 
 | 
    @Autowired 
 | 
    private LocDetlService locDetlService; 
 | 
    @Autowired 
 | 
    private PackService packService; 
 | 
    @Autowired 
 | 
    private TagService tagService; 
 | 
    @Autowired 
 | 
    private TagMapper tagMapper; 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void pakinOrderCreate(OpenOrderPakinParam param) { 
 | 
        Order order = orderService.selectByNo(param.getOrderNo()); 
 | 
        if (!Cools.isEmpty(order)) { 
 | 
            throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交"); 
 | 
        } 
 | 
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE); 
 | 
        Date now = new Date(); 
 | 
        // 单据主档 
 | 
        order = new Order( 
 | 
                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空] 
 | 
                param.getOrderNo(),    // 订单编号 
 | 
                DateUtils.convert(now),    // 单据日期 
 | 
                docType.getDocId(),    // 单据类型 
 | 
                null,    // 项目编号 
 | 
                null,    // 
 | 
                null,    // 调拨项目编号 
 | 
                null,    // 初始票据号 
 | 
                null,    // 票据号 
 | 
                null,    // 客户编号 
 | 
                null,    // 客户 
 | 
                null,    // 联系方式 
 | 
                null,    // 操作人员 
 | 
                null,    // 合计金额 
 | 
                null,    // 优惠率 
 | 
                null,    // 优惠金额 
 | 
                null,    // 销售或采购费用合计 
 | 
                null,    // 实付金额 
 | 
                null,    // 付款类型 
 | 
                null,    // 业务员 
 | 
                null,    // 结算天数 
 | 
                null,    // 邮费支付类型 
 | 
                null,    // 邮费 
 | 
                null,    // 付款时间 
 | 
                null,    // 发货时间 
 | 
                null,    // 物流名称 
 | 
                null,    // 物流单号 
 | 
                1L,    // 订单状态 
 | 
                1,    // 状态 
 | 
                9527L,    // 添加人员 
 | 
                now,    // 添加时间 
 | 
                9527L,    // 修改人员 
 | 
                now,    // 修改时间 
 | 
                null,   // 备注 
 | 
                1 
 | 
        ); 
 | 
        if (!orderService.insert(order)) { 
 | 
            throw new CoolException("生成单据主档失败,请联系管理员"); 
 | 
        } 
 | 
        // 单据明细档 
 | 
        List<DetlDto> list = new ArrayList<>(); 
 | 
        List<DetlDto> orderDetails = param.getOrderDetails(); 
 | 
        for (DetlDto detail : orderDetails) { 
 | 
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(),detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme()); 
 | 
            if (DetlDto.hasLineNumber(list, dto)) { 
 | 
                DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getLineNumber(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3()); 
 | 
                assert detlDto != null; 
 | 
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme()); 
 | 
            } else { 
 | 
                list.add(dto); 
 | 
            } 
 | 
        } 
 | 
        for (DetlDto detlDto : list) { 
 | 
            Mat mat = matService.selectByMatnr(detlDto.getMatnr()); 
 | 
            if (Cools.isEmpty(mat)) { 
 | 
                throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品"); 
 | 
            } 
 | 
            OrderDetl orderDetl = new OrderDetl(); 
 | 
            orderDetl.sync(mat); 
 | 
            orderDetl.setLineNumber(detlDto.getLineNumber()); 
 | 
            orderDetl.setBatch(detlDto.getBatch()); 
 | 
            orderDetl.setAnfme(detlDto.getAnfme()); 
 | 
            orderDetl.setBrand(detlDto.getBrand()); 
 | 
            orderDetl.setStandby1(detlDto.getStandby1()); 
 | 
            orderDetl.setStandby2(detlDto.getStandby2()); 
 | 
            orderDetl.setStandby3(detlDto.getStandby3()); 
 | 
            orderDetl.setOrderId(order.getId()); 
 | 
            orderDetl.setOrderNo(order.getOrderNo()); 
 | 
            orderDetl.setCreateBy(9527L); 
 | 
            orderDetl.setCreateTime(now); 
 | 
            orderDetl.setUpdateBy(9527L); 
 | 
            orderDetl.setUpdateTime(now); 
 | 
            orderDetl.setStatus(1); 
 | 
            orderDetl.setQty(0.0D); 
 | 
            orderDetl.setPakinPakoutStatus(1); 
 | 
            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()); 
 | 
  
 | 
//            Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE,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()); 
 | 
//                List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); 
 | 
                for (OrderDetl orderDetl : orderDetls) { 
 | 
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(), 
 | 
                            orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(), 
 | 
                            orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), orderDetl.getQty())); 
 | 
                } 
 | 
                if (order.getSettle() == 4L) { 
 | 
                    // 修改订单状态 4.完成 ===>> 6.已上报 
 | 
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) { 
 | 
//                        throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
//                    } 
 | 
                    OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(), 6L, null); 
 | 
                } 
 | 
            } 
 | 
        } else { 
 | 
            // 所有订单 
 | 
//            List<Order> orders = orderService.selectBySettle(4L); 
 | 
            List<Order> orders = OrderInAndOutUtil.selectBySettle(null, 4L); 
 | 
            if (orders.isEmpty()){ 
 | 
                orders = new ArrayList<>(); 
 | 
            } 
 | 
            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()); 
 | 
//                List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); 
 | 
  
 | 
                for (OrderDetl orderDetl : orderDetls) { 
 | 
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(), 
 | 
                            orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(), 
 | 
                            orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), 
 | 
                            orderDetl.getQty())); 
 | 
                } 
 | 
//                // 修改订单状态 4.完成 ===>> 6.已上报 
 | 
//                if (!orderService.updateSettle(order.getId(), 6L, null)) { 
 | 
//                    throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
//                } 
 | 
                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null); 
 | 
  
 | 
            } 
 | 
        } 
 | 
        return results; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void pakoutOrderCreate(OpenOrderPakoutParam param) { 
 | 
        Order order = orderService.selectByNo(param.getOrderNo()); 
 | 
        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据 
 | 
        if (!Cools.isEmpty(order)) { 
 | 
            if (order.getSettle() > 1L) { 
 | 
                throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据"); 
 | 
            } 
 | 
            orderService.remove(order.getId()); 
 | 
        } 
 | 
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE); 
 | 
        Date now = new Date(); 
 | 
        // 单据主档 
 | 
        order = new Order( 
 | 
                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空] 
 | 
                param.getOrderNo(),    // 订单编号 
 | 
                DateUtils.convert(now),    // 单据日期 
 | 
                docType.getDocId(),    // 单据类型 
 | 
                null,    // 项目编号 
 | 
                null,    // 
 | 
                null,    // 调拨项目编号 
 | 
                null,    // 初始票据号 
 | 
                null,    // 票据号 
 | 
                null,    // 客户编号 
 | 
                null,    // 客户 
 | 
                null,    // 联系方式 
 | 
                null,    // 操作人员 
 | 
                null,    // 合计金额 
 | 
                null,    // 优惠率 
 | 
                null,    // 优惠金额 
 | 
                null,    // 销售或采购费用合计 
 | 
                null,    // 实付金额 
 | 
                null,    // 付款类型 
 | 
                null,    // 业务员 
 | 
                null,    // 结算天数 
 | 
                null,    // 邮费支付类型 
 | 
                null,    // 邮费 
 | 
                null,    // 付款时间 
 | 
                null,    // 发货时间 
 | 
                null,    // 物流名称 
 | 
                null,    // 物流单号 
 | 
                1L,    // 订单状态 
 | 
                1,    // 状态 
 | 
                9527L,    // 添加人员 
 | 
                now,    // 添加时间 
 | 
                9527L,    // 修改人员 
 | 
                now,    // 修改时间 
 | 
                null,    // 备注 
 | 
                2 
 | 
        ); 
 | 
        if (!orderService.insert(order)) { 
 | 
            throw new CoolException("生成单据主档失败,请联系管理员"); 
 | 
        } 
 | 
        // 单据明细档 
 | 
        List<DetlDto> list = new ArrayList<>(); 
 | 
        List<DetlDto> orderDetails = param.getOrderDetails(); 
 | 
        for (DetlDto detail : orderDetails) { 
 | 
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),detail.getLineNumber(), 
 | 
                    detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme()); 
 | 
            if (DetlDto.hasLineNumber(list, dto)) { 
 | 
                DetlDto detlDto = DetlDto.findLineNumber(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getLineNumber(), 
 | 
                        dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3()); 
 | 
                assert detlDto != null; 
 | 
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme()); 
 | 
            } else { 
 | 
                list.add(dto); 
 | 
            } 
 | 
        } 
 | 
        for (DetlDto detlDto : list) { 
 | 
            Mat mat = matService.selectByMatnr(detlDto.getMatnr()); 
 | 
            if (Cools.isEmpty(mat)) { 
 | 
                throw new CoolException(detlDto.getMatnr() + "编号商品检索失败,请先添加商品"); 
 | 
            } 
 | 
            OrderDetl orderDetl = new OrderDetl(); 
 | 
            orderDetl.sync(mat); 
 | 
            orderDetl.setLineNumber(detlDto.getLineNumber()); 
 | 
            orderDetl.setBatch(detlDto.getBatch()); 
 | 
            orderDetl.setAnfme(detlDto.getAnfme()); 
 | 
            orderDetl.setBrand(detlDto.getBrand()); 
 | 
            orderDetl.setStandby1(detlDto.getStandby1()); 
 | 
            orderDetl.setStandby2(detlDto.getStandby2()); 
 | 
            orderDetl.setStandby3(detlDto.getStandby3()); 
 | 
            orderDetl.setOrderId(order.getId()); 
 | 
            orderDetl.setOrderNo(order.getOrderNo()); 
 | 
            orderDetl.setCreateBy(9527L); 
 | 
            orderDetl.setCreateTime(now); 
 | 
            orderDetl.setUpdateBy(9527L); 
 | 
            orderDetl.setUpdateTime(now); 
 | 
            orderDetl.setStatus(1); 
 | 
            orderDetl.setQty(0.0D); 
 | 
            orderDetl.setPakinPakoutStatus(2); 
 | 
            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()); 
 | 
//            Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, 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()); 
 | 
//                List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(),order.getId()); 
 | 
                for (OrderDetl orderDetl : orderDetls) { 
 | 
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBrand(), 
 | 
                            orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(), 
 | 
                            orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), orderDetl.getQty())); 
 | 
                } 
 | 
                if (order.getSettle() == 4L) { 
 | 
                    // 修改订单状态 4.完成 ===>> 6.已上报 
 | 
//                    if (!orderService.updateSettle(order.getId(), 6L, null)) { 
 | 
//                        throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
//                    } 
 | 
                    OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null); 
 | 
                } 
 | 
            } 
 | 
        } else { 
 | 
            // 所有订单 
 | 
//            List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L)); 
 | 
            List<Order> orders = OrderInAndOutUtil.selectBySettle(null, 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()); 
 | 
//                List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); 
 | 
                for (OrderDetl orderDetl : orderDetls) { 
 | 
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(), 
 | 
                            orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getLineNumber(), 
 | 
                            orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(), orderDetl.getQty())); 
 | 
                } 
 | 
                // 修改订单状态 4.完成 ===>> 6.已上报 
 | 
//                if (!orderService.updateSettle(order.getId(), 6L, null)) { 
 | 
//                    throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
//                } 
 | 
                OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null); 
 | 
            } 
 | 
        } 
 | 
        return results; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public List<StockVo> queryStock() { 
 | 
        return locDetlService.queryStockTotal(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void packageUp(PackParam param) { 
 | 
        if (Cools.isEmpty(param.getBarcode())) { 
 | 
            throw new CoolException("barcode不能为空"); 
 | 
        } 
 | 
        Mat analyse = MatUtils.analyseMat(param.getBarcode()); 
 | 
        Pack pack = packService.selectByBarcode(param.getBarcode()); 
 | 
        if (null != pack) { 
 | 
            throw new CoolException(param.getBarcode() + "重复提交"); 
 | 
        } 
 | 
        Date now = new Date(); 
 | 
        pack = new Pack( 
 | 
                param.getBarcode(),    // 条码[非空] 
 | 
                analyse.getMatnr(),    // 商品编号 
 | 
                analyse.getBarcode(),    // 序列码 
 | 
                1L,    // 订单状态 
 | 
                1,    // 状态 
 | 
                now,    // 添加时间 
 | 
                null,    // 添加人员 
 | 
                now,    // 修改时间 
 | 
                null,    // 修改人员 
 | 
                null    // 备注 
 | 
        ); 
 | 
        if (!packService.insert(pack)) { 
 | 
            throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
        } 
 | 
  
 | 
        Mat mat = matService.selectByMatnr(analyse.getMatnr()); 
 | 
        if (mat == null) { 
 | 
            mat = new Mat(); 
 | 
            // 分类 
 | 
            Long tagId; 
 | 
            // 一级分类 
 | 
            if (!Cools.isEmpty(param.getGroupCode()) && !Cools.isEmpty(param.getGroupName())) { 
 | 
                Tag priTag = tagService.selectByName(param.getGroupCode(), 2); 
 | 
                if (priTag == null) { 
 | 
                    Tag top = tagService.getTop(); 
 | 
                    NodeUtils nodeUtils = new NodeUtils(); 
 | 
                    nodeUtils.executePath(top.getId()); 
 | 
                    priTag = new Tag( 
 | 
                            null,    // 编号 
 | 
                            param.getGroupCode(),    // 名称 
 | 
                            top.getId(),    // 父级 
 | 
                            top.getName(),    // 父级名称 
 | 
                            nodeUtils.path.toString(),    // 关联路径 
 | 
                            nodeUtils.pathName.toString(),    // 关联路径名 
 | 
                            0,    // 类型 
 | 
                            null,    // 负责人 
 | 
                            null,    // 图片 
 | 
                            null,    // 简要描述 
 | 
                            null,    // 数量 
 | 
                            2,    // 等级 
 | 
                            null,    // 排序 
 | 
                            1,    // 状态 
 | 
                            now,    // 添加时间 
 | 
                            null,    // 添加人员 
 | 
                            now,    // 修改时间 
 | 
                            null,    // 修改人员 
 | 
                            null    // 备注 
 | 
                    ); 
 | 
                    if (tagMapper.insert(priTag) == 0) { 
 | 
                        throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
                    } 
 | 
                } 
 | 
                // 二级分类 
 | 
                Tag secTag = tagService.selectByName(param.getGroupName(), 3); 
 | 
                if (secTag == null) { 
 | 
                    NodeUtils nodeUtils = new NodeUtils(); 
 | 
                    nodeUtils.executePath(priTag.getId()); 
 | 
                    secTag = new Tag( 
 | 
                            null,    // 编号 
 | 
                            param.getGroupName(),    // 名称 
 | 
                            priTag.getId(),    // 父级 
 | 
                            priTag.getName(),    // 父级名称 
 | 
                            nodeUtils.path.toString(),    // 关联路径 
 | 
                            nodeUtils.pathName.toString(),    // 关联路径名 
 | 
                            0,    // 类型 
 | 
                            null,    // 负责人 
 | 
                            null,    // 图片 
 | 
                            null,    // 简要描述 
 | 
                            null,    // 数量 
 | 
                            3,    // 等级 
 | 
                            null,    // 排序 
 | 
                            1,    // 状态 
 | 
                            now,    // 添加时间 
 | 
                            null,    // 添加人员 
 | 
                            now,    // 修改时间 
 | 
                            null,    // 修改人员 
 | 
                            null    // 备注 
 | 
                    ); 
 | 
                    if (tagMapper.insert(secTag) == 0) { 
 | 
                        throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
                    } 
 | 
                } 
 | 
                tagId = secTag.getId(); 
 | 
            } else { 
 | 
                tagId = tagService.getTop().getId(); 
 | 
            } 
 | 
            mat.setTagId(tagId); 
 | 
            mat.setLocType(tagId); 
 | 
            mat.setMatnr(analyse.getMatnr()); 
 | 
            mat.setMaktx(param.getMaterialName()); 
 | 
            mat.setSpecs(param.getConfigureDesc()); 
 | 
            mat.setModel(analyse.getModel()); 
 | 
            mat.setStatus(1); 
 | 
            mat.setCreateTime(now); 
 | 
            mat.setUpdateTime(now); 
 | 
            if (!matService.insert(mat)) { 
 | 
                throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
            } else { 
 | 
                log.info("打包上线添加新物料[商品编号:{}]", mat.getMatnr()); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void syncMat(MatSyncParam param) { 
 | 
        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) { 
 | 
            throw new CoolException("商品数据为空"); 
 | 
        } 
 | 
  
 | 
        for(MatSyncParam.MatParam matParam : param.getMatDetails()){ 
 | 
            if(Cools.isEmpty(matParam.getMatnr())){ 
 | 
                throw new CoolException("商品编码不能为空"); 
 | 
            } 
 | 
  
 | 
            Date now = new Date(); 
 | 
            Mat mat = matService.selectByMatnr(matParam.getMatnr()); 
 | 
            if (mat == null) { 
 | 
                mat = new Mat(); 
 | 
                // 分类 
 | 
                Long tagId; 
 | 
                // 一级分类 
 | 
                if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) { 
 | 
                    Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2); 
 | 
                    if (priTag == null) { 
 | 
                        Tag top = tagService.getTop(); 
 | 
                        NodeUtils nodeUtils = new NodeUtils(); 
 | 
                        nodeUtils.executePath(top.getId()); 
 | 
                        priTag = new Tag( 
 | 
                                null,    // 编号 
 | 
                                matParam.getGroupCode(),    // 名称 
 | 
                                top.getId(),    // 父级 
 | 
                                top.getName(),    // 父级名称 
 | 
                                nodeUtils.path.toString(),    // 关联路径 
 | 
                                nodeUtils.pathName.toString(),    // 关联路径名 
 | 
                                0,    // 类型 
 | 
                                null,    // 负责人 
 | 
                                null,    // 图片 
 | 
                                null,    // 简要描述 
 | 
                                null,    // 数量 
 | 
                                2,    // 等级 
 | 
                                null,    // 排序 
 | 
                                1,    // 状态 
 | 
                                now,    // 添加时间 
 | 
                                null,    // 添加人员 
 | 
                                now,    // 修改时间 
 | 
                                null,    // 修改人员 
 | 
                                null    // 备注 
 | 
                        ); 
 | 
                        if (tagMapper.insert(priTag) == 0) { 
 | 
                            throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
                        } 
 | 
                    } 
 | 
                    // 二级分类 
 | 
                    Tag secTag = tagService.selectByName(matParam.getGroupName(), 3); 
 | 
                    if (secTag == null) { 
 | 
                        NodeUtils nodeUtils = new NodeUtils(); 
 | 
                        nodeUtils.executePath(priTag.getId()); 
 | 
                        secTag = new Tag( 
 | 
                                null,    // 编号 
 | 
                                matParam.getGroupName(),    // 名称 
 | 
                                priTag.getId(),    // 父级 
 | 
                                priTag.getName(),    // 父级名称 
 | 
                                nodeUtils.path.toString(),    // 关联路径 
 | 
                                nodeUtils.pathName.toString(),    // 关联路径名 
 | 
                                0,    // 类型 
 | 
                                null,    // 负责人 
 | 
                                null,    // 图片 
 | 
                                null,    // 简要描述 
 | 
                                null,    // 数量 
 | 
                                3,    // 等级 
 | 
                                null,    // 排序 
 | 
                                1,    // 状态 
 | 
                                now,    // 添加时间 
 | 
                                null,    // 添加人员 
 | 
                                now,    // 修改时间 
 | 
                                null,    // 修改人员 
 | 
                                null    // 备注 
 | 
                        ); 
 | 
                        if (tagMapper.insert(secTag) == 0) { 
 | 
                            throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
                        } 
 | 
                    } 
 | 
                    tagId = secTag.getId(); 
 | 
                } else { 
 | 
                    tagId = tagService.getTop().getId(); 
 | 
                } 
 | 
                mat.sync(matParam); 
 | 
//            mat.setMatnr(param.getMatnr()); 
 | 
//            mat.setMaktx(param.getMaktx()); 
 | 
//            mat.setSpecs(param.getSpecs()); 
 | 
//            mat.setModel(param.getModel()); 
 | 
  
 | 
                mat.setTagId(tagId); 
 | 
                mat.setLocType(tagId); 
 | 
                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); 
 | 
                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) { 
 | 
                    throw new CoolException("更新已存在商品信息失败,请联系管理员"); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |