refactor (farm): 投入品重构
- 涉及到的模块: - 基础数据管理 - 投入品 (模版类型) - 模型管理 - 农事记录 - 投入品(引用类型) - 生产中心 - 农事记录 - 投入品使用记录
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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 = "随便")
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -119,4 +119,6 @@ public class InputsDO extends BaseDO {
|
||||
private String activePrinciple;
|
||||
// 稀释倍液 非必填
|
||||
private Integer diluted;
|
||||
// 原始的主键ID, 用于回显 (只有引用类型才会存在该字段值)
|
||||
private String sourceId;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
// 返回
|
||||
|
||||
@@ -67,4 +67,6 @@ public interface ModelFarmingOperationService {
|
||||
* @return
|
||||
*/
|
||||
List<String> getModelFarmingOperationInputIds(String mfId);
|
||||
|
||||
void updateModelFarmingOperationForInputIds(String fId, StringBuilder ids);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user