fix (farm): 集成测试
- 生产计划 - 模型周期
This commit is contained in:
@@ -31,7 +31,7 @@ public class ProductionPlanPage2ReqVO extends PageParam {
|
||||
private String productionYear;
|
||||
|
||||
@Schema(description = "计划执行状态")
|
||||
private Integer planStatus;
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
|
||||
@@ -49,7 +49,7 @@ public interface ProductionPlanMapper extends BaseMapperX<ProductionPlanDO> {
|
||||
// )
|
||||
.eqIfPresent(ProductionPlanDO::getBaseId, reqVO.getBaseId())
|
||||
.eqIfPresent(ProductionPlanDO::getPlotId, reqVO.getPlotId())
|
||||
.eqIfPresent(ProductionPlanDO::getPlanStatus, reqVO.getPlanStatus())
|
||||
.eqIfPresent(ProductionPlanDO::getPlanStatus, reqVO.getStatus())
|
||||
.eqIfPresent(ProductionPlanDO::getTenantId, reqVO.getTenantId())
|
||||
.orderByDesc(ProductionPlanDO::getCreateTime);
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import cn.iocoder.yudao.module.farm.utils.StrHelperUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -226,7 +227,7 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
String plotId = productionPlanRespVO.getPlotId();
|
||||
PlotInfoDO plotIObj = plotInfoService.getPlotInfoByPlotId(plotId);
|
||||
productionPlanRespVO.setPlotManger(employeeNameMap.getOrDefault(plotIObj.getEmployeeId(),"系统"));
|
||||
// 管理周期
|
||||
|
||||
return productionPlanRespVO;
|
||||
}
|
||||
|
||||
@@ -365,6 +366,12 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
ModelManagementDO modelManagementDo = modelManagementService.getModelManagement("id", planObj.getSpeciesModelId());
|
||||
String managementCycleName = modelManagementService.getModelCycleName(planObj.getSpeciesModelId());
|
||||
|
||||
// 农事记录进度
|
||||
int progressNumerator = 1; // 生产计划 - 农事记录 条数
|
||||
int progressDenominator = 1; // 农事记录总数 (引用模型 - 农事记录)
|
||||
String progressRatio = ""; // 百分比
|
||||
String progressBar = "1/100"; // 进度条
|
||||
|
||||
ProductionPlanResp2VO.ModelInfo modelInfo = new ProductionPlanResp2VO.ModelInfo();
|
||||
modelInfo.setId(modelManagementDo.getId());
|
||||
modelInfo.setModelName(modelManagementDo.getModelName());
|
||||
@@ -375,14 +382,13 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
modelInfo.setPlanSubStatus(ObjectUtils.defaultIfNull(planObj.getPlanSubStatus(), planObj.getPlanStatus()));
|
||||
modelInfo.setPlanStatusName(PLAN_MAP.getOrDefault(planObj.getPlanStatus(), ""));
|
||||
modelInfo.setPlanSubStatusName(PLAN_MAP.getOrDefault(planObj.getPlanSubStatus(), ""));
|
||||
|
||||
modelInfo.setManagementCycleName(managementCycleName);
|
||||
modelInfo.setPredictedArea(planObj.getPredictedArea().intValue());
|
||||
modelInfo.setPredictedYields(planObj.getPredictedYields());
|
||||
modelInfo.setProgressBar("1/10"); // TODO: 2025/8/30 农事记录
|
||||
modelInfo.setProgressRatio("10"); // TODO: 2025/8/31
|
||||
modelInfo.setProgressNumerator(1);
|
||||
modelInfo.setProgressDenominator(10);
|
||||
modelInfo.setProgressBar(progressBar);
|
||||
modelInfo.setProgressRatio(progressRatio);
|
||||
modelInfo.setProgressNumerator(progressNumerator);
|
||||
modelInfo.setProgressDenominator(progressDenominator);
|
||||
modelInfo.setBaseName(planObj.getBaseName());
|
||||
modelInfo.setBaseManager(employeeNameMap.get(employeeId)); // 分割,
|
||||
return modelInfo;
|
||||
@@ -509,6 +515,9 @@ public class CropFarmingCenterServiceImpl implements CropFarmingCenterService {
|
||||
|
||||
@Override
|
||||
public BasePlanOverviewRespVO getBaseOverview(String baseId) {
|
||||
if (StringUtils.isEmpty(baseId)) {
|
||||
return null;
|
||||
}
|
||||
LoginUser user = getLoginUser();
|
||||
Long tenantId = user.getTenantId();
|
||||
BigDecimal totalArea = baseInfoMapper.getTotalBaseArea(baseId, tenantId);
|
||||
|
||||
@@ -58,32 +58,10 @@ public class InputLibraryServiceImpl implements InputLibraryService {
|
||||
inputLibrary.setId(id);
|
||||
inputLibrary.setTenantId(String.valueOf(user.getTenantId()));
|
||||
inputLibraryMapper.insert(inputLibrary);
|
||||
// 同步
|
||||
this.syncCreateDict(id);
|
||||
// 返回
|
||||
return inputLibrary.getId();
|
||||
}
|
||||
|
||||
private void syncCreateDict(String id) {
|
||||
List<SysDictDO> list = sysDictMapper.groupByFieldCode(DICT_TYPE_CODE_4);
|
||||
Map<String, String> parentMap = list.stream().collect(Collectors.toMap(SysDictDO::getField1Code, SysDictDO::getField1Name, (v1, v2) -> v1));
|
||||
|
||||
InputLibraryDO aDo = inputLibraryMapper.selectById(id);
|
||||
Integer assetType = aDo.getAssetType();// 父类编号
|
||||
String assetName = aDo.getAssetName();// 子类名称
|
||||
|
||||
SysDictDO insertObj = new SysDictDO();
|
||||
insertObj.setDictTypeCode(DICT_TYPE_CODE_4);
|
||||
insertObj.setDictTypeName("投入品");
|
||||
insertObj.setField1Code(assetType.toString());
|
||||
insertObj.setField1Name(parentMap.get(assetType));
|
||||
insertObj.setField2Code(StrHelperUtil.generate());
|
||||
insertObj.setField2Name(assetName);
|
||||
insertObj.setStatus(CommonConstants.YES_CODE);
|
||||
insertObj.setDeleted(false);
|
||||
sysDictMapper.insertOne(insertObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateInputLibrary(InputLibrarySaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
|
||||
@@ -151,23 +151,21 @@ public class ModelManagementServiceImpl implements ModelManagementService {
|
||||
|
||||
// 4. 复制模型周期及其子集
|
||||
List<ModelCycleDO> originalCycles = modelCycleMapper.selectListByModelId(id);
|
||||
long originalStageCount_start = 0;
|
||||
long originalStageCount_end = 0;
|
||||
// 累计天数
|
||||
int accumulatedDays = 0;
|
||||
for (ModelCycleDO originalCycle : originalCycles) {
|
||||
// 设置周期范围-开始.结束日期
|
||||
StageRecord stageRecord = setProductionStages(accumulatedDays, originalCycle, productionStartDate, productionEndDate);
|
||||
accumulatedDays = stageRecord.v0;
|
||||
|
||||
// 复制周期
|
||||
ModelCycleDO newCycle = BeanUtils.toBean(originalCycle, ModelCycleDO.class);
|
||||
String newCycleId = IdUtil.fastUUID();
|
||||
newCycle.setId(newCycleId);
|
||||
newCycle.setModelId(newModelId);
|
||||
// 设置周期范围-开始.结束日期
|
||||
originalStageCount_end += originalCycle.getStage(); // 阶段天数
|
||||
LocalDate cycleRangeStartDate = productionStartDate.plusDays(originalStageCount_start);
|
||||
LocalDate cycleRangeEndDate = productionEndDate.plusDays(originalStageCount_end);
|
||||
newCycle.setCycleRangeStartDate(cycleRangeStartDate);
|
||||
newCycle.setCycleRangeEndDate(cycleRangeEndDate);
|
||||
newCycle.setCycleRangeStartDate(stageRecord.v1);
|
||||
newCycle.setCycleRangeEndDate(stageRecord.v2);
|
||||
modelCycleMapper.insert(newCycle);
|
||||
// 推进阶段天数
|
||||
originalStageCount_start = originalStageCount_end;
|
||||
|
||||
// 复制环境指标
|
||||
List<ModelEnvironmentIndexDO> environmentIndexes = modelEnvironmentIndexMapper.selectByCycleId(originalCycle.getId());
|
||||
@@ -219,6 +217,31 @@ public class ModelManagementServiceImpl implements ModelManagementService {
|
||||
return newModelId;
|
||||
}
|
||||
|
||||
public record StageRecord(int v0, LocalDate v1, LocalDate v2) { }
|
||||
|
||||
private StageRecord setProductionStages(int accumulatedDays, ModelCycleDO originalCycle, LocalDate productionStartDate, LocalDate productionEndDate) {
|
||||
|
||||
// 当前阶段天数
|
||||
int currentStageDays = originalCycle.getStage();
|
||||
LocalDate cycleRangeStartDate;
|
||||
if (accumulatedDays == 0) {
|
||||
// 第一阶段开始日期 = 生产开始日期 + 0天
|
||||
cycleRangeStartDate = productionStartDate.plusDays(0);
|
||||
} else {
|
||||
// 后续阶段开始日期 = 生产开始日期 + 累计天数 + 1天(避免重叠)
|
||||
cycleRangeStartDate = productionStartDate.plusDays(accumulatedDays + 1);
|
||||
}
|
||||
// 计算当前阶段的结束日期
|
||||
LocalDate cycleRangeEndDate = productionStartDate.plusDays(accumulatedDays + currentStageDays);
|
||||
// 确保结束日期不超过总范围的结束日期
|
||||
if (cycleRangeEndDate.isAfter(productionEndDate)) {
|
||||
cycleRangeEndDate = productionEndDate;
|
||||
}
|
||||
// 更新累计天数
|
||||
accumulatedDays += currentStageDays;
|
||||
return new StageRecord(accumulatedDays, cycleRangeStartDate, cycleRangeEndDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateModelManagement(ModelManagementSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
@@ -299,7 +322,7 @@ public class ModelManagementServiceImpl implements ModelManagementService {
|
||||
List<ModelCycleDO> list = modelCycleMapper.selectListByModelId(id);
|
||||
list.forEach(cycle -> {
|
||||
ModelCycleRespVO vo = BeanUtils.toBean(cycle, ModelCycleRespVO.class);
|
||||
vo.setStageImageList(cycle.getStageImageList());
|
||||
vo.setStageImageList(cycle.getImageList());
|
||||
//环境指标
|
||||
List<ModelEnvironmentIndexDO> environmentIndexDO = modelEnvironmentIndexMapper.selectByCycleId(cycle.getId());
|
||||
vo.setEnvironmentIndexDOS(environmentIndexDO);
|
||||
|
||||
@@ -44,10 +44,9 @@ public class ModelPestDiseaseWeedServiceImpl implements ModelPestDiseaseWeedServ
|
||||
DisasterDataDO disasterDataDO = disasterDataMapper.selectById(createReqVO.getPestsId());
|
||||
modelPestDiseaseWeed.setDisasterDescription(disasterDataDO.getDisasterDescription());
|
||||
modelPestDiseaseWeed.setTreatmentSuggestion(disasterDataDO.getTreatmentSuggestion());
|
||||
if (createReqVO.getImage() != null) {
|
||||
modelPestDiseaseWeed.setImage(createReqVO.getImage() + "," + disasterDataDO.getImgUrl());
|
||||
} else {
|
||||
modelPestDiseaseWeed.setImage(disasterDataDO.getImgUrl());
|
||||
// set 图片地址
|
||||
for (String image : createReqVO.getImageList()) {
|
||||
modelPestDiseaseWeed.setImage(image);
|
||||
}
|
||||
modelPestDiseaseWeedMapper.insert(modelPestDiseaseWeed);
|
||||
|
||||
@@ -64,10 +63,9 @@ public class ModelPestDiseaseWeedServiceImpl implements ModelPestDiseaseWeedServ
|
||||
DisasterDataDO disasterDataDO = disasterDataMapper.selectById(updateReqVO.getPestsId());
|
||||
updateObj.setDisasterDescription(disasterDataDO.getDisasterDescription());
|
||||
updateObj.setTreatmentSuggestion(disasterDataDO.getTreatmentSuggestion());
|
||||
if (updateReqVO.getImage() != null) {
|
||||
updateObj.setImage(updateReqVO.getImage() + "," + disasterDataDO.getImgUrl());
|
||||
} else {
|
||||
updateObj.setImage(disasterDataDO.getImgUrl());
|
||||
// set 图片地址
|
||||
for (String image : updateReqVO.getImageList()) {
|
||||
updateObj.setImage(image);
|
||||
}
|
||||
modelPestDiseaseWeedMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@@ -45,10 +45,9 @@ public class ModelWeatherDisasterServiceImpl implements ModelWeatherDisasterServ
|
||||
DisasterDataDO disasterDataDO = disasterDataMapper.selectById(createReqVO.getWeatherId());
|
||||
modelWeatherDisaster.setDisasterDescription(disasterDataDO.getDisasterDescription());
|
||||
modelWeatherDisaster.setTreatmentSuggestion(disasterDataDO.getTreatmentSuggestion());
|
||||
if (createReqVO.getImage() != null) {
|
||||
modelWeatherDisaster.setImage(createReqVO.getImage() + "," + disasterDataDO.getImgUrl());
|
||||
} else {
|
||||
modelWeatherDisaster.setImage(disasterDataDO.getImgUrl());
|
||||
// set 图片地址
|
||||
for (String image : createReqVO.getImageList()) {
|
||||
modelWeatherDisaster.setImage(image);
|
||||
}
|
||||
modelWeatherDisasterMapper.insert(modelWeatherDisaster);
|
||||
|
||||
@@ -65,10 +64,9 @@ public class ModelWeatherDisasterServiceImpl implements ModelWeatherDisasterServ
|
||||
DisasterDataDO disasterDataDO = disasterDataMapper.selectById(updateReqVO.getWeatherId());
|
||||
updateObj.setDisasterDescription(disasterDataDO.getDisasterDescription());
|
||||
updateObj.setTreatmentSuggestion(disasterDataDO.getTreatmentSuggestion());
|
||||
if (updateReqVO.getImage() != null) {
|
||||
updateObj.setImage(updateReqVO.getImage() + "," + disasterDataDO.getImgUrl());
|
||||
} else {
|
||||
updateObj.setImage(disasterDataDO.getImgUrl());
|
||||
// set 图片地址
|
||||
for (String image : updateObj.getImageList()) {
|
||||
updateObj.setImage(image);
|
||||
}
|
||||
modelWeatherDisasterMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
from farm_model_cycle
|
||||
where model_id = #{modelId}
|
||||
and deleted = 0
|
||||
ORDER BY create_time
|
||||
ORDER BY create_time ASC
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user