Merge remote-tracking branch 'origin/main'
# Conflicts: # yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java # yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java
This commit is contained in:
@@ -97,11 +97,4 @@ public class BaseInfoController {
|
|||||||
BeanUtils.toBean(list, BaseInfoRespVO.class));
|
BeanUtils.toBean(list, BaseInfoRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/get/baser-name-list")
|
|
||||||
@Operation(summary = "获得基地名称-下拉列表")
|
|
||||||
public CommonResult<List<BaseNameRespVO>> getBaseNameList() {
|
|
||||||
List<BaseNameRespVO> res = baseInfoService.getBaseNameList();
|
|
||||||
return success(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 基地,地块,计划
|
||||||
|
* @author: binda
|
||||||
|
* @date: 2025/8/21 21:47
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class BaseNamePlanRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "基地id")
|
||||||
|
private String id;
|
||||||
|
@Schema(description = "基地名称")
|
||||||
|
private String name;
|
||||||
|
private List<PlotInfoVO> children;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class PlotInfoVO {
|
||||||
|
@Schema(description = "地块ID")
|
||||||
|
private String plotId;
|
||||||
|
@Schema(description = "地块名称")
|
||||||
|
private String plotName;
|
||||||
|
private List<PlanInfoVO> children;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class PlanInfoVO {
|
||||||
|
@Schema(description = "计划编号")
|
||||||
|
private String planNumber;
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Schema(description = "排产开始日期")
|
||||||
|
private LocalDate productionStartDate;
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@Schema(description = "排产结束日期")
|
||||||
|
private LocalDate productionEndDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,6 +3,9 @@ package cn.iocoder.yudao.module.farm.controller.admin.dict;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNamePlanRespVO;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNameRespVO;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.*;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.CommonDictRespVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.CommonDictRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.FarmingTypeRespVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.FarmingTypeRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO;
|
||||||
@@ -29,18 +32,21 @@ import cn.iocoder.yudao.module.farm.dal.dataobject.farmingtypemaintenance.Farmin
|
|||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
|
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
|
||||||
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
|
import cn.iocoder.yudao.module.farm.service.baseinfo.BaseInfoService;
|
||||||
import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService;
|
import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService;
|
||||||
import cn.iocoder.yudao.module.farm.service.farmingnamemaintenance.FarmingNameMaintenanceService;
|
import cn.iocoder.yudao.module.farm.service.farmingnamemaintenance.FarmingNameMaintenanceService;
|
||||||
import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService;
|
import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService;
|
||||||
import cn.iocoder.yudao.module.farm.service.inputlibrary.InputLibraryService;
|
import cn.iocoder.yudao.module.farm.service.inputlibrary.InputLibraryService;
|
||||||
|
import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService;
|
||||||
import cn.iocoder.yudao.module.farm.service.speciesclassifylibrary.SpeciesClassifyLibraryService;
|
import cn.iocoder.yudao.module.farm.service.speciesclassifylibrary.SpeciesClassifyLibraryService;
|
||||||
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
|
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
|
||||||
import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService;
|
import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService;
|
||||||
import cn.iocoder.yudao.module.farm.utils.TreeStructureUtil;
|
import cn.iocoder.yudao.module.farm.utils.TreeStructureUtil;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
import org.redisson.misc.Hash;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -50,6 +56,7 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
@@ -71,22 +78,22 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class DictController {
|
public class DictController {
|
||||||
|
|
||||||
private final FarmingTypeMaintenanceService farmingTypeMaintenanceService;
|
|
||||||
private final FarmingNameMaintenanceService farmingNameMaintenanceService;
|
|
||||||
private final SpeciesLibraryService speciesLibraryService;
|
private final SpeciesLibraryService speciesLibraryService;
|
||||||
private final SpeciesClassifyLibraryService speciesClassifyLibraryService;
|
private final SpeciesClassifyLibraryService speciesClassifyLibraryService;
|
||||||
private final InputLibraryService inputLibraryService;
|
private final InputLibraryService inputLibraryService;
|
||||||
private final DisasterDataService disasterDataService;
|
private final DisasterDataService disasterDataService;
|
||||||
private final SysDictService sysDictService;
|
private final SysDictService sysDictService;
|
||||||
|
private final ProductionPlanService productionPlanService;
|
||||||
|
private final BaseInfoService baseInfoService;
|
||||||
|
|
||||||
public DictController(FarmingTypeMaintenanceService farmingTypeMaintenanceService, FarmingNameMaintenanceService farmingNameMaintenanceService, SpeciesLibraryService speciesLibraryService, SpeciesClassifyLibraryService speciesClassifyLibraryService, InputLibraryService inputLibraryService, DisasterDataService disasterDataService, SysDictService sysDictService) {
|
public DictController(SpeciesLibraryService speciesLibraryService, SpeciesClassifyLibraryService speciesClassifyLibraryService, InputLibraryService inputLibraryService, DisasterDataService disasterDataService, SysDictService sysDictService, ProductionPlanService productionPlanService, BaseInfoService baseInfoService) {
|
||||||
this.farmingTypeMaintenanceService = farmingTypeMaintenanceService;
|
|
||||||
this.farmingNameMaintenanceService = farmingNameMaintenanceService;
|
|
||||||
this.speciesLibraryService = speciesLibraryService;
|
this.speciesLibraryService = speciesLibraryService;
|
||||||
this.speciesClassifyLibraryService = speciesClassifyLibraryService;
|
this.speciesClassifyLibraryService = speciesClassifyLibraryService;
|
||||||
this.inputLibraryService = inputLibraryService;
|
this.inputLibraryService = inputLibraryService;
|
||||||
this.disasterDataService = disasterDataService;
|
this.disasterDataService = disasterDataService;
|
||||||
this.sysDictService = sysDictService;
|
this.sysDictService = sysDictService;
|
||||||
|
this.productionPlanService = productionPlanService;
|
||||||
|
this.baseInfoService = baseInfoService;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 农事类型
|
// 农事类型
|
||||||
@@ -290,6 +297,27 @@ public class DictController {
|
|||||||
log.error("获取物种类别列表失败", e);
|
log.error("获取物种类别列表失败", e);
|
||||||
return success(new ArrayList<>());
|
return success(new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
return success(sysDictService.getSpeciesClassifyLibraryList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "字典数据维护-下拉框列表-物种类别与模型")
|
||||||
|
@GetMapping("/list/species-classify-model")
|
||||||
|
public CommonResult<List<SpeciesClassifyLibraryRespVO>> getSpeciesClassifyAndModelList(){
|
||||||
|
return success(sysDictService.getSpeciesClassifyAndModelList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list/base-name")
|
||||||
|
@Operation(summary = "字典数据维护-下拉框列表-基地,地块二级联动")
|
||||||
|
public CommonResult<List<BaseNameRespVO>> getBaseNameList() {
|
||||||
|
List<BaseNameRespVO> res = baseInfoService.getBaseNameList();
|
||||||
|
return success(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list/base-name-plan")
|
||||||
|
@Operation(summary = "字典数据维护-下拉框列表-基地,地块,任务三级联动")
|
||||||
|
public CommonResult<List<BaseNamePlanRespVO>> getBaseNameAndPlanList() {
|
||||||
|
List<BaseNamePlanRespVO> res = productionPlanService.getBaseNameAndPlanList();
|
||||||
|
return success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "字典数据维护-下拉框列表-通用字典分类查询")
|
@Operation(summary = "字典数据维护-下拉框列表-通用字典分类查询")
|
||||||
|
|||||||
@@ -16,19 +16,16 @@ import java.util.List;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class SpeciesClassifyLibraryRespVO {
|
public class SpeciesClassifyLibraryRespVO {
|
||||||
@Schema(description = "ID")
|
|
||||||
private String id;
|
|
||||||
@Schema(description = "一级分类-编码")
|
@Schema(description = "一级分类-编码")
|
||||||
private String SpeciesClassCode;
|
private String speciesClassCode;
|
||||||
@Schema(description = "一级分类-名称")
|
@Schema(description = "一级分类-名称")
|
||||||
private String SpeciesClassName;
|
private String speciesClassName;
|
||||||
@Schema(description = "使用状态")
|
|
||||||
private String useStatus;
|
|
||||||
|
|
||||||
private List<SpeciesClassifyLibraryRespVO> children;
|
private List<SpeciesClassifyLibraryRespVO> children;
|
||||||
|
|
||||||
public SpeciesClassifyLibraryRespVO(String speciesClassCode, String speciesClassName) {
|
public SpeciesClassifyLibraryRespVO(String speciesClassCode, String speciesClassName) {
|
||||||
SpeciesClassCode = speciesClassCode;
|
this.speciesClassCode = speciesClassCode;
|
||||||
SpeciesClassName = speciesClassName;
|
this.speciesClassName = speciesClassName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public interface BaseInfoService {
|
|||||||
int getBaseCount(Long tenantId);
|
int getBaseCount(Long tenantId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基地名称-下拉列表
|
* 基地,地块-下拉列表(两级联动)
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<BaseNameRespVO> getBaseNameList();
|
List<BaseNameRespVO> getBaseNameList();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.farm.service.productionplan;
|
package cn.iocoder.yudao.module.farm.service.productionplan;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNamePlanRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanSaveReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO;
|
||||||
@@ -67,5 +68,10 @@ public interface ProductionPlanService {
|
|||||||
*/
|
*/
|
||||||
PageResult<ProductionPlanDO> getProductionPlanPage(ProductionPlanPageReqVO pageReqVO);
|
PageResult<ProductionPlanDO> getProductionPlanPage(ProductionPlanPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基地,地块,计划 - 下拉列表(三级联动)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<BaseNamePlanRespVO> getBaseNameAndPlanList();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,8 +2,10 @@ package cn.iocoder.yudao.module.farm.service.productionplan;
|
|||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNamePlanRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanSaveReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanSaveReqVO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@@ -17,7 +19,10 @@ import cn.iocoder.yudao.framework.security.core.LoginUser;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.module.farm.dal.mysql.productionplan.ProductionPlanMapper;
|
import cn.iocoder.yudao.module.farm.dal.mysql.productionplan.ProductionPlanMapper;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
@@ -93,4 +98,62 @@ public class ProductionPlanServiceImpl implements ProductionPlanService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BaseNamePlanRespVO> getBaseNameAndPlanList() {
|
||||||
|
LoginUser user = getLoginUser();
|
||||||
|
if (user == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper<ProductionPlanDO> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("tenant_id", user.getTenantId());
|
||||||
|
List<ProductionPlanDO> productionPlanDOS = productionPlanMapper.selectList(qw);
|
||||||
|
|
||||||
|
// 按基地ID分组
|
||||||
|
Map<String, List<ProductionPlanDO>> baseGroup = productionPlanDOS.stream().collect(Collectors.groupingBy(ProductionPlanDO::getBaseId));
|
||||||
|
|
||||||
|
List<BaseNamePlanRespVO> result = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Map.Entry<String, List<ProductionPlanDO>> baseEntry : baseGroup.entrySet()) {
|
||||||
|
String baseId = baseEntry.getKey();
|
||||||
|
List<ProductionPlanDO> basePlans = baseEntry.getValue();
|
||||||
|
|
||||||
|
// 创建基地响应对象
|
||||||
|
BaseNamePlanRespVO baseVO = new BaseNamePlanRespVO();
|
||||||
|
baseVO.setId(baseId);
|
||||||
|
baseVO.setName(basePlans.get(0).getBaseName()); // 取第一个计划的基地名称
|
||||||
|
baseVO.setChildren(new ArrayList<>());
|
||||||
|
|
||||||
|
// 按地块ID分组
|
||||||
|
Map<String, List<ProductionPlanDO>> plotGroup = basePlans.stream().collect(Collectors.groupingBy(ProductionPlanDO::getPlotId));
|
||||||
|
|
||||||
|
for (Map.Entry<String, List<ProductionPlanDO>> plotEntry : plotGroup.entrySet()) {
|
||||||
|
String plotId = plotEntry.getKey();
|
||||||
|
List<ProductionPlanDO> plotPlans = plotEntry.getValue();
|
||||||
|
|
||||||
|
// 创建地块响应对象
|
||||||
|
BaseNamePlanRespVO.PlotInfoVO plotVO = new BaseNamePlanRespVO.PlotInfoVO();
|
||||||
|
plotVO.setPlotId(plotId);
|
||||||
|
plotVO.setPlotName(plotPlans.get(0).getPlotName()); // 取第一个计划的地块名称
|
||||||
|
plotVO.setChildren(new ArrayList<>());
|
||||||
|
|
||||||
|
// 创建计划信息列表
|
||||||
|
for (ProductionPlanDO plan : plotPlans) {
|
||||||
|
BaseNamePlanRespVO.PlanInfoVO planVO = new BaseNamePlanRespVO.PlanInfoVO();
|
||||||
|
planVO.setPlanNumber(plan.getPlanNumber());
|
||||||
|
planVO.setProductionStartDate(plan.getProductionStartDate());
|
||||||
|
planVO.setProductionEndDate(plan.getProductionEndDate());
|
||||||
|
plotVO.getChildren().add(planVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
baseVO.getChildren().add(plotVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.add(baseVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.farm.service.sysDict;
|
package cn.iocoder.yudao.module.farm.service.sysDict;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenancePageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenancePageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenanceSaveReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenanceSaveReqVO;
|
||||||
@@ -26,6 +27,9 @@ public interface SysDictService {
|
|||||||
|
|
||||||
PageResult<SysDictDO> selectDictByPage(SysDictPageReqVO reqVO);
|
PageResult<SysDictDO> selectDictByPage(SysDictPageReqVO reqVO);
|
||||||
|
|
||||||
|
List<SpeciesClassifyLibraryRespVO> getSpeciesClassifyLibraryList();
|
||||||
|
|
||||||
|
List<SpeciesClassifyLibraryRespVO> getSpeciesClassifyAndModelList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 农事类型
|
* 农事类型
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package cn.iocoder.yudao.module.farm.service.sysDict;
|
package cn.iocoder.yudao.module.farm.service.sysDict;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||||
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenancePageReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenancePageReqVO;
|
||||||
@@ -9,15 +11,21 @@ import cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo.F
|
|||||||
import cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo.FarmingTypeMaintenanceSaveReqVO;
|
import cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo.FarmingTypeMaintenanceSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.farmingnamemaintenance.FarmingNameMaintenanceDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.farmingnamemaintenance.FarmingNameMaintenanceDO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.dataobject.farmingtypemaintenance.FarmingTypeMaintenanceDO;
|
import cn.iocoder.yudao.module.farm.dal.dataobject.farmingtypemaintenance.FarmingTypeMaintenanceDO;
|
||||||
|
import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO;
|
||||||
|
import cn.iocoder.yudao.module.farm.dal.mysql.modelmanagement.ModelManagementMapper;
|
||||||
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
|
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
|
||||||
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictMapper;
|
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictMapper;
|
||||||
|
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
|
||||||
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
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.FARMING_TYPE_MAINTENANCE_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.FARMING_TYPE_MAINTENANCE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,9 +41,11 @@ public class SysDictServiceImpl implements SysDictService {
|
|||||||
|
|
||||||
|
|
||||||
private final SysDictMapper sysDictMapper;
|
private final SysDictMapper sysDictMapper;
|
||||||
|
private final ModelManagementMapper modelManagementMapper;
|
||||||
|
|
||||||
public SysDictServiceImpl(SysDictMapper sysDictMapper) {
|
public SysDictServiceImpl(SysDictMapper sysDictMapper, ModelManagementMapper modelManagementMapper) {
|
||||||
this.sysDictMapper = sysDictMapper;
|
this.sysDictMapper = sysDictMapper;
|
||||||
|
this.modelManagementMapper = modelManagementMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -73,6 +83,117 @@ public class SysDictServiceImpl implements SysDictService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SpeciesClassifyLibraryRespVO> getSpeciesClassifyLibraryList() {
|
||||||
|
return getSpeciesClassifyLibraryList(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<SpeciesClassifyLibraryRespVO> getSpeciesClassifyLibraryList2() {
|
||||||
|
return getSpeciesClassifyLibraryList(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<SpeciesClassifyLibraryRespVO> getSpeciesClassifyLibraryList(int level) {
|
||||||
|
List<SysDictDO> list = this.getByTypeCode(CommonConstants.DICT_TYPE_CODE_3);
|
||||||
|
|
||||||
|
if (level == 1) {
|
||||||
|
// 一,二级联动
|
||||||
|
return this.build(list, SysDictDO::getField1Code, SysDictDO::getField1Name, SysDictDO::getField2Code, SysDictDO::getField2Name, SysDictDO::getField1Code
|
||||||
|
);
|
||||||
|
} else if (level == 2) {
|
||||||
|
// 二,三级联动
|
||||||
|
return this.build(list, SysDictDO::getField2Code, SysDictDO::getField2Name, SysDictDO::getField3Code, SysDictDO::getField3Name, SysDictDO::getField2Code
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Unsupported level: " + level);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<SpeciesClassifyLibraryRespVO> build(
|
||||||
|
List<SysDictDO> list,
|
||||||
|
Function<SysDictDO, String> parentKeyExtractor,
|
||||||
|
Function<SysDictDO, String> parentValueExtractor,
|
||||||
|
Function<SysDictDO, String> childKeyExtractor,
|
||||||
|
Function<SysDictDO, String> childValueExtractor,
|
||||||
|
Function<SysDictDO, String> parentFilterExtractor) {
|
||||||
|
|
||||||
|
// 获取父级映射(去重)
|
||||||
|
Map<String, String> parentMap = list.stream()
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
parentKeyExtractor,
|
||||||
|
parentValueExtractor,
|
||||||
|
(existing, replacement) -> existing
|
||||||
|
));
|
||||||
|
|
||||||
|
List<SpeciesClassifyLibraryRespVO> result = new ArrayList<>();
|
||||||
|
|
||||||
|
// 按父级代码分组,提前组织子级数据
|
||||||
|
Map<String, List<SysDictDO>> groupedByParent = list.stream().collect(Collectors.groupingBy(parentFilterExtractor));
|
||||||
|
|
||||||
|
for (Map.Entry<String, String> entry : parentMap.entrySet()) {
|
||||||
|
String parentKey = entry.getKey();
|
||||||
|
SpeciesClassifyLibraryRespVO parentVO = new SpeciesClassifyLibraryRespVO(parentKey, entry.getValue());
|
||||||
|
|
||||||
|
// 获取该父级下的所有子项
|
||||||
|
List<SysDictDO> childrenItems = groupedByParent.getOrDefault(parentKey, Collections.emptyList());
|
||||||
|
|
||||||
|
// 去重处理子项
|
||||||
|
Map<String, String> childMap = childrenItems.stream()
|
||||||
|
.filter(e -> childKeyExtractor.apply(e) != null && !childKeyExtractor.apply(e).isEmpty())
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
childKeyExtractor,
|
||||||
|
childValueExtractor,
|
||||||
|
(existing, replacement) -> existing
|
||||||
|
));
|
||||||
|
|
||||||
|
// 构建子级VO列表
|
||||||
|
List<SpeciesClassifyLibraryRespVO> childList = childMap.entrySet().stream()
|
||||||
|
.map(childEntry -> new SpeciesClassifyLibraryRespVO(childEntry.getKey(), childEntry.getValue()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
parentVO.setChildren(childList);
|
||||||
|
result.add(parentVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SpeciesClassifyLibraryRespVO> getSpeciesClassifyAndModelList() {
|
||||||
|
LoginUser user = getLoginUser();
|
||||||
|
if (user == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper<ModelManagementDO> qw = new QueryWrapper<>();
|
||||||
|
qw.eq("tenant_id", user.getTenantId());
|
||||||
|
qw.eq("type", CommonConstants.MODEL_TYPE_1);
|
||||||
|
List<ModelManagementDO> modelList = modelManagementMapper.selectList(qw);
|
||||||
|
|
||||||
|
Map<String, Map<String, String>> modelMap = modelList.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
ModelManagementDO::getSpeciesId,
|
||||||
|
Collectors.toMap(ModelManagementDO::getId, ModelManagementDO::getModelName)
|
||||||
|
));
|
||||||
|
|
||||||
|
List<SpeciesClassifyLibraryRespVO> rootList = this.getSpeciesClassifyLibraryList2();
|
||||||
|
for (SpeciesClassifyLibraryRespVO vo : rootList) {
|
||||||
|
for (SpeciesClassifyLibraryRespVO child : vo.getChildren()) {
|
||||||
|
|
||||||
|
if (!modelMap.containsKey(child.getSpeciesClassCode())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> stringStringMap = modelMap.get(child.getSpeciesClassCode());
|
||||||
|
List<SpeciesClassifyLibraryRespVO> collect = stringStringMap.entrySet().stream().map(e -> new SpeciesClassifyLibraryRespVO(e.getKey(), e.getValue())).collect(Collectors.toList());
|
||||||
|
child.setChildren(collect);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootList;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<FarmingTypeMaintenanceDO> getFarmingTypeMaintenancePage(FarmingTypeMaintenancePageReqVO reqVO) {
|
public PageResult<FarmingTypeMaintenanceDO> getFarmingTypeMaintenancePage(FarmingTypeMaintenancePageReqVO reqVO) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user