From 7dbe337a93521ff424bc8a479d637623a82cb187 Mon Sep 17 00:00:00 2001 From: ll <1079863556@qq.com> Date: Sun, 8 Feb 2026 22:10:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8F=AD=E6=AC=A1=E5=A5=B6=E9=87=8F=E5=92=8C?= =?UTF-8?q?=E7=BE=8A=E5=A5=B6=E5=87=BA=E5=85=A5=E5=BA=93bug=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NpMilkInOutStoreController.java | 28 ++++++++++++++++--- .../domain/NpMilkProdClasses.java | 11 +++++++- .../mapper/NpMilkInOutStoreMapper.java | 8 +++--- .../service/INpMilkInOutStoreService.java | 9 +++--- .../impl/NpMilkInOutStoreServiceImpl.java | 14 ++++------ .../dairyProducts/NpMilkInOutStoreMapper.xml | 10 +++++-- 6 files changed, 55 insertions(+), 25 deletions(-) diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkInOutStoreController.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkInOutStoreController.java index 1d7f8e5..b689bb4 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkInOutStoreController.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/controller/NpMilkInOutStoreController.java @@ -4,6 +4,7 @@ import com.zhyc.common.annotation.Log; import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.domain.AjaxResult; import com.zhyc.common.enums.BusinessType; +import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; // 引入实体类 import com.zhyc.module.dairyProducts.service.INpMilkInOutStoreService; import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.common.core.page.TableDataInfo; @@ -32,7 +33,16 @@ public class NpMilkInOutStoreController extends BaseController { @RequestParam(required=false) Date datetimeEnd ) { startPage(); - List> rows = service.selectWithDynamicColumns(datetimeStart, datetimeEnd); + // 修改:封装查询参数到实体对象,以便利用 BaseEntity 的 params 属性传递数据权限 + NpMilkInOutStore query = new NpMilkInOutStore(); + if (datetimeStart != null) { + query.getParams().put("beginTime", datetimeStart); + } + if (datetimeEnd != null) { + query.getParams().put("endTime", datetimeEnd); + } + + List> rows = service.selectWithDynamicColumns(query); return getDataTable(rows); } @@ -45,6 +55,7 @@ public class NpMilkInOutStoreController extends BaseController { service.batchInsertFromRows(list); return AjaxResult.success("导入成功"); } + /** 导出 Excel */ @PreAuthorize("@ss.hasPermi('milkInOutStore:export')") @Log(title="导出羊奶出入库", businessType=BusinessType.EXPORT) @@ -53,10 +64,20 @@ public class NpMilkInOutStoreController extends BaseController { @RequestParam(required=false) Date datetimeStart, @RequestParam(required=false) Date datetimeEnd ) { - List> rows = service.selectWithDynamicColumns(datetimeStart, datetimeEnd); + // 修改:封装查询参数到实体对象 + NpMilkInOutStore query = new NpMilkInOutStore(); + if (datetimeStart != null) { + query.getParams().put("beginTime", datetimeStart); + } + if (datetimeEnd != null) { + query.getParams().put("endTime", datetimeEnd); + } + + List> rows = service.selectWithDynamicColumns(query); // 解决方案:强制转换并压制警告 @SuppressWarnings("unchecked") ExcelUtil> util = new ExcelUtil<>((Class>) (Class) Map.class); + util.exportExcel(response, rows, "羊奶出入库数据"); } /** 获取可选列定义(饲喂来源 + 销售去向) */ @@ -65,5 +86,4 @@ public class NpMilkInOutStoreController extends BaseController { public AjaxResult getColumns(){ return AjaxResult.success(service.getAllColumnOptions()); } -} - +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java index 3970f1e..81eb227 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/domain/NpMilkProdClasses.java @@ -5,11 +5,20 @@ import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.zhyc.common.annotation.Excel; +import com.zhyc.common.core.domain.BaseEntity; -public class NpMilkProdClasses implements Serializable { +/** + * 班次奶量对象 np_milk_prod_classes + * * 修改说明:继承 BaseEntity 以支持数据权限(params.dataScope) + */ +public class NpMilkProdClasses extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; private Long id; + + // 注意:BaseEntity 中通常已包含 createTime 和 updateTime。 + // 如果父类已有,此处保留会发生字段遮蔽(Shadowing),但能保证代码兼容性。 + // 为了修复 params 报错,保留原样即可,核心是 extends BaseEntity。 private Date createTime; private Date updateTime; diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java index 722f7c7..f341898 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/mapper/NpMilkInOutStoreMapper.java @@ -3,16 +3,16 @@ package com.zhyc.module.dairyProducts.mapper; import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; import org.apache.ibatis.annotations.Param; -import java.util.Date; import java.util.List; import java.util.Map; public interface NpMilkInOutStoreMapper { /** * 动态列查询 + * 修改:使用 @Param("queryParams") 传递实体,包含 params.dataScope */ List> selectWithColumns( - @Param("start") Date start, @Param("end") Date end, + @Param("queryParams") NpMilkInOutStore queryParams, @Param("feedSources") List feedSources, @Param("saleDestinations") List saleDestinations ); @@ -23,7 +23,7 @@ public interface NpMilkInOutStoreMapper { int insertStore(NpMilkInOutStore store); /** - * 插入饲喂子表(已修正:增加 userId 和 deptId 参数) + * 插入饲喂子表 */ void insertFeedRecord( @Param("storeId") Integer storeId, @@ -34,7 +34,7 @@ public interface NpMilkInOutStoreMapper { ); /** - * 插入销售子表(已修正:增加 userId 和 deptId 参数) + * 插入销售子表 */ void insertSaleRecord( @Param("storeId") Integer storeId, diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/INpMilkInOutStoreService.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/INpMilkInOutStoreService.java index 5bd59d5..6d90d04 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/INpMilkInOutStoreService.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/INpMilkInOutStoreService.java @@ -1,15 +1,16 @@ package com.zhyc.module.dairyProducts.service; +import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; // 引入实体 import org.springframework.web.multipart.MultipartFile; -import java.util.Date; import java.util.List; import java.util.Map; public interface INpMilkInOutStoreService { - List> selectWithDynamicColumns(Date start, Date end); + // 修改参数为实体对象 + List> selectWithDynamicColumns(NpMilkInOutStore query); + List> getAllColumnOptions(); List> parseImportExcel(MultipartFile file) throws Exception; void batchInsertFromRows(List> rows) throws Exception; -} - +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java index 7584842..b03fdf2 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/dairyProducts/service/impl/NpMilkInOutStoreServiceImpl.java @@ -21,11 +21,12 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { private NpMilkInOutStoreMapper mapper; @Override - @DataScope(deptAlias = "s", userAlias = "s") - public List> selectWithDynamicColumns(Date start, Date end) { + @DataScope(deptAlias = "s", userAlias = "s") // 启用数据权限注解 + public List> selectWithDynamicColumns(NpMilkInOutStore query) { List feed = mapper.selectFeedSources(); List sale = mapper.selectSaleDestinations(); - return mapper.selectWithColumns(start, end, feed, sale); + // 将实体对象传递给 Mapper + return mapper.selectWithColumns(query, feed, sale); } @Override @@ -35,6 +36,7 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { m.put("sale", mapper.selectSaleDestinations()); return Collections.singletonList(m); } + @Override public List> parseImportExcel(MultipartFile file) throws Exception { // 用 Apache POI 解析 Excel 第一行标题,动态映射列名跟 unit cells @@ -61,10 +63,8 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { @Override public void batchInsertFromRows(List> rows) throws Exception { - // === 修改开始:获取当前用户和部门ID === Long userId = SecurityUtils.getUserId(); Long deptId = SecurityUtils.getDeptId(); - // === 修改结束 === for (Map row : rows) { // 提取主表字段 @@ -76,10 +76,8 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { // 手动填充其它主表字段,这里省略了具体的 get 调用,请根据您的 Excel 列名自行补充 // store.setColostSheep(...); - // === 修改开始:给主表实体注入用户和部门ID === store.setUserId(userId); store.setDeptId(deptId); - // === 修改结束 === mapper.insertStore(store); Integer sid = store.getId(); @@ -94,10 +92,8 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService { BigDecimal amt = new BigDecimal(ent.getValue().toString()); if (mapper.selectFeedSources().contains(col)) { - // === 修改开始:插入饲喂子表时传入 userId 和 deptId === mapper.insertFeedRecord(sid, col, amt, userId, deptId); } else if (mapper.selectSaleDestinations().contains(col)) { - // === 修改开始:插入销售子表时传入 userId 和 deptId === mapper.insertSaleRecord(sid, col, amt, userId, deptId); } } diff --git a/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml b/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml index 79dce7f..ad594ea 100644 --- a/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml +++ b/zhyc-module/src/main/resources/mapper/dairyProducts/NpMilkInOutStoreMapper.xml @@ -18,10 +18,14 @@ LEFT JOIN np_milk_feed_records fr ON fr.store_id = s.id LEFT JOIN np_milk_sale_records sr ON sr.store_id = s.id - s.datetime >= #{start} - AND s.datetime <= #{end} + + AND s.datetime >= #{queryParams.params.beginTime} + + + AND s.datetime <= #{queryParams.params.endTime} + - ${params.dataScope} + ${queryParams.params.dataScope} GROUP BY s.id ORDER BY s.datetime