9 小时以前 7bf754a7835d06f26240c4ca15bc5f83650de377
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -12,10 +12,12 @@
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.sales.mapper.SalesLedgerArrivalMapper;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerArrival;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.ISalesLedgerProductService;
@@ -25,6 +27,7 @@
import com.ruoyi.technology.mapper.TechnologyBomStructureMapper;
import com.ruoyi.technology.mapper.TechnologyRoutingMapper;
import com.ruoyi.technology.pojo.TechnologyRouting;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -33,9 +36,7 @@
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
@@ -59,6 +60,8 @@
    private ProductionAccountMapper productionAccountMapper;
    @Autowired
    private SalesLedgerMapper salesLedgerMapper;
    @Autowired
    private SalesLedgerArrivalMapper salesLedgerArrivalMapper;
    @Autowired
    private PurchaseLedgerMapper purchaseLedgerMapper;
    @Autowired
@@ -98,17 +101,23 @@
        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
        if(!CollectionUtils.isEmpty(salesLedgerProducts)){
            salesLedgerProducts.forEach(item -> {
                // 发货信息
                ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
                        .eq(ShippingInfo::getSalesLedgerProductId, item.getId())
                        .orderByDesc(ShippingInfo::getCreateTime)
                        .last("limit 1"));
                if(shippingInfo != null){
                    item.setShippingDate(shippingInfo.getShippingDate());
                    item.setShippingCarNumber(shippingInfo.getShippingCarNumber());
                    item.setExpressCompany(shippingInfo.getExpressCompany());
                    item.setExpressNumber(shippingInfo.getExpressNumber());
                // 发货信息:油品出库不再产发货单,改按到货记录回填(到货日期取最新一条;快递字段对整车油品无意义,留空)
                List<SalesLedgerArrival> arrivals = salesLedgerArrivalMapper.selectList(new LambdaQueryWrapper<SalesLedgerArrival>()
                        .eq(SalesLedgerArrival::getSalesLedgerProductId, item.getId())
                        .orderByAsc(SalesLedgerArrival::getArrivalDate)
                        .orderByAsc(SalesLedgerArrival::getId));
                if(CollectionUtils.isEmpty(arrivals)){
                    return;
                }
                SalesLedgerArrival latest = arrivals.get(arrivals.size() - 1);
                item.setShippingDate(latest.getArrivalDate() == null ? null : java.sql.Date.valueOf(latest.getArrivalDate()));
                // 车牌号:所有到货记录的车牌号,去重后逗号拼接
                String carNumbers = arrivals.stream()
                        .map(SalesLedgerArrival::getTruckPlateNo)
                        .filter(carNo -> carNo != null && !carNo.trim().isEmpty())
                        .distinct()
                        .collect(Collectors.joining(","));
                item.setShippingCarNumber(carNumbers);
            });
        }
        return salesLedgerProducts;
@@ -216,7 +225,7 @@
     */
    public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
        //先判断该产品是否需要生产
        if (!salesLedgerProduct.getIsProduction()) {
        if (!BooleanUtils.isTrue(salesLedgerProduct.getIsProduction())) {
            return;
        }
        SalesLedger salesLedger = salesLedgerMapper.selectById(salesLedgerProduct.getSalesLedgerId());