班次奶量和羊奶出入库bug修改

This commit is contained in:
ll
2026-02-08 22:10:33 +08:00
parent 591b6d537f
commit 7dbe337a93
6 changed files with 55 additions and 25 deletions

View File

@@ -4,6 +4,7 @@ import com.zhyc.common.annotation.Log;
import com.zhyc.common.core.controller.BaseController; import com.zhyc.common.core.controller.BaseController;
import com.zhyc.common.core.domain.AjaxResult; import com.zhyc.common.core.domain.AjaxResult;
import com.zhyc.common.enums.BusinessType; import com.zhyc.common.enums.BusinessType;
import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; // 引入实体类
import com.zhyc.module.dairyProducts.service.INpMilkInOutStoreService; import com.zhyc.module.dairyProducts.service.INpMilkInOutStoreService;
import com.zhyc.common.utils.poi.ExcelUtil; import com.zhyc.common.utils.poi.ExcelUtil;
import com.zhyc.common.core.page.TableDataInfo; import com.zhyc.common.core.page.TableDataInfo;
@@ -32,7 +33,16 @@ public class NpMilkInOutStoreController extends BaseController {
@RequestParam(required=false) Date datetimeEnd @RequestParam(required=false) Date datetimeEnd
) { ) {
startPage(); startPage();
List<Map<String, Object>> 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<Map<String, Object>> rows = service.selectWithDynamicColumns(query);
return getDataTable(rows); return getDataTable(rows);
} }
@@ -45,6 +55,7 @@ public class NpMilkInOutStoreController extends BaseController {
service.batchInsertFromRows(list); service.batchInsertFromRows(list);
return AjaxResult.success("导入成功"); return AjaxResult.success("导入成功");
} }
/** 导出 Excel */ /** 导出 Excel */
@PreAuthorize("@ss.hasPermi('milkInOutStore:export')") @PreAuthorize("@ss.hasPermi('milkInOutStore:export')")
@Log(title="导出羊奶出入库", businessType=BusinessType.EXPORT) @Log(title="导出羊奶出入库", businessType=BusinessType.EXPORT)
@@ -53,10 +64,20 @@ public class NpMilkInOutStoreController extends BaseController {
@RequestParam(required=false) Date datetimeStart, @RequestParam(required=false) Date datetimeStart,
@RequestParam(required=false) Date datetimeEnd @RequestParam(required=false) Date datetimeEnd
) { ) {
List<Map<String,Object>> 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<Map<String,Object>> rows = service.selectWithDynamicColumns(query);
// 解决方案:强制转换并压制警告 // 解决方案:强制转换并压制警告
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
ExcelUtil<Map<String,Object>> util = new ExcelUtil<>((Class<Map<String,Object>>) (Class<?>) Map.class); ExcelUtil<Map<String,Object>> util = new ExcelUtil<>((Class<Map<String,Object>>) (Class<?>) Map.class);
util.exportExcel(response, rows, "羊奶出入库数据");
} }
/** 获取可选列定义(饲喂来源 + 销售去向) */ /** 获取可选列定义(饲喂来源 + 销售去向) */
@@ -65,5 +86,4 @@ public class NpMilkInOutStoreController extends BaseController {
public AjaxResult getColumns(){ public AjaxResult getColumns(){
return AjaxResult.success(service.getAllColumnOptions()); return AjaxResult.success(service.getAllColumnOptions());
} }
} }

View File

@@ -5,11 +5,20 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhyc.common.annotation.Excel; 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 static final long serialVersionUID = 1L;
private Long id; private Long id;
// 注意BaseEntity 中通常已包含 createTime 和 updateTime。
// 如果父类已有,此处保留会发生字段遮蔽(Shadowing),但能保证代码兼容性。
// 为了修复 params 报错,保留原样即可,核心是 extends BaseEntity。
private Date createTime; private Date createTime;
private Date updateTime; private Date updateTime;

View File

@@ -3,16 +3,16 @@ package com.zhyc.module.dairyProducts.mapper;
import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public interface NpMilkInOutStoreMapper { public interface NpMilkInOutStoreMapper {
/** /**
* 动态列查询 * 动态列查询
* 修改:使用 @Param("queryParams") 传递实体,包含 params.dataScope
*/ */
List<Map<String,Object>> selectWithColumns( List<Map<String,Object>> selectWithColumns(
@Param("start") Date start, @Param("end") Date end, @Param("queryParams") NpMilkInOutStore queryParams,
@Param("feedSources") List<String> feedSources, @Param("feedSources") List<String> feedSources,
@Param("saleDestinations") List<String> saleDestinations @Param("saleDestinations") List<String> saleDestinations
); );
@@ -23,7 +23,7 @@ public interface NpMilkInOutStoreMapper {
int insertStore(NpMilkInOutStore store); int insertStore(NpMilkInOutStore store);
/** /**
* 插入饲喂子表(已修正:增加 userId 和 deptId 参数) * 插入饲喂子表
*/ */
void insertFeedRecord( void insertFeedRecord(
@Param("storeId") Integer storeId, @Param("storeId") Integer storeId,
@@ -34,7 +34,7 @@ public interface NpMilkInOutStoreMapper {
); );
/** /**
* 插入销售子表(已修正:增加 userId 和 deptId 参数) * 插入销售子表
*/ */
void insertSaleRecord( void insertSaleRecord(
@Param("storeId") Integer storeId, @Param("storeId") Integer storeId,

View File

@@ -1,15 +1,16 @@
package com.zhyc.module.dairyProducts.service; package com.zhyc.module.dairyProducts.service;
import com.zhyc.module.dairyProducts.domain.NpMilkInOutStore; // 引入实体
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public interface INpMilkInOutStoreService { public interface INpMilkInOutStoreService {
List<Map<String,Object>> selectWithDynamicColumns(Date start, Date end); // 修改参数为实体对象
List<Map<String,Object>> selectWithDynamicColumns(NpMilkInOutStore query);
List<Map<String,Object>> getAllColumnOptions(); List<Map<String,Object>> getAllColumnOptions();
List<Map<String,Object>> parseImportExcel(MultipartFile file) throws Exception; List<Map<String,Object>> parseImportExcel(MultipartFile file) throws Exception;
void batchInsertFromRows(List<Map<String,Object>> rows) throws Exception; void batchInsertFromRows(List<Map<String,Object>> rows) throws Exception;
} }

View File

@@ -21,11 +21,12 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService {
private NpMilkInOutStoreMapper mapper; private NpMilkInOutStoreMapper mapper;
@Override @Override
@DataScope(deptAlias = "s", userAlias = "s") @DataScope(deptAlias = "s", userAlias = "s") // 启用数据权限注解
public List<Map<String, Object>> selectWithDynamicColumns(Date start, Date end) { public List<Map<String, Object>> selectWithDynamicColumns(NpMilkInOutStore query) {
List<String> feed = mapper.selectFeedSources(); List<String> feed = mapper.selectFeedSources();
List<String> sale = mapper.selectSaleDestinations(); List<String> sale = mapper.selectSaleDestinations();
return mapper.selectWithColumns(start, end, feed, sale); // 将实体对象传递给 Mapper
return mapper.selectWithColumns(query, feed, sale);
} }
@Override @Override
@@ -35,6 +36,7 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService {
m.put("sale", mapper.selectSaleDestinations()); m.put("sale", mapper.selectSaleDestinations());
return Collections.singletonList(m); return Collections.singletonList(m);
} }
@Override @Override
public List<Map<String, Object>> parseImportExcel(MultipartFile file) throws Exception { public List<Map<String, Object>> parseImportExcel(MultipartFile file) throws Exception {
// 用 Apache POI 解析 Excel 第一行标题,动态映射列名跟 unit cells // 用 Apache POI 解析 Excel 第一行标题,动态映射列名跟 unit cells
@@ -61,10 +63,8 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService {
@Override @Override
public void batchInsertFromRows(List<Map<String, Object>> rows) throws Exception { public void batchInsertFromRows(List<Map<String, Object>> rows) throws Exception {
// === 修改开始获取当前用户和部门ID ===
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
Long deptId = SecurityUtils.getDeptId(); Long deptId = SecurityUtils.getDeptId();
// === 修改结束 ===
for (Map<String,Object> row : rows) { for (Map<String,Object> row : rows) {
// 提取主表字段 // 提取主表字段
@@ -76,10 +76,8 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService {
// 手动填充其它主表字段,这里省略了具体的 get 调用,请根据您的 Excel 列名自行补充 // 手动填充其它主表字段,这里省略了具体的 get 调用,请根据您的 Excel 列名自行补充
// store.setColostSheep(...); // store.setColostSheep(...);
// === 修改开始给主表实体注入用户和部门ID ===
store.setUserId(userId); store.setUserId(userId);
store.setDeptId(deptId); store.setDeptId(deptId);
// === 修改结束 ===
mapper.insertStore(store); mapper.insertStore(store);
Integer sid = store.getId(); Integer sid = store.getId();
@@ -94,10 +92,8 @@ public class NpMilkInOutStoreServiceImpl implements INpMilkInOutStoreService {
BigDecimal amt = new BigDecimal(ent.getValue().toString()); BigDecimal amt = new BigDecimal(ent.getValue().toString());
if (mapper.selectFeedSources().contains(col)) { if (mapper.selectFeedSources().contains(col)) {
// === 修改开始:插入饲喂子表时传入 userId 和 deptId ===
mapper.insertFeedRecord(sid, col, amt, userId, deptId); mapper.insertFeedRecord(sid, col, amt, userId, deptId);
} else if (mapper.selectSaleDestinations().contains(col)) { } else if (mapper.selectSaleDestinations().contains(col)) {
// === 修改开始:插入销售子表时传入 userId 和 deptId ===
mapper.insertSaleRecord(sid, col, amt, userId, deptId); mapper.insertSaleRecord(sid, col, amt, userId, deptId);
} }
} }

View File

@@ -18,10 +18,14 @@
LEFT JOIN np_milk_feed_records fr ON fr.store_id = s.id 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 LEFT JOIN np_milk_sale_records sr ON sr.store_id = s.id
<where> <where>
<if test="start != null"> s.datetime &gt;= #{start}</if> <if test="queryParams.params.beginTime != null and queryParams.params.beginTime != ''">
<if test="end != null"> AND s.datetime &lt;= #{end}</if> AND s.datetime &gt;= #{queryParams.params.beginTime}
</if>
<if test="queryParams.params.endTime != null and queryParams.params.endTime != ''">
AND s.datetime &lt;= #{queryParams.params.endTime}
</if>
${params.dataScope} ${queryParams.params.dataScope}
</where> </where>
GROUP BY s.id GROUP BY s.id
ORDER BY s.datetime ORDER BY s.datetime