gongchunyi
10 小时以前 8d5e82d82c37c1c9236e0c679f199db53585c1ad
feat: 销售订单产品入库
已修改8个文件
70 ■■■■■ 文件已修改
doc/河南鹤壁天沐钢化玻璃厂.sql 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/SalesLedgerMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ºÓÄϺױÚÌìãå¸Ö»¯²£Á§³§.sql
@@ -98,3 +98,6 @@
    MODIFY COLUMN `tax_inclusive_unit_price` decimal(18, 2) NULL COMMENT '含税单价' AFTER `tax_rate`,
    MODIFY COLUMN `tax_inclusive_total_price` decimal(18, 2) NULL COMMENT '含税总价' AFTER `tax_inclusive_unit_price`,
    MODIFY COLUMN `tax_exclusive_total_price` decimal(18, 2) NULL COMMENT '不含税总价' AFTER `tax_inclusive_total_price`;
ALTER TABLE `sales_ledger`
    ADD COLUMN `stock_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '入库状态:0-未入库,1-已入库' AFTER `delivery_status`;
src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
@@ -6,13 +6,13 @@
@Getter
public enum StockInQualifiedRecordTypeEnum implements BaseEnum<String> {
    CUSTOMIZATION_STOCK_IN("0", "合格自定义入库"),
    PRODUCTION_REPORT_STOCK_IN("2", "生产报工-入库"),
    PURCHASE_STOCK_IN("7", "采购-入库"),
    QUALITYINSPECT_STOCK_IN("6", "质检-合格入库"),
    DEFECTIVE_PASS("11", "不合格-让步放行"),
    RETURN_HE_IN("14", "销售退货-合格入库");
    RETURN_HE_IN("14", "销售退货-合格入库"),
    SALE_STOCK_IN("15", "销售-合格入库");
    private final String code;
@@ -22,5 +22,4 @@
        this.code = code;
        this.value = value;
    }
}
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -395,4 +395,11 @@
        return AjaxResult.success(list);
    }
    @PostMapping("/salesStock")
    @ApiOperation("销售台账产品入库")
    public AjaxResult salesStock(@RequestBody SalesLedger salesLedger) {
        salesLedgerService.salesStock(salesLedger);
        return AjaxResult.success();
    }
}
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -62,4 +62,7 @@
    @ApiModelProperty(value = "是否发货")
    private Integer deliveryStatus;
    @ApiModelProperty(value = "入库状态")
    private Integer stockStatus;
}
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -148,6 +148,12 @@
    @ApiModelProperty("发货状态:1-未发货,2-审批中,3-审批不通过,4-审批通过,5-已发货")
    private Integer deliveryStatus;
    /**
     * å…¥åº“状态:0-未入库,1-已入库
     */
    @ApiModelProperty("入库状态:0-未入库,1-已入库")
    private Integer stockStatus;
    @TableField(exist = false)
    @ApiModelProperty(value = "交货天数差")
    private Integer deliveryDaysDiff;
src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -66,4 +66,6 @@
    SalesInvoicesDto salesInvoices(List<Long> salesLedgerIds);
    List<SalesLabelDto> salesLabel(Long salesLedgerId);
    void salesStock(SalesLedger salesLedger);
}
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.basic.service.ICustomerRegionsService;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SaleEnum;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
@@ -47,6 +48,8 @@
import com.ruoyi.sales.service.ISalesLedgerProductProcessBindService;
import com.ruoyi.sales.service.ISalesLedgerProductProcessService;
import com.ruoyi.sales.service.ISalesLedgerService;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.service.StockInventoryService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -125,6 +128,8 @@
    private final ISalesLedgerProductProcessBindService salesLedgerProductProcessBindService;
    private final ISalesLedgerProcessRouteService salesLedgerProcessRouteService;
    private final StockInventoryService stockInventoryService;
    @Autowired
    private SysDeptMapper sysDeptMapper;
@@ -732,6 +737,7 @@
                String contractNo = generateSalesContractNo();
                salesLedger.setSalesContractNo(contractNo);
                salesLedger.setDeliveryStatus(1);
                salesLedger.setStockStatus(0);
                salesLedgerMapper.insert(salesLedger);
            } else {
                if (salesLedger.getDeliveryStatus() == 5) {
@@ -1500,4 +1506,39 @@
            return totalAmount;
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void salesStock(SalesLedger salesLedger) {
        if (salesLedger == null || salesLedger.getId() == null) {
            throw new NullPointerException("入库失败,请选择需要入库的销售订单");
        }
        //  æŸ¥è¯¢é”€å”®è®¢å•是否存在
        SalesLedger ledger = baseMapper.selectById(salesLedger.getId());
        if (ledger == null) {
            throw new ServiceException("入库失败,销售订单不存在");
        }
        if (ledger.getStockStatus() == null) {
            throw new ServiceException("入库失败,销售订单入库状态异常");
        }
        if (ledger.getStockStatus() == 1) {
            throw new ServiceException("入库失败,该销售订单已入库,请勿重复入库");
        }
        //  æŸ¥è¯¢é”€å”®è®¢å•的产品
        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(Wrappers.<SalesLedgerProduct>lambdaQuery().eq(SalesLedgerProduct::getSalesLedgerId, ledger.getId()));
        if (salesLedgerProducts == null || salesLedgerProducts.isEmpty()) {
            throw new ServiceException("入库失败,未查询到该销售订单的销售产品");
        }
        for (SalesLedgerProduct product : salesLedgerProducts) {
            if (product.getProductModelId() == null) {
                continue;
            }
            StockInventoryDto dto = new StockInventoryDto();
            dto.setRecordId(product.getId());
            dto.setRecordType(StockInQualifiedRecordTypeEnum.SALE_STOCK_IN.getCode());
            dto.setQualitity(product.getQuantity());
            dto.setProductModelId(product.getProductModelId());
            stockInventoryService.addstockInventory(dto);
        }
    }
}
src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -90,6 +90,9 @@
            <if test="salesLedgerDto.deliveryStatus != null">
                AND T1.delivery_status = #{salesLedgerDto.deliveryStatus}
            </if>
            <if test="salesLedgerDto.stockStatus != null">
                AND T1.stock_status = #{salesLedgerDto.stockStatus}
            </if>
        </where>
        ORDER BY T1.entry_date DESC
    </select>