溯源统计
This commit is contained in:
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodePageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodePageWithStatsRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodeRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.traceabilitycode.TraceabilityCodeDO;
|
||||
@@ -23,7 +24,6 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
@@ -75,29 +75,17 @@ public class TraceabilityCodeController {
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得溯源-溯源码分页")
|
||||
public CommonResult<PageResult<TraceabilityCodeRespVO>> getTraceabilityCodePage(@Valid TraceabilityCodePageReqVO pageReqVO) {
|
||||
PageResult<TraceabilityCodeDO> pageResult = traceabilityCodeService.getTraceabilityCodePage(pageReqVO);
|
||||
// 转换分页结果中的每个DO对象为RespVO对象
|
||||
PageResult<TraceabilityCodeRespVO> respPageResult = new PageResult<>();
|
||||
respPageResult.setList(pageResult.getList().stream()
|
||||
.map(TraceabilityDataConverter::convertToRespVO)
|
||||
.collect(Collectors.toList()));
|
||||
respPageResult.setTotal(pageResult.getTotal());
|
||||
return success(respPageResult);
|
||||
@Operation(summary = "获得溯源-溯源码分页(含统计信息)")
|
||||
public CommonResult<TraceabilityCodePageWithStatsRespVO> getTraceabilityCodePage(@Valid TraceabilityCodePageReqVO pageReqVO) {
|
||||
TraceabilityCodePageWithStatsRespVO result = traceabilityCodeService.getTraceabilityCodePageWithStats(pageReqVO);
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@Operation(summary = "获得溯源-溯源码批次集合")
|
||||
public CommonResult<PageResult<TraceabilityCodeRespVO>> getTraceabilityCodeList(@Valid TraceabilityCodePageReqVO pageReqVO) {
|
||||
PageResult<TraceabilityCodeDO> pageResult = traceabilityCodeService.getTraceabilityCodeList(pageReqVO);
|
||||
// 转换分页结果中的每个DO对象为RespVO对象
|
||||
PageResult<TraceabilityCodeRespVO> respPageResult = new PageResult<>();
|
||||
respPageResult.setList(pageResult.getList().stream()
|
||||
.map(TraceabilityDataConverter::convertToRespVO)
|
||||
.collect(Collectors.toList()));
|
||||
respPageResult.setTotal(pageResult.getTotal());
|
||||
return success(respPageResult);
|
||||
@Operation(summary = "获得溯源-溯源码批次集合(含统计信息)")
|
||||
public CommonResult<TraceabilityCodePageWithStatsRespVO> getTraceabilityCodeList(@Valid TraceabilityCodePageReqVO pageReqVO) {
|
||||
TraceabilityCodePageWithStatsRespVO result = traceabilityCodeService.getTraceabilityCodeListWithStats(pageReqVO);
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
|
||||
@@ -169,6 +169,7 @@ public class TraceabilityCodeRespVO {
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
private String creator;
|
||||
private String codeOutBatch;
|
||||
private Long scanCodeCount;
|
||||
|
||||
|
||||
@@ -59,6 +59,6 @@ public class EnvironmentIndicatorsDO extends BaseDO {
|
||||
* 说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
private String tenantId;
|
||||
|
||||
}
|
||||
@@ -7,8 +7,12 @@ import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.Traceab
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.traceabilitycode.TraceabilityCodeDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -83,6 +87,44 @@ public interface TraceabilityCodeMapper extends BaseMapperX<TraceabilityCodeDO>
|
||||
@Param("codeOutBatch") String codeOutBatch,
|
||||
@Param("status") Long status);
|
||||
|
||||
/**
|
||||
* 统计溯源码数量信息
|
||||
*/
|
||||
@Select("<script>" +
|
||||
"SELECT " +
|
||||
"COUNT(*) as totalAmount, " +
|
||||
"SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) as normalAmount, " +
|
||||
"SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as wasteAmount " +
|
||||
"FROM farm_traceability_code " +
|
||||
"WHERE 1=1 " +
|
||||
"<if test='tenantId != null'> AND tenant_id = #{tenantId} </if>" +
|
||||
"<if test='speciesCode != null'> AND species_code = #{speciesCode} </if>" +
|
||||
"<if test='speciesName != null and speciesName != \"\"'> AND species_name LIKE CONCAT('%', #{speciesName}, '%') </if>" +
|
||||
"<if test='baseId != null'> AND base_id = #{baseId} </if>" +
|
||||
"<if test='baseName != null and baseName != \"\"'> AND base_name LIKE CONCAT('%', #{baseName}, '%') </if>" +
|
||||
"<if test='plotId != null'> AND plot_id = #{plotId} </if>" +
|
||||
"<if test='plotName != null and plotName != \"\"'> AND plot_name LIKE CONCAT('%', #{plotName}, '%') </if>" +
|
||||
"<if test='harvestDateStart != null'> AND harvest_date >= #{harvestDateStart} </if>" +
|
||||
"<if test='harvestDateEnd != null'> AND harvest_date <= #{harvestDateEnd} </if>" +
|
||||
"<if test='farmingInputCount != null'> AND farming_input_count = #{farmingInputCount} </if>" +
|
||||
"<if test='productId != null'> AND product_id = #{productId} </if>" +
|
||||
"<if test='productName != null and productName != \"\"'> AND product_name LIKE CONCAT('%', #{productName}, '%') </if>" +
|
||||
"<if test='codeOutBatch != null and codeOutBatch != \"\"'> AND code_out_batch = #{codeOutBatch} </if>" +
|
||||
"</script>")
|
||||
Map<String, Object> selectStatistics(@Param("tenantId") String tenantId,
|
||||
@Param("speciesCode") String speciesCode,
|
||||
@Param("speciesName") String speciesName,
|
||||
@Param("baseId") String baseId,
|
||||
@Param("baseName") String baseName,
|
||||
@Param("plotId") String plotId,
|
||||
@Param("plotName") String plotName,
|
||||
@Param("harvestDateStart") String harvestDateStart,
|
||||
@Param("harvestDateEnd") String harvestDateEnd,
|
||||
@Param("farmingInputCount") Long farmingInputCount,
|
||||
@Param("productId") String productId,
|
||||
@Param("productName") String productName,
|
||||
@Param("codeOutBatch") String codeOutBatch);
|
||||
|
||||
default PageResult<TraceabilityCodeDO> selectPageList(TraceabilityCodePageReqVO reqVO) {
|
||||
// 先查询符合条件的最新记录ID列表
|
||||
List<TraceabilityCodeDO> latestRecords = selectLatestByCodeOutBatch(
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package cn.iocoder.yudao.module.farm.service.environmentindicators;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.environmentindicators.vo.EnvironmentIndicatorsPageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.environmentindicators.vo.EnvironmentIndicatorsSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.environmentindicators.EnvironmentIndicatorsDO;
|
||||
@@ -13,6 +15,7 @@ import org.springframework.validation.annotation.Validated;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.ENVIRONMENT_INDICATORS_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
@@ -29,8 +32,10 @@ public class EnvironmentIndicatorsServiceImpl implements EnvironmentIndicatorsSe
|
||||
|
||||
@Override
|
||||
public Integer createEnvironmentIndicators(EnvironmentIndicatorsSaveReqVO createReqVO) {
|
||||
LoginUser user = getLoginUser();
|
||||
// 插入
|
||||
EnvironmentIndicatorsDO environmentIndicators = BeanUtils.toBean(createReqVO, EnvironmentIndicatorsDO.class);
|
||||
environmentIndicators.setTenantId(String.valueOf(user.getTenantId()));
|
||||
environmentIndicatorsMapper.insert(environmentIndicators);
|
||||
|
||||
// 返回
|
||||
|
||||
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.farm.service.traceabilitycode;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodePageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodePageWithStatsRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.traceabilitycode.TraceabilityCodeDO;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -63,4 +64,20 @@ public interface TraceabilityCodeService {
|
||||
TraceabilityCodeDO scanTraceabilityCode(String id);
|
||||
|
||||
PageResult<TraceabilityCodeDO> getTraceabilityCodeList(@Valid TraceabilityCodePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得溯源-溯源码分页(含统计信息)
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 溯源-溯源码分页(含统计信息)
|
||||
*/
|
||||
TraceabilityCodePageWithStatsRespVO getTraceabilityCodePageWithStats(@Valid TraceabilityCodePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得溯源-溯源码批次集合(含统计信息)
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 溯源-溯源码批次集合(含统计信息)
|
||||
*/
|
||||
TraceabilityCodePageWithStatsRespVO getTraceabilityCodeListWithStats(@Valid TraceabilityCodePageReqVO pageReqVO);
|
||||
}
|
||||
@@ -8,9 +8,12 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
|
||||
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodePageReqVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodePageWithStatsRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodeRespVO;
|
||||
import cn.iocoder.yudao.module.farm.controller.admin.traceabilitycode.vo.TraceabilityCodeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.farm.dal.dataobject.traceabilitycode.TraceabilityCodeDO;
|
||||
import cn.iocoder.yudao.module.farm.dal.mysql.traceabilitycode.TraceabilityCodeMapper;
|
||||
import cn.iocoder.yudao.module.farm.framework.util.TraceabilityDataConverter;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -18,6 +21,8 @@ import org.springframework.validation.annotation.Validated;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||
@@ -296,4 +301,82 @@ public class TraceabilityCodeServiceImpl implements TraceabilityCodeService {
|
||||
// 这里我们不需要实际转换,因为DO对象保持Long类型用于数据库存储
|
||||
// 转换将在VO层进行,确保前端接收到的是Boolean类型
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraceabilityCodePageWithStatsRespVO getTraceabilityCodePageWithStats(TraceabilityCodePageReqVO pageReqVO) {
|
||||
// 获取分页数据
|
||||
PageResult<TraceabilityCodeDO> pageResult = getTraceabilityCodePage(pageReqVO);
|
||||
|
||||
// 获取统计信息
|
||||
Map<String, Object> statisticsMap = traceabilityCodeMapper.selectStatistics(
|
||||
pageReqVO.getTenantId(),
|
||||
pageReqVO.getSpeciesCode(),
|
||||
pageReqVO.getSpeciesName(),
|
||||
pageReqVO.getBaseId(),
|
||||
pageReqVO.getBaseName(),
|
||||
pageReqVO.getPlotId(),
|
||||
pageReqVO.getPlotName(),
|
||||
pageReqVO.getHarvestDateStart(),
|
||||
pageReqVO.getHarvestDateEnd(),
|
||||
pageReqVO.getFarmingInputCount(),
|
||||
pageReqVO.getProductId(),
|
||||
pageReqVO.getProductName(),
|
||||
pageReqVO.getCodeOutBatch()
|
||||
);
|
||||
|
||||
// 转换统计信息
|
||||
TraceabilityCodePageWithStatsRespVO.StatisticsInfo statistics = new TraceabilityCodePageWithStatsRespVO.StatisticsInfo(
|
||||
((Number) statisticsMap.get("totalAmount")).longValue(),
|
||||
((Number) statisticsMap.get("normalAmount")).longValue(),
|
||||
((Number) statisticsMap.get("wasteAmount")).longValue()
|
||||
);
|
||||
|
||||
// 转换分页结果为VO
|
||||
PageResult<TraceabilityCodeRespVO> respPageResult = new PageResult<>();
|
||||
respPageResult.setList(pageResult.getList().stream()
|
||||
.map(TraceabilityDataConverter::convertToRespVO)
|
||||
.collect(Collectors.toList()));
|
||||
respPageResult.setTotal(pageResult.getTotal());
|
||||
|
||||
return new TraceabilityCodePageWithStatsRespVO(respPageResult, statistics);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TraceabilityCodePageWithStatsRespVO getTraceabilityCodeListWithStats(TraceabilityCodePageReqVO pageReqVO) {
|
||||
// 获取分页数据
|
||||
PageResult<TraceabilityCodeDO> pageResult = getTraceabilityCodeList(pageReqVO);
|
||||
|
||||
// 获取统计信息
|
||||
Map<String, Object> statisticsMap = traceabilityCodeMapper.selectStatistics(
|
||||
pageReqVO.getTenantId(),
|
||||
pageReqVO.getSpeciesCode(),
|
||||
pageReqVO.getSpeciesName(),
|
||||
pageReqVO.getBaseId(),
|
||||
pageReqVO.getBaseName(),
|
||||
pageReqVO.getPlotId(),
|
||||
pageReqVO.getPlotName(),
|
||||
pageReqVO.getHarvestDateStart(),
|
||||
pageReqVO.getHarvestDateEnd(),
|
||||
pageReqVO.getFarmingInputCount(),
|
||||
pageReqVO.getProductId(),
|
||||
pageReqVO.getProductName(),
|
||||
pageReqVO.getCodeOutBatch()
|
||||
);
|
||||
|
||||
// 转换统计信息
|
||||
TraceabilityCodePageWithStatsRespVO.StatisticsInfo statistics = new TraceabilityCodePageWithStatsRespVO.StatisticsInfo(
|
||||
((Number) statisticsMap.get("totalAmount")).longValue(),
|
||||
((Number) statisticsMap.get("normalAmount")).longValue(),
|
||||
((Number) statisticsMap.get("wasteAmount")).longValue()
|
||||
);
|
||||
|
||||
// 转换分页结果为VO
|
||||
PageResult<TraceabilityCodeRespVO> respPageResult = new PageResult<>();
|
||||
respPageResult.setList(pageResult.getList().stream()
|
||||
.map(TraceabilityDataConverter::convertToRespVO)
|
||||
.collect(Collectors.toList()));
|
||||
respPageResult.setTotal(pageResult.getTotal());
|
||||
|
||||
return new TraceabilityCodePageWithStatsRespVO(respPageResult, statistics);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user