From 593379b64d440c06887e8fbfa2803c70463dba19 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 30 三月 2026 19:27:57 +0800
Subject: [PATCH] fix: 产品入库的库存返回产品大类、规则型号、单位
---
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml | 72 ++++++-----
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java | 7 +
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java | 1
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml | 228 +++++++++++++++++++++----------------
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java | 38 +++++-
5 files changed, 211 insertions(+), 135 deletions(-)
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 7fb7b44..26c1873 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/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
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index 79603ae..5a4ffed 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/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);
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index caf11a0..15d12ec 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/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();
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index fed517d..1d99122 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/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 < DATE_ADD(#{req.reportDate}, INTERVAL 1 DAY)
+ and t1.create_time >= #{req.reportDate} and t1.create_time < 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 <= #{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>
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
index ec91c53..71c028f 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
+++ b/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>
\ No newline at end of file
--
Gitblit v1.9.3