refactor (farm): 投入品重构

- 涉及到的模块:
  - 基础数据管理 - 投入品 (模版类型)
  - 模型管理 - 农事记录 - 投入品(引用类型)
  - 生产中心 - 农事记录 - 投入品使用记录
This commit is contained in:
达富斌
2025-10-21 14:30:50 +08:00
parent 2ae5b6ee3c
commit 95aab97146
19 changed files with 285 additions and 93 deletions

View File

@@ -27,6 +27,7 @@ public class FarmingRecordCreateReqVO {
@Schema(description = "生产计划ID", example = "24782")
private String productionPlanId;
private String modelFarmingOperationId;
@Schema(description = "执行人ID列表")
private List<String> executor;

View File

@@ -4,6 +4,9 @@ import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatam
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.InputLibraryRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.InputLibrarySaveReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.*;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsSaveReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputsDO;
import cn.iocoder.yudao.module.farm.manager.inputs.InputsManager;
import cn.iocoder.yudao.module.farm.service.inputlibrary.InputsService;
@@ -114,9 +117,30 @@ public class InputLibraryController {
@GetMapping("/drop-down-box")
@Operation(summary = "投入品下拉框")
public CommonResult<List<InputsDropDownListRespVO>> syncInputLibrary() {
public CommonResult<List<InputsDropDownListRespVO>> getDropDownList() {
List<InputsDropDownListRespVO> res = inputsManager.getInputsDropDownList();
return success(res);
}
// @GetMapping("/drop-down-box/reference-type")
// @Operation(summary = "投入品下拉框(引用类型)")
// @Parameter(name = "frId", description = "农事记录ID", required = true, example = "1024")
// public CommonResult<List<InputsDropDownListForReferenceRespVO>> getDropDownListForReference(String frId) {
// List<InputsDropDownListForReferenceRespVO> res = inputsManager.getInputsDropDownListForReference(frId);
// return success(res);
// }
@GetMapping("/usage-records/page")
@Operation(summary = "投入品使用日志-分页)")
public CommonResult<PageResult<InputUsageRecordsRespVO>> getInputUsageRecordsPage(InputUsageRecordsPageReqVO reqVO) {
PageResult<InputUsageRecordsRespVO> pageResult = inputsManager.getInputUsageRecordsPage(reqVO);
return success(pageResult);
}
@GetMapping("/usage-records/create")
@Operation(summary = "投入品使用日志-新增)")
public CommonResult<String> createInputUsageRecords(InputUsageRecordsSaveReqVO req) {
inputsManager.createInputUsageRecords(req);
return success("success");
}
}

View File

@@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @description: TODO
* @author: binda
* @date: 2025/10/20 21:58
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InputsDropDownListForReferenceRespVO {
private String id;
@Schema(description = "投入品名称")
private String inputName;
@Schema(description = "投入品分类 (1: 模版分类; 2: 引用分类)")
private Integer inputCategory;
private String inputCategoryName;
@Schema(description = "投入品用量")
private Integer inputUsage;
@Schema(description = " 当前规格类型 (1: 按单品; 2: 按规格)")
private Integer currentSpecType;
private String currentSpecTypeName;
@Schema(description = "投入品单价")
private BigDecimal inputPrice;
@Schema(description = "投入品规格")
private String inputSpec;
@Schema(description = "投入品单位")
private String inputUnit;
private String inputUnitName;
@Schema(description = "投入品规格单位")
private String specUnit;
private String specUnitName;
}

View File

@@ -72,7 +72,7 @@ public class InputsRespVO {
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
private LocalDateTime createTime;
@Schema(description = "可用库存数量")
@@ -94,4 +94,5 @@ public class InputsRespVO {
private String activePrinciple;
// 稀释倍液 非必填
private Integer diluted;
private String sourceId;
}

View File

@@ -33,6 +33,9 @@ public class InputsSaveReqVO {
@Schema(description = "投入品规格单位")
private String specUnit;
@Schema(description = "当前规格类型 (1: 按单品; 2: 按规格)")
private Integer currentSpecType;
@Schema(description = "投入品用量")
private Integer inputUsage;
@@ -55,4 +58,6 @@ public class InputsSaveReqVO {
private String activePrinciple;
// 稀释倍液 非必填
private Integer diluted;
// 回显ID
private String sourceId;
}

View File

@@ -20,24 +20,24 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@Data
public class InputUsageRecordsPageReqVO extends PageParam {
@Schema(description = "投入品ID", example = "30559")
private String inputId;
// @Schema(description = "投入品ID", example = "30559")
// private String inputId;
@Schema(description = "农事记录ID", example = "26500")
@Schema(description = "种植中心-农事记录ID")
private String farmRecordId;
@Schema(description = "用量")
private BigDecimal usageAmount;
@Schema(description = "单价", example = "280")
private BigDecimal unitPrice;
@Schema(description = "总价", example = "29353")
private BigDecimal totalPrice;
@Schema(description = "备注", example = "随便")
private String remark;
// @Schema(description = "用量")
// private BigDecimal usageAmount;
//
// @Schema(description = "单价", example = "280")
// private BigDecimal unitPrice;
//
// @Schema(description = "总价", example = "29353")
// private BigDecimal totalPrice;
//
// @Schema(description = "备注", example = "随便")
// private String remark;
//
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;

View File

@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -25,6 +26,7 @@ public class InputUsageRecordsRespVO {
@Schema(description = "投入品ID", example = "30559")
@ExcelProperty("投入品ID")
private String inputId;
private String inputName;
@Schema(description = "农事记录ID", example = "26500")
@ExcelProperty("农事记录ID")
@@ -32,7 +34,18 @@ public class InputUsageRecordsRespVO {
@Schema(description = "用量")
@ExcelProperty("用量")
private BigDecimal usageAmount;
private Integer usageAmount;
@Schema(description = "当前规格类型")
private Integer currentSpecType;
private String currentSpecTypeName;
@Schema(description = "规格")
private Integer spec;
private String specName;
@Schema(description = "单位")
private Integer unit;
private String unitName;
@Schema(description = "单价", example = "280")
@ExcelProperty("单价")
@@ -48,6 +61,7 @@ public class InputUsageRecordsRespVO {
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
private LocalDateTime createTime;
}

View File

@@ -22,14 +22,17 @@ public class InputUsageRecordsSaveReqVO {
@Schema(description = "农事记录ID", example = "26500")
private String farmRecordId;
@Schema(description = "当前使用规格")
private Integer currentSpecType; // 当前使用规格
@Schema(description = "用量")
private BigDecimal usageAmount;
@Schema(description = "单价", example = "280")
private Integer usageAmount;
@Schema(description = "单价")
private BigDecimal unitPrice;
@Schema(description = "总价", example = "29353")
@Schema(description = "规格")
private Integer spec;
@Schema(description = "单位")
private Integer unit;
@Schema(description = "总价")
private BigDecimal totalPrice;
@Schema(description = "备注", example = "随便")

View File

@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsSaveReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation.vo.ModelFarmingOperationPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation.vo.ModelFarmingOperationRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation.vo.ModelFarmingOperationSaveReqVO;
@@ -46,9 +47,10 @@ public class ModelFarmingOperationController {
@PostMapping("/create")
@Operation(summary = "创建模型管理-农事操作")
public CommonResult<String> createModelFarmingOperation(@Valid @RequestBody ModelFarmingOperationSaveReqVO createReqVO) {
return success(modelFarmingOperationService.createModelFarmingOperation(createReqVO));
String id = modelFarmingOperationService.createModelFarmingOperation(createReqVO);
inputsManager.createInputsForReferenceType(id,createReqVO.getInputsSaveReqVOList());
return success(id);
}
@PutMapping("/update")
@@ -56,6 +58,8 @@ public class ModelFarmingOperationController {
public CommonResult<Boolean> updateModelFarmingOperation(@Valid @RequestBody ModelFarmingOperationSaveReqVO updateReqVO) {
modelFarmingOperationService.updateModelFarmingOperation(updateReqVO);
String id = updateReqVO.getId();
inputsManager.createInputsForReferenceType(id,updateReqVO.getInputsSaveReqVOList());
return success(true);
}

View File

@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation.vo;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsSaveReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.modelfarmingoperationinput.ModelFarmingOperationInputDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -52,4 +53,7 @@ public class ModelFarmingOperationSaveReqVO {
private String tenantId;
private String farmingId;
private List<ModelFarmingOperationInputDO> investGoodsList;
@Schema(description = "投入品集合")
private List<InputsSaveReqVO> inputsSaveReqVOList;
}

View File

@@ -32,26 +32,31 @@ public class InputUsageRecordsDO extends BaseDO {
* 投入品ID
*/
private String inputId;
private String inputName;
/**
* 农事记录ID
*/
private String farmRecordId;
/**
* 用量
*/
private BigDecimal usageAmount;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 总价
*/
private BigDecimal totalPrice;
private Integer currentSpecType; // 当前使用规格
@TableField(exist = false)
private String currentSpecTypeName;
private Integer usageAmount; // 用量
private BigDecimal unitPrice; // 单价
private String spec; // 规格
@TableField(exist = false)
private String specName;
private String unit; // 单位
@TableField(exist = false)
private String unitName;
private BigDecimal totalPrice; // 总价
/**
* 备注
*/
private String remark;
}

View File

@@ -119,4 +119,6 @@ public class InputsDO extends BaseDO {
private String activePrinciple;
// 稀释倍液 非必填
private Integer diluted;
// 原始的主键ID, 用于回显 (只有引用类型才会存在该字段值)
private String sourceId;
}

View File

@@ -18,14 +18,14 @@ public interface InputUsageRecordsMapper extends BaseMapperX<InputUsageRecordsDO
default PageResult<InputUsageRecordsDO> selectPage(InputUsageRecordsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<InputUsageRecordsDO>()
.eqIfPresent(InputUsageRecordsDO::getInputId, reqVO.getInputId())
// .eqIfPresent(InputUsageRecordsDO::getInputId, reqVO.getInputId())
.eqIfPresent(InputUsageRecordsDO::getFarmRecordId, reqVO.getFarmRecordId())
.eqIfPresent(InputUsageRecordsDO::getUsageAmount, reqVO.getUsageAmount())
.eqIfPresent(InputUsageRecordsDO::getUnitPrice, reqVO.getUnitPrice())
.eqIfPresent(InputUsageRecordsDO::getTotalPrice, reqVO.getTotalPrice())
.eqIfPresent(InputUsageRecordsDO::getRemark, reqVO.getRemark())
// .eqIfPresent(InputUsageRecordsDO::getUsageAmount, reqVO.getUsageAmount())
// .eqIfPresent(InputUsageRecordsDO::getUnitPrice, reqVO.getUnitPrice())
// .eqIfPresent(InputUsageRecordsDO::getTotalPrice, reqVO.getTotalPrice())
// .eqIfPresent(InputUsageRecordsDO::getRemark, reqVO.getRemark())
.betweenIfPresent(InputUsageRecordsDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(InputUsageRecordsDO::getId));
.orderByDesc(InputUsageRecordsDO::getCreateTime));
}
}

View File

@@ -3,6 +3,10 @@ package cn.iocoder.yudao.module.farm.manager.inputs;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.*;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsSaveReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputUsageRecordsDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputsDO;
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.manager.inputs.dto.wms.InputCategoryDTO;
@@ -17,10 +21,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.module.farm.enums.CommonConstants.*;
@@ -166,27 +167,45 @@ public class InputsManager {
* =================================================
*/
public void createInputsForReferenceType(List<InputsSaveReqVO> req) {
public void createInputsForReferenceType(String fId,List<InputsSaveReqVO> req) {
StringBuilder ids = new StringBuilder();
for (InputsSaveReqVO i : req) {
if (!ObjectUtils.notEqual(i.getInputCategory(), INPUT_CATEGORY_1)) {
// 模版类型 直接新增
String sourceId = i.getId();
i.setSourceId(sourceId);
i.setInputCategory(INPUT_TYPE_2);
String id = inputsService.createInputs(i);
ids.append(id).append(",");
} else {
continue;
// 先删除
inputsService.deleteInputs(i.getId());
// 后新增
i.setInputCategory(INPUT_TYPE_2);
i.setId(null);
String id = inputsService.createInputs(i);
ids.append(id).append(",");
}
}
if (ids.length() > 0) {
modelFarmingOperationService.updateModelFarmingOperationForInputIds(fId,ids);
}
}
public List<InputsRespVO> getInputsPageForReferenceType(String mfId) {
Map<String, String> inputTypeNameMap = this.getDictTypeMap(ASSET_TYPE);
Map<String, String> itemsNameMap = this.getDictTypeMap(ITEMS_UNIT);
Map<String, String> specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE);
List<String> ids = modelFarmingOperationService.getModelFarmingOperationInputIds(mfId);
if (ObjectUtils.isEmpty(ids)) {
return Collections.EMPTY_LIST;
}
List<InputsDO> iList = inputsService.getInputsByIds(ids);
iList.stream().forEach(e -> {
@@ -195,10 +214,28 @@ public class InputsManager {
List<InputsRespVO> res = BeanUtils.toBean(iList, InputsRespVO.class);
return res;
}
public List<InputsDropDownListForReferenceRespVO> getInputsDropDownListForReference(String modelFoId) {
Map<String, String> inputTypeNameMap = this.getDictTypeMap(ASSET_TYPE);
Map<String, String> itemsNameMap = this.getDictTypeMap(ITEMS_UNIT);
Map<String, String> specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE);
List<String> ids = modelFarmingOperationService.getModelFarmingOperationInputIds(modelFoId);
if (ObjectUtils.isEmpty(ids)) {
return Collections.EMPTY_LIST;
}
List<InputsDO> iList = inputsService.getInputsByIds(ids);
iList.stream().forEach(e -> {
covertStr(e, inputTypeNameMap, itemsNameMap, specificationNameMap);
});
List<InputsDropDownListForReferenceRespVO> res = BeanUtils.toBean(iList, InputsDropDownListForReferenceRespVO.class);
return res;
}
@@ -221,9 +258,24 @@ public class InputsManager {
* ===============================
*/
public void createInputUsageRecords(InputsSaveReqVO req) {
public void createInputUsageRecords(InputUsageRecordsSaveReqVO req) {
inputUsageRecordsService.createInputUsageRecords(req);
}
public PageResult<InputUsageRecordsRespVO> getInputUsageRecordsPage(InputUsageRecordsPageReqVO req) {
Map<String, String> itemsNameMap = this.getDictTypeMap(ITEMS_UNIT);
Map<String, String> specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE);
PageResult<InputUsageRecordsDO> inputUsageRecordsPage = inputUsageRecordsService.getInputUsageRecordsPage(req);
for (InputUsageRecordsDO e : inputUsageRecordsPage.getList()) {
e.setCurrentSpecTypeName(CURRENT_SPEC_TYPE_MAP.get(e.getCurrentSpecType()));
e.setUnitName(itemsNameMap.get(e.getUnit()));
e.setSpecName(specificationNameMap.get(e.getSpec()));
}
return BeanUtils.toBean(inputUsageRecordsPage, InputUsageRecordsRespVO.class);
}
}

View File

@@ -162,6 +162,7 @@ public class FarmingRecordServiceImpl implements FarmingRecordService {
@Override
public String createFarmingRecordNew(FarmingRecordCreateReqVO createReqVO) {
LoginUser user = getLoginUser();
String taskScope = createReqVO.getTaskScope();
// 转换时间格式:取第一个时间作为任务时间
String taskTime = null;
@@ -179,6 +180,8 @@ public class FarmingRecordServiceImpl implements FarmingRecordService {
executor = String.join(",", createReqVO.getExecutor());
}
String modelFarmingOperationId = ""; // TODO: 2025/10/21
// 创建FarmingRecordSaveReqVO对象
FarmingRecordSaveReqVO saveReqVO = new FarmingRecordSaveReqVO();
saveReqVO.setTaskType(createReqVO.getTaskType());
@@ -187,6 +190,7 @@ public class FarmingRecordServiceImpl implements FarmingRecordService {
saveReqVO.setTaskTime(taskTime);
saveReqVO.setPlotId(createReqVO.getPlotId());
saveReqVO.setProductionPlanId(createReqVO.getProductionPlanId());
saveReqVO.setModelFarmingOperationId(modelFarmingOperationId);
saveReqVO.setExecutor(executor);
saveReqVO.setDayLaborer(createReqVO.getDayLaborer());
saveReqVO.setActualLaborCost(createReqVO.getActualLaborCost());
@@ -198,28 +202,28 @@ public class FarmingRecordServiceImpl implements FarmingRecordService {
saveReqVO.setTenantId(createReqVO.getTenantId());
// 转换投入品列表
if (createReqVO.getInvestGoodsList() != null && !createReqVO.getInvestGoodsList().isEmpty()) {
List<FarmingRecordInputDO> inputList = createReqVO.getInvestGoodsList().stream()
.map(item -> {
FarmingRecordInputDO input = new FarmingRecordInputDO();
input.setId(IdUtil.fastUUID());
input.setDosage(item.getDose());
input.setUsage(item.getUsage());
input.setInputParentCategory(item.getAssetType()); // 投入品-父类
input.setInputChildCategory(item.getInputsId()); // 投入品-子类
input.setSingleUseOption(item.getUnit()); // 单位用量
input.setSingleUseUnit(item.getPackageUnit()); // 单件单位
input.setDilutionRatio(item.getDiluted()); // 稀释倍液
input.setBaseId(createReqVO.getBaseId());
input.setBaseName(createReqVO.getBaseName());
input.setPlotId(createReqVO.getPlotId());
input.setPlotName(createReqVO.getPlotName());
input.setTenantId(createReqVO.getTenantId());
return input;
}).collect(Collectors.toList());
saveReqVO.setInvestGoodsList(inputList);
}
// if (createReqVO.getInvestGoodsList() != null && !createReqVO.getInvestGoodsList().isEmpty()) {
// List<FarmingRecordInputDO> inputList = createReqVO.getInvestGoodsList().stream()
// .map(item -> {
// FarmingRecordInputDO input = new FarmingRecordInputDO();
// input.setId(IdUtil.fastUUID());
// input.setDosage(item.getDose());
// input.setUsage(item.getUsage());
// input.setInputParentCategory(item.getAssetType()); // 投入品-父类
// input.setInputChildCategory(item.getInputsId()); // 投入品-子类
// input.setSingleUseOption(item.getUnit()); // 单位用量
// input.setSingleUseUnit(item.getPackageUnit()); // 单件单位
// input.setDilutionRatio(item.getDiluted()); // 稀释倍液
//
// input.setBaseId(createReqVO.getBaseId());
// input.setBaseName(createReqVO.getBaseName());
// input.setPlotId(createReqVO.getPlotId());
// input.setPlotName(createReqVO.getPlotName());
// input.setTenantId(createReqVO.getTenantId());
// return input;
// }).collect(Collectors.toList());
// saveReqVO.setInvestGoodsList(inputList);
// }
// 调用原有的创建方法
return createFarmingRecord(saveReqVO);

View File

@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.farm.service.inputlibrary;
import cn.hutool.core.util.IdUtil;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.usagerecords.InputUsageRecordsSaveReqVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputUsageRecordsDO;
@@ -27,8 +28,10 @@ public class InputUsageRecordsServiceImpl implements InputUsageRecordsService {
@Override
public String createInputUsageRecords(InputUsageRecordsSaveReqVO createReqVO) {
String id = IdUtil.fastUUID();
// 插入
InputUsageRecordsDO inputUsageRecords = BeanUtils.toBean(createReqVO, InputUsageRecordsDO.class);
inputUsageRecords.setId(id);
inputUsageRecordsMapper.insert(inputUsageRecords);
// 返回

View File

@@ -67,4 +67,6 @@ public interface ModelFarmingOperationService {
* @return
*/
List<String> getModelFarmingOperationInputIds(String mfId);
void updateModelFarmingOperationForInputIds(String fId, StringBuilder ids);
}

View File

@@ -15,10 +15,13 @@ 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.sysDict.SysDictService;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -51,11 +54,11 @@ public class ModelFarmingOperationServiceImpl implements ModelFarmingOperationSe
modelFarmingOperation.setId(IdUtil.fastUUID());
modelFarmingOperation.setTenantId(String.valueOf(user.getTenantId()));
modelFarmingOperationMapper.insert(modelFarmingOperation);
createReqVO.getInvestGoodsList().forEach(e -> {
e.setId(IdUtil.fastUUID());
e.setFarmingId(modelFarmingOperation.getId());
modelFarmingOperationInputMapper.insert(e);
});
// createReqVO.getInvestGoodsList().forEach(e -> {
// e.setId(IdUtil.fastUUID());
// e.setFarmingId(modelFarmingOperation.getId());
// modelFarmingOperationInputMapper.insert(e);
// });
// 返回
return modelFarmingOperation.getId();
}
@@ -68,11 +71,11 @@ public class ModelFarmingOperationServiceImpl implements ModelFarmingOperationSe
ModelFarmingOperationDO updateObj = BeanUtils.toBean(updateReqVO, ModelFarmingOperationDO.class);
modelFarmingOperationMapper.updateById(updateObj);
modelFarmingOperationInputMapper.deleteByFarmingId(updateObj.getId());
updateReqVO.getInvestGoodsList().forEach(e -> {
e.setId(IdUtil.fastUUID());
e.setFarmingId(updateObj.getId());
modelFarmingOperationInputMapper.insert(e);
});
// updateReqVO.getInvestGoodsList().forEach(e -> {
// e.setId(IdUtil.fastUUID());
// e.setFarmingId(updateObj.getId());
// modelFarmingOperationInputMapper.insert(e);
// });
}
@Override
@@ -127,11 +130,25 @@ public class ModelFarmingOperationServiceImpl implements ModelFarmingOperationSe
@Override
public List<String> getModelFarmingOperationInputIds(String mfId) {
ModelFarmingOperationDO modelFarmingOperationDO = modelFarmingOperationMapper.selectById(mfId);
if (ObjectUtils.isEmpty(modelFarmingOperationDO)) {
return Collections.EMPTY_LIST;
}
String inputsIds = modelFarmingOperationDO.getInputsIds();
if (StringUtils.isEmpty(inputsIds)) {
return Collections.EMPTY_LIST;
}
return Arrays.stream(inputsIds.split(","))
.map(String::trim)
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
}
@Override
public void updateModelFarmingOperationForInputIds(String fId, StringBuilder ids) {
ModelFarmingOperationDO aDo = new ModelFarmingOperationDO();
aDo.setId(fId);
aDo.setInputsIds(ids.toString());
modelFarmingOperationMapper.updateById(aDo);
}
}

View File

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelcycle.vo.ModelCycleRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.modelfarmingoperation.vo.ModelFarmingOperationRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.modelmanagement.models.vo.ModelManagementForPlanRespVO;
@@ -35,6 +36,7 @@ import cn.iocoder.yudao.module.farm.dal.mysql.modelweatherdisaster.ModelWeatherD
import cn.iocoder.yudao.module.farm.dal.mysql.personnelmanagement.SystemUserMapper;
import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.framework.util.ModelManagementConvertUtil;
import cn.iocoder.yudao.module.farm.manager.inputs.InputsManager;
import cn.iocoder.yudao.module.farm.service.inputlibrary.InputLibraryService;
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -83,6 +85,8 @@ public class ModelManagementServiceImpl implements ModelManagementService {
private SystemUserMapper systemUserMapper;
@Resource
private FarmingRecordMapper farmingRecordMapper;
@Resource
private InputsManager inputsManager;
@Override
public String createModelManagement(ModelManagementSaveReqVO createReqVO) {
@@ -336,14 +340,16 @@ public class ModelManagementServiceImpl implements ModelManagementService {
List<ModelFarmingOperationRespVO> respVOS = new ArrayList<>();
farmingOperationDO.forEach(e -> {
ModelFarmingOperationRespVO respVO = BeanUtils.toBean(e, ModelFarmingOperationRespVO.class);
List<ModelFarmingOperationInputDO> farmingOperationInputDOS = modelFarmingOperationInputMapper.selectByFarmingId(e.getId());
for (ModelFarmingOperationInputDO aDo : farmingOperationInputDOS) {
InputLibraryDO inputLibrary = inputLibraryService.getInputLibrary(aDo.getInputsId());
aDo.setInputsName(inputLibrary.getAssetName());
aDo.setUnitName(DictFrameworkUtils.parseDictDataLabel("asset_unit", aDo.getUnit()));
aDo.setPackageUnitName(DictFrameworkUtils.parseDictDataLabel("asset_price", aDo.getPackageUnit()));
}
respVO.setFarmingOperationInputDOS(farmingOperationInputDOS);
// List<ModelFarmingOperationInputDO> farmingOperationInputDOS = modelFarmingOperationInputMapper.selectByFarmingId(e.getId());
// for (ModelFarmingOperationInputDO aDo : farmingOperationInputDOS) {
// InputLibraryDO inputLibrary = inputLibraryService.getInputLibrary(aDo.getInputsId());
// aDo.setInputsName(inputLibrary.getAssetName());
// aDo.setUnitName(DictFrameworkUtils.parseDictDataLabel("asset_unit", aDo.getUnit()));
// aDo.setPackageUnitName(DictFrameworkUtils.parseDictDataLabel("asset_price", aDo.getPackageUnit()));
// }
// respVO.setFarmingOperationInputDOS(farmingOperationInputDOS);
List<InputsRespVO> inputs = inputsManager.getInputsPageForReferenceType(respVO.getId());
respVO.setFarmingOperationInputVOS(inputs);
int usableType = this.getModelFarmingOperationForUsableType(e.getId());
respVO.setUsableType(usableType);