zss
2023-08-11 24a1aa1d7470998522aa28b4abc728fff5bcbaf7
inventory-server/src/main/java/com/yuanchu/mom/service/impl/ConsignmentServiceImpl.java
@@ -1,19 +1,26 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.ConsignmentMapper;
import com.yuanchu.mom.mapper.ReceiptMapper;
import com.yuanchu.mom.mapper.RepertoryMapper;
import com.yuanchu.mom.pojo.Consignment;
import com.yuanchu.mom.pojo.Receipt;
import com.yuanchu.mom.pojo.Repertory;
import com.yuanchu.mom.pojo.dto.ConsignmentDto;
import com.yuanchu.mom.pojo.dto.ConsignmentDto2;
import com.yuanchu.mom.service.ConsignmentService;
import com.yuanchu.mom.utils.MyUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 成品发货表(Consignment)表服务实现类
@@ -30,15 +37,86 @@
    @Resource
    RepertoryMapper repertoryMapper;
    @Resource
    ReceiptMapper receiptMapper;
    //新增成品发货
    @Override
    public String addCon(String name, ConsignmentDto consignmentDto) {
        //生成一个押运单编号
        String escortCode = MyUtil.getTimeSixNumberCode("YY");
        //如果该订单已经发过货了不能再发货
        List<Consignment> consignments = consignmentMapper.selectAll();
        //如果没有发货表中没有数据也可以发货
        if (consignments.size()==0) {
            /*新增成品发货*/
            String mes1 = addConsign(name, consignmentDto, escortCode);
            return mes1;
        } else {
        for (Consignment consignment : consignments) {
            if (consignment.getCustomerCode().equals(consignmentDto.getCustomerCode())) {
                return "该合同订单已发过货,无法再次发货!";
            } else {
                    /*新增成品发货*/
                    String mes2 = addConsign(name, consignmentDto, escortCode);
                    return mes2;
                }
            }
        }
        return null;
    }
    //查询发货记录列表
    @Override
    public IPage<Map<String, Object>> selectAllCon(Page<Object> page, String name, String specifications, String time) {
        return consignmentMapper.selectAllCon(page, name, specifications, time);
    }
    //根据id删除
    @Override
    public void delCon(Integer id) {
        //删除发货记录
        Consignment consignment = consignmentMapper.selectById(id);
        consignment.setState(0);
        consignmentMapper.updateById(consignment);
        //库存也要新增
        LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Repertory::getCode, consignment.getCode())
                .eq(Repertory::getName, consignment.getName())
                .eq(Repertory::getSpecifications, consignment.getSpecifications())
                .eq(Repertory::getUnit, consignment.getUnit())
                .eq(Repertory::getType, 0) //成品发货
                .eq(Repertory::getCheckState, 1); //只有已检验才能发货
        Repertory repertory = repertoryMapper.selectOne(queryWrapper);
        repertory.setNumber(repertory.getNumber() + consignment.getNumber());
        repertoryMapper.updateById(repertory);
    }
    //批量删除
    @Override
    public void delAllCon(List<Integer> ids) {
        List<Consignment> consignments = consignmentMapper.selectBatchIds(ids);
        for (Consignment consignment : consignments) {
            consignment.setState(0);
            //删除发货记录
            consignmentMapper.updateById(consignment);
            //库存新增
            LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(Repertory::getCode, consignment.getCode())
                    .eq(Repertory::getName, consignment.getName())
                    .eq(Repertory::getSpecifications, consignment.getSpecifications())
                    .eq(Repertory::getUnit, consignment.getUnit())
                    .eq(Repertory::getType, 0) //成品发货
                    .eq(Repertory::getCheckState, 1); //只有已检验才能发货
            Repertory repertory = repertoryMapper.selectOne(queryWrapper);
            repertory.setNumber(repertory.getNumber() + consignment.getNumber());
            repertoryMapper.updateById(repertory);
        }
    }
    //新增发货一系列操作
    private String addConsign(String name, ConsignmentDto consignmentDto, String escortCode) {
                /*新增成品发货*/
                List<ConsignmentDto2> messages = consignmentDto.getMessages();
                for (ConsignmentDto2 message : messages) {
@@ -56,7 +134,7 @@
                            //构造成品发货实体类
                            Consignment consig = Consignment.builder()
                                    .customerCode(consignmentDto.getCustomerCode())
                                    .escortCode(MyUtil.getTimeSixNumberCode("YY"))
                            .escortCode(escortCode)
                                    .orderCode(consignmentDto.getOrderCode())
                                    .userName(name)
                                    .checkName(consignmentDto.getCheckName())
@@ -74,9 +152,16 @@
                        } else return "库存不足,无法发货!";
                    } else return "该产品还未检验,不能发货!";
                }
            }
        }
        /*发货成功之后需要新增一张回单*/
        Receipt receipt = new Receipt();
        BeanUtils.copyProperties(consignmentDto, receipt);
        receipt.setName(consignmentDto.getUsername());//收货联系人
        receipt.setUserName(name);//发货人
        receipt.setEscortCode(escortCode);//押运单编号
        receipt.setDeliverTime(new Date());//发货日期
        receiptMapper.insert(receipt);
        return "发货成功!";
    }
}