package com.fzzy.igds; import com.bstek.dorado.annotation.DataProvider; import com.bstek.dorado.data.provider.Page; import com.fzzy.igds.constant.DepotType; import com.fzzy.igds.constant.FoodVariety; import com.fzzy.igds.data.GrainDataReport; import com.fzzy.igds.domain.DepotConf; import com.fzzy.igds.domain.Grain; import com.fzzy.igds.service.DepotConfService; import com.fzzy.igds.service.GrainService; import com.fzzy.igds.service.SysDeptService; import com.fzzy.igds.utils.ContextUtil; import com.fzzy.igds.utils.DateUtil; import com.fzzy.igds.utils.GrainDataBuilder; import com.ruoyi.common.core.domain.entity.SysDept; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.*; /** * @Description 粮情报表页面入口 * @Author CZT * @Date 2025/12/9 10:19 */ @Component public class GrainReportPR { @Resource private GrainService grainService; @Resource private SysDeptService sysDeptService; @Resource private DepotConfService depotConfService; /** * grainReportPR#getQuery * @return */ @DataProvider public Map getQuery() { Map result = new HashMap<>(); SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null)); result.put("title", "粮情汇总表"); if (null != subDept) { result.put("title", subDept.getDeptName() + "粮情汇总表"); result.put("deptId", subDept.getDeptId()); } result.put("timeDesc", "检测时间"); result.put("depotNameLabel", ""); result.put("depotName", ""); result.put("end", new Date()); Date start = DateUtil.getNewByDay(new Date(), -30); result.put("start", start); result.put("timeDesc", DateFormatUtils.format(start, "yyyy-MM-dd") + " 截至:" + DateFormatUtils.format(new Date(), "yyyy-MM-dd")); result.put("createUser", ContextUtil.getLoginUserName()); result.put("createTime", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); return result; } /** * 粮情数据报表数据分页查询,查询条件根据选择具体日期查询 * grainReportPR#getDataReport * * @param page * @param param */ @DataProvider public void getDataReport(Page page, Map param) { com.baomidou.mybatisplus.extension.plugins.pagination.Page corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize()); if (null == param) { param = new HashMap<>(); } grainService.pageData(corePage, param); List records = corePage.getRecords(); // 是否允许重复,在按照某天查询情况,只获取当天最后一条信息 0= 不允许,1=允许 String repeat = (String) param.get(("repeat")); Map tempMap = new HashMap<>(); // 调整数据 int maxZ = 3; int hour = 0; List dataList = new ArrayList<>(); GrainDataReport report; DepotConf depotConf; for (Grain grain : records) { // 去除重复 if (null != repeat && "0".equals(repeat)) { if (null == tempMap.get(grain.getDepotId())) { tempMap.put(grain.getDepotId(), grain.getBatchId()); } else { continue; } } report = new GrainDataReport(); BeanUtils.copyProperties(grain, report); // 调整类型字段显示中文 report.setDepotTypeName(DepotType.getMsg(report.getDepotType())); report.setFoodVariety(FoodVariety.getMsg(report.getFoodVariety())); if (report.getMaxZ() > maxZ) { maxZ = report.getMaxZ(); } report.setMaxZ(maxZ); depotConf = depotConfService.getCacheDepotConfByDepotId(grain.getCompanyId(), grain.getDepotId()); GrainDataBuilder.updateReport(report, depotConf); dataList.add(report); } // 重新封装 page.setEntities(dataList); page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal()))); } }