gongchunyi
2 天以前 593379b64d440c06887e8fbfa2803c70463dba19
fix: 产品入库的库存返回产品大类、规则型号、单位
已修改5个文件
346 ■■■■■ 文件已修改
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -44,6 +44,13 @@
        return AjaxResult.success(procurementRecordService.add(procurementDto));
    }
    @PostMapping("/addProduct")
    @Log(title = "入库管理-产品入库", businessType = BusinessType.INSERT)
    @Transactional
    public AjaxResult addProduct(@RequestBody Details detail) {
        return AjaxResult.success(procurementRecordService.addProduct(detail));
    }
    @PostMapping("/update")
    @Log(title = "采购入库-入库管理-修改入库", businessType = BusinessType.UPDATE)
    @Transactional
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -19,6 +19,7 @@
    int add(ProcurementAddDto procurementDto);
    int addProduct(Details detail);
    IPage<ProcurementPageDto> listPage(Page page, ProcurementPageDto procurementDto);
    IPage<ProcurementPageDtoCopy> listPageCopy(Page page, ProcurementPageDto procurementDto);
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -174,24 +174,26 @@
    public int updateManagement(ProcurementManagementUpdateDto procurementDto) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        SysUser sysUser = sysUserMapper.selectUserById(procurementDto.getCreateUser());
        if(sysUser == null){
        if (sysUser == null) {
            throw new RuntimeException("入库人不存在");
        }
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String entryDateStr = procurementDto.getEntryDate() + " 00:00:00";
        String createTimeStr = procurementDto.getCreateTime() + " 00:00:00";
        SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(procurementDto.getSalesLedgerProductId());
        if(salesLedgerProduct == null){
        if (procurementDto.getSalesLedgerProductId() != null && salesLedgerProduct == null) {
            throw new RuntimeException("销售台账产品不存在");
        }
        salesLedgerProduct.setMinStock(procurementDto.getMinStock());
        salesLedgerProductMapper.updateById(salesLedgerProduct);
        if (procurementDto.getSalesLedgerProductId() != null && salesLedgerProduct != null) {
            salesLedgerProduct.setMinStock(procurementDto.getMinStock());
            salesLedgerProductMapper.updateById(salesLedgerProduct);
        }
        ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId());
        procurementRecordStorageById.setCreateBy(sysUser.getNickName());
        procurementRecordStorageById.setCreateUser(sysUser.getUserId());
        procurementRecordStorageById.setUpdateTime(LocalDateTime.parse(entryDateStr,df));
        procurementRecordStorageById.setUpdateTime(LocalDateTime.parse(entryDateStr, df));
        procurementRecordStorageById.setUpdateUser(loginUser.getUserId());
        procurementRecordStorageById.setCreateTime(LocalDateTime.parse(createTimeStr,df));
        procurementRecordStorageById.setCreateTime(LocalDateTime.parse(createTimeStr, df));
        procurementRecordMapper.updateById(procurementRecordStorageById);
        return 0;
    }
@@ -375,6 +377,30 @@
    }
    @Override
    public int addProduct(Details detail) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        ProcurementRecordStorage.ProcurementRecordStorageBuilder builder = ProcurementRecordStorage.builder()
                .id(detail.getId())
                .inboundBatches("第1批次")
                .inboundNum(detail.getInboundQuantity())
                .warnNum(detail.getWarnNum())
                .outStockQuantity(detail.getOutStockQuantity())
                .shortageDescription(detail.getShortageDescription())
                .productModelId(detail.getProductModelId())
                .updateTime(LocalDateTime.now())
                .updateUser(loginUser.getUserId());
        if (detail.getId() == null) {
            builder.createTime(LocalDateTime.now())
                    .createUser(loginUser.getUserId())
                    .createBy(loginUser.getNickName());
        }
        boolean success = this.saveOrUpdate(builder.build());
        return success ? 1 : 0;
    }
    @Override
    public IPage<ProcurementPageDto> listPage(Page page, ProcurementPageDto procurementDto) {
        IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPage(page, procurementDto);
        List<ProcurementPageDto> procurementPageDtos = procurementPageDtoIPage.getRecords();
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -4,23 +4,23 @@
    <select id="listProcurementBySalesLedgerId" resultType="com.ruoyi.procurementrecord.dto.ProcurementDto">
        select
            t1.supplier_name,
            t2.product_category,
            t2.id,
            t3.id as recordId,
            t2.specification_model,
            t2.product_model_id,
            t2.unit,
            t2.quantity,
            t2.min_stock,
            t2.warn_num,
            t2.quantity as quantity0,
            t2.tax_rate,
            t2.tax_inclusive_unit_price,
            t2.tax_inclusive_total_price,
            t2.tax_exclusive_total_price,
            t3.inbound_num as quantityStock
        from  purchase_ledger t1
        t1.supplier_name,
        t2.product_category,
        t2.id,
        t3.id as recordId,
        t2.specification_model,
        t2.product_model_id,
        t2.unit,
        t2.quantity,
        t2.min_stock,
        t2.warn_num,
        t2.quantity as quantity0,
        t2.tax_rate,
        t2.tax_inclusive_unit_price,
        t2.tax_inclusive_total_price,
        t2.tax_exclusive_total_price,
        t3.inbound_num as quantityStock
        from purchase_ledger t1
        left join sales_ledger_product t2 on t1.id = t2.sales_ledger_id
        left join procurement_record_storage t3 on t2.id = t3.sales_ledger_product_id
        where t1.purchase_contract_number = #{req.purchaseContractNumber}
@@ -31,100 +31,121 @@
    </select>
    <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
        select
        t3.supplier_name,
        t3.purchase_contract_number,
        t2.product_category,
        t3.supplier_name as supplierName,
        t3.purchase_contract_number as purchaseContractNumber,
        case when t2.product_category is null then t5.product_name
        else t2.product_category end as productCategory,
        t1.id,
        t1.sales_ledger_product_id,
        t1.product_model_id,
        t1.create_user,
        t2.specification_model,
        t2.unit,
        t2.tax_rate,
        t2.tax_inclusive_unit_price,
        t1.sales_ledger_product_id as salesLedgerProductId,
        t1.product_model_id as productModelId,
        t1.create_user as createUser,
        case when t2.specification_model is null then t4.model
        else t2.specification_model end as specificationModel,
        case when t2.unit is null then t4.unit
        else t2.unit end as unit,
        t2.tax_rate as taxRate,
        t2.tax_inclusive_unit_price as taxInclusiveUnitPrice,
        (t1.inbound_num * t2.tax_inclusive_unit_price) as taxInclusiveTotalPrice,
        (t1.inbound_num * t2.tax_inclusive_unit_price - t1.inbound_num * t2.tax_inclusive_unit_price * t2.tax_rate / 100) as taxExclusiveTotalPrice,
        t1.inbound_batches,
        t1.inbound_num,
        (t1.inbound_num * t2.tax_inclusive_unit_price - t1.inbound_num * t2.tax_inclusive_unit_price * t2.tax_rate /
        100) as taxExclusiveTotalPrice,
        t1.inbound_batches as inboundBatches,
        t1.inbound_num as inboundNum,
        t1.inbound_num as inboundNum0,
        t1.create_time,
        t1.update_time,
        t1.create_by,
        t2.warn_num,
        t1.create_time as createTime,
        t1.update_time as updateTime,
        t1.create_by as createBy,
        t2.warn_num as warnNum,
        t1.out_stock_quantity as outStockQuantity,
        t1.shortage_description as shortageDescription
        from  procurement_record_storage t1
                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        from procurement_record_storage t1
        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
        left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        left join product_model t4 on t4.id = t1.product_model_id
        left join product t5 on t5.id = t4.product_id
        <where>
            1 = 1
            <if test="req.supplierName != null and req.supplierName != ''">
                and t3.supplier_name like  concat('%',#{req.supplierName},'%')
                and t3.supplier_name like concat('%',#{req.supplierName},'%')
            </if>
            <if test="req.timeStr != null and req.timeStr != ''">
                and t1.create_time like  concat('%',#{req.timeStr},'%')
                and t1.create_time like concat('%',#{req.timeStr},'%')
            </if>
        </where>
    </select>
    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
        select
            t3.supplier_name,
            t3.purchase_contract_number,
            t2.product_category,
            t1.id,
            t2.specification_model,
            t2.unit,
            t2.quantity,
            t2.quantity as quantity0,
            t2.tax_rate,
            t2.tax_inclusive_unit_price,
            t2.tax_inclusive_total_price,
            t2.tax_exclusive_total_price,
            t1.inbound_batches,
            t1.inbound_num,
            t1.create_time,
            t1.create_time as time,
            t1.create_by
        from  procurement_record_storage t1
                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        select t3.supplier_name as supplierName,
               t3.purchase_contract_number as purchaseContractNumber,
               case
                   when t2.product_category is null then t5.product_name
                   else t2.product_category end    as productCategory,
               t1.id,
               case
                   when t2.specification_model is null then t4.model
                   else t2.specification_model end as specificationModel,
               case
                   when t2.unit is null then t4.unit
                   else t2.unit end                as unit,
               t2.quantity,
               t2.quantity                         as quantity0,
               t2.tax_rate                         as taxRate,
               t2.tax_inclusive_unit_price         as taxInclusiveUnitPrice,
               t2.tax_inclusive_total_price        as taxInclusiveTotalPrice,
               t2.tax_exclusive_total_price        as taxExclusiveTotalPrice,
               t1.inbound_batches                  as inboundBatches,
               t1.inbound_num                      as inboundNum,
               t1.create_time                      as createTime,
               t1.create_time                      as time,
               t1.create_by                        as createBy
        from procurement_record_storage t1
                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                 left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
                 left join product_model t4 on t4.id = t1.product_model_id
                 left join product t5 on t5.id = t4.product_id
    </select>
    <select id="listPageCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
        select
        t3.supplier_name,
        t3.purchase_contract_number,
        t2.product_category,
        t1.id,
        case when t2.product_category is null then t5.product_name
        else t2.product_category end as productCategory,
        max(t1.id) as id,
        t1.sales_ledger_product_id,
        t1.create_user,
        t2.specification_model,
        t2.unit,
        case when t2.specification_model is null then t4.model
        else t2.specification_model end as specificationModel,
        case when t2.unit is null then t4.unit
        else t2.unit end as unit,
        t2.min_stock,
        t2.tax_rate,
        t2.tax_inclusive_unit_price,
        t2.tax_inclusive_total_price,
        t2.tax_exclusive_total_price,
        t1.inbound_batches,
        group_concat(t1.inbound_batches) as inbound_batches,
        sum(t1.inbound_num) as inboundNum,
        sum(t1.inbound_num) as inboundNum0,
        t1.inbound_num as totalInboundNum,
        t1.create_time,
        t1.update_time,
        sum(t1.inbound_num) as totalInboundNum,
        max(t1.create_time) as create_time,
        max(t1.update_time) as update_time,
        t1.create_by,
        t2.warn_num
        from  procurement_record_storage t1
        from procurement_record_storage t1
        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
        left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        left join product_model t4 on t4.id = t1.product_model_id
        left join product t5 on t5.id = t4.product_id
        <where>
            1 = 1
            <if test="req.supplierName != null and req.supplierName != ''">
                and t3.supplier_name like  concat('%',#{req.supplierName},'%')
                and t3.supplier_name like concat('%',#{req.supplierName},'%')
            </if>
            <if test="req.timeStr != null and req.timeStr != ''">
                and t1.create_time like  concat('%',#{req.timeStr},'%')
                and t1.create_time like concat('%',#{req.timeStr},'%')
            </if>
            <if test="req.reportDate != null">
                and t1.create_time >= #{req.reportDate} and t1.create_time &lt; DATE_ADD(#{req.reportDate}, INTERVAL 1 DAY)
                and t1.create_time >= #{req.reportDate} and t1.create_time &lt; DATE_ADD(#{req.reportDate}, INTERVAL 1
                DAY)
            </if>
            <if test="req.startMonth != null">
                and t1.create_time >= #{req.startMonth}
@@ -139,32 +160,45 @@
                and t1.create_time &lt;= #{req.endDate}
            </if>
        </where>
        group by t3.supplier_name,t2.product_category,t2.specification_model
    </select>
    <select id="listCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
        select
        group by
            t3.supplier_name,
            t3.purchase_contract_number,
            t2.product_category,
            t1.id,
            t1.sales_ledger_product_id,
            t1.create_user,
            t2.specification_model,
            t2.unit,
            t2.tax_rate,
            t2.tax_inclusive_unit_price,
            t2.tax_inclusive_total_price,
            t2.tax_exclusive_total_price,
            t1.inbound_batches,
            t1.inbound_num,
            t1.inbound_num as inboundNum0,
            t1.create_time,
            t1.update_time,
            t1.create_time as cTime,
            t1.update_time as uTime,
            t1.create_by
        from  procurement_record_storage t1
                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
            productCategory,
            specificationModel,
            unit
    </select>
    <select id="listCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
        select t3.supplier_name,
               t3.purchase_contract_number,
               case
                   when t2.product_category is null then t5.product_name
                   else t2.product_category end    as productCategory,
               t1.id,
               t1.sales_ledger_product_id,
               t1.create_user,
               case
                   when t2.specification_model is null then t4.model
                   else t2.specification_model end as specificationModel,
               case
                   when t2.unit is null then t4.unit
                   else t2.unit end                as unit,
               t2.tax_rate,
               t2.tax_inclusive_unit_price,
               t2.tax_inclusive_total_price,
               t2.tax_exclusive_total_price,
               t1.inbound_batches,
               t1.inbound_num,
               t1.inbound_num                      as inboundNum0,
               t1.create_time,
               t1.update_time,
               t1.create_time                      as cTime,
               t1.update_time                      as uTime,
               t1.create_by
        from procurement_record_storage t1
                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                 left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
                 left join product_model t4 on t4.id = t1.product_model_id
                 left join product t5 on t5.id = t4.product_id
    </select>
</mapper>
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -2,52 +2,60 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper">
    <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
        select
        t3.supplier_name,
        t2.product_category,
        t3.supplier_name as supplierName,
        COALESCE(t2.product_category, t6.product_name) as productCategory,
        t1.id,
        t1.code,
        t2.specification_model,
        t2.unit,
        t2.tax_rate,
        t2.tax_inclusive_unit_price,
        t2.tax_inclusive_total_price,
        t2.tax_exclusive_total_price,
        t1.inbound_num,
        t1.create_time,
        t1.create_by,
        t2.warn_num
        from  procurement_record_out t1
        COALESCE(t2.specification_model, t5.model) as specificationModel,
        COALESCE(t2.unit, t5.unit) as unit,
        t2.tax_rate as taxRate,
        t2.tax_inclusive_unit_price as taxInclusiveUnitPrice,
        t2.tax_inclusive_total_price as taxInclusiveTotalPrice,
        t2.tax_exclusive_total_price as taxExclusiveTotalPrice,
        t1.inbound_num as inboundNum,
        t1.create_time as createTime,
        t1.create_by as createBy,
        COALESCE(t2.warn_num, t4.warn_num) as warnNum
        from procurement_record_out t1
        left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
        left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id
        left join product_model t5 on t5.id = t4.product_model_id
        left join product t6 on t6.id = t5.product_id
        <where>
            1 = 1
            <if test="req.supplierName != null and req.supplierName != ''">
                and t3.supplier_name like  concat('%',#{req.supplierName},'%')
                and t3.supplier_name like concat('%',#{req.supplierName},'%')
            </if>
            <if test="req.timeStr != null and req.timeStr != ''">
                and t1.create_time like  concat('%',#{req.timeStr},'%')
                and t1.create_time like concat('%',#{req.timeStr},'%')
            </if>
        </where>
    </select>
    <select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
        select
            t3.supplier_name,
            t2.product_category,
            t1.id,
            t2.specification_model,
            t2.unit,
            t2.tax_rate,
            t2.tax_inclusive_unit_price,
            t2.tax_inclusive_total_price,
            t2.tax_exclusive_total_price,
            t1.inbound_num,
            t1.create_time,
            t1.create_time as time,
            t1.create_by
        from  procurement_record_out t1
                  left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                  left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
        select t3.supplier_name as supplierName,
               COALESCE(t2.product_category, t6.product_name) as productCategory,
               t1.id,
               COALESCE(t2.specification_model, t5.model)     as specificationModel,
               COALESCE(t2.unit, t5.unit)                     as unit,
               t2.tax_rate                                    as taxRate,
               t2.tax_inclusive_unit_price                    as taxInclusiveUnitPrice,
               t2.tax_inclusive_total_price                    as taxInclusiveTotalPrice,
               t2.tax_exclusive_total_price                    as taxExclusiveTotalPrice,
               t1.inbound_num                                 as inboundNum,
               t1.create_time                                 as createTime,
               t1.create_time                                 as time,
               t1.create_by                                   as createBy
        from procurement_record_out t1
                 left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
                 left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
                 left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id
                 left join product_model t5 on t5.id = t4.product_model_id
                 left join product t6 on t6.id = t5.product_id
    </select>
</mapper>