liding
2026-04-10 9fa762cf783e2dc3f67b793e34d266dd4d3ec322
feat:1.销售添加是否生产
2.生产订单添加备注
已修改5个文件
83 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/controller/ProductOrderController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductOrder.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -16,7 +16,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RequestMapping("productOrder")
@RequestMapping("/productOrder")
@RestController
@Api(tags = "生产订单")
public class ProductOrderController {
@@ -26,7 +26,7 @@
    @ApiOperation("分页查询")
    @GetMapping("page")
    @GetMapping("/page")
    public R page(ProductOrderDto productOrder, Page page) {
        return R.ok(productOrderService.pageProductOrder(page, productOrder));
    }
src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -113,6 +113,10 @@
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;
}
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -13,6 +13,7 @@
@Data
public class SalesLedgerDto {
    private Long id;
    private String salesContractNo;
    private String customerContractNo;
@@ -57,4 +58,7 @@
    @ApiModelProperty(value = "交货日期")
    private LocalDate deliveryDate;
    @ApiModelProperty(value = "是否生产")
    private boolean produce;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -1,15 +1,15 @@
package com.ruoyi.sales.pojo;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
/**
 * 销售台账对象 sales_ledger
@@ -159,5 +159,11 @@
     */
    @TableField(exist = false)
    private String contactPhone;
    /**
     * 是否生产
     */
    @ApiModelProperty(value = "是否生产")
    private boolean isProduce;
}
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -35,7 +35,6 @@
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
import com.ruoyi.sales.service.ISalesLedgerService;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.mapper.StockInventoryMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -606,7 +605,7 @@
            // 4. 处理子表数据
            List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
            if (productList != null && !productList.isEmpty()) {
                handleSalesLedgerProducts(salesLedger.getId(), productList, salesLedgerDto.getType());
                handleSalesLedgerProducts(salesLedger.getId(), productList, salesLedgerDto.getType(), salesLedgerDto.isProduce());
                updateMainContractAmount(
                        salesLedger.getId(),
                        productList,
@@ -704,7 +703,7 @@
    }
    private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
    private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type, boolean isProduce) {
        // 按ID分组,区分新增和更新的记录
        Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream()
                .peek(p -> p.setSalesLedgerId(salesLedgerId))
@@ -713,26 +712,26 @@
        List<SalesLedgerProduct> updateList = partitionedProducts.get(true);
        List<SalesLedgerProduct> insertList = partitionedProducts.get(false);
        List<StockInventoryDto> stockInventoryDtos = stockInventoryMapper.selectProductList();
//        List<StockInventoryDto> stockInventoryDtos = stockInventoryMapper.selectProductList();
        // 执行更新操作
        if (!updateList.isEmpty()) {
            for (SalesLedgerProduct product : updateList) {
                // 查询库存数量
                SalesLedgerProduct oldProduct = salesLedgerProductMapper.selectById(product.getId());
                BigDecimal quantityChange = product.getQuantity().subtract(oldProduct.getQuantity());
                // 如果数量增加了,检查库存
                if (quantityChange.compareTo(BigDecimal.ZERO) > 0) {
                    for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
                        if (stockInventoryDto.getProductId().equals(product.getId())) {
                            if (quantityChange.compareTo(stockInventoryDto.getQualitity()) > 0) {
                                throw new RuntimeException("库存不足");
                            }
                            break;
                        }
                    }
                }
//                // 查询库存数量
//                SalesLedgerProduct oldProduct = salesLedgerProductMapper.selectById(product.getId());
//                BigDecimal quantityChange = product.getQuantity().subtract(oldProduct.getQuantity());
//
//                // 如果数量增加了,检查库存
//                if (quantityChange.compareTo(BigDecimal.ZERO) > 0) {
//                    for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
//                        if (stockInventoryDto.getProductId().equals(product.getId())) {
//                            if (quantityChange.compareTo(stockInventoryDto.getQualitity()) > 0) {
//                                throw new RuntimeException("库存不足");
//                            }
//                            break;
//                        }
//                    }
//                }
                product.setType(type);
                salesLedgerProductMapper.updateById(product);
            }
@@ -740,18 +739,22 @@
        // 执行插入操作
        if (!insertList.isEmpty()) {
            for (SalesLedgerProduct salesLedgerProduct : insertList) {
                for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
                    if (stockInventoryDto.getProductId().equals(salesLedgerProduct.getId())) {
                        if (salesLedgerProduct.getQuantity().compareTo(stockInventoryDto.getQualitity()) > 0) {
                            throw new RuntimeException("库存不足");
                        }
                    }
                }
//                for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
//                    if (stockInventoryDto.getProductId().equals(salesLedgerProduct.getId())) {
//                        if (salesLedgerProduct.getQuantity().compareTo(stockInventoryDto.getQualitity()) > 0) {
//                            throw new RuntimeException("库存不足");
//                        }
//                    }
//                }
                salesLedgerProduct.setType(type);
                salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
                salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                salesLedgerProductMapper.insert(salesLedgerProduct);
                // 添加生产数据
                if (isProduce) {
                    salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
                }
            }
        }
    }