diff --git a/yudao-module-farm/pom.xml b/yudao-module-farm/pom.xml index 9976c3c3..ca7000fe 100644 --- a/yudao-module-farm/pom.xml +++ b/yudao-module-farm/pom.xml @@ -145,6 +145,12 @@ org.springframework.boot spring-boot-starter-data-mongodb + + cn.iocoder.boot + yudao-module-system + 2025.08-SNAPSHOT + compile + diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java index ff405016..1fc1daca 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/cropfarmingcenter/CropFarmingCenterController.java @@ -244,4 +244,5 @@ public class CropFarmingCenterController { return success(res); } + } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/InputLibraryController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/InputLibraryController.java index d99d04b7..65f6f627 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/InputLibraryController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/InputLibraryController.java @@ -3,13 +3,16 @@ package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdata import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.InputLibraryPageReqVO; 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.dal.dataobject.inputlibrary.InputsDO; +import cn.iocoder.yudao.module.farm.manager.inputs.InputsManager; +import cn.iocoder.yudao.module.farm.service.inputlibrary.InputsService; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; import jakarta.servlet.http.HttpServletResponse; import java.util.List; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; -import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import io.swagger.v3.oas.annotations.tags.Tag; @@ -37,19 +40,24 @@ import cn.iocoder.yudao.module.farm.service.inputlibrary.InputLibraryService; @Validated public class InputLibraryController { - @Resource - private InputLibraryService inputLibraryService; + private final InputsManager inputsManager; + private final InputsService inputsService; + + public InputLibraryController(InputsManager inputsManager, InputsService inputsService) { + this.inputsManager = inputsManager; + this.inputsService = inputsService; + } @PostMapping("/create") @Operation(summary = "创建投入品库维护") - public CommonResult createInputLibrary(@Valid @RequestBody InputLibrarySaveReqVO createReqVO) { - return success(inputLibraryService.createInputLibrary(createReqVO)); + public CommonResult createInputLibrary(@Valid @RequestBody InputsSaveReqVO createReqVO) { + return success(inputsManager.createInputsForTemplateType(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新投入品库维护") - public CommonResult updateInputLibrary(@Valid @RequestBody InputLibrarySaveReqVO updateReqVO) { - inputLibraryService.updateInputLibrary(updateReqVO); + public CommonResult updateInputLibrary(@Valid @RequestBody InputsSaveReqVO updateReqVO) { + inputsService.updateInputs(updateReqVO); return success(true); } @@ -57,7 +65,7 @@ public class InputLibraryController { @Operation(summary = "删除投入品库维护") @Parameter(name = "id", description = "编号", required = true) public CommonResult deleteInputLibrary(@RequestParam("id") String id) { - inputLibraryService.deleteInputLibrary(id); + inputsService.deleteInputs(id); return success(true); } @@ -65,35 +73,50 @@ public class InputLibraryController { @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除投入品库维护") public CommonResult deleteInputLibraryList(@RequestParam("ids") List ids) { - inputLibraryService.deleteInputLibraryListByIds(ids); + inputsService.deleteInputsListByIds(ids); return success(true); } @GetMapping("/get") @Operation(summary = "获得投入品库维护") @Parameter(name = "id", description = "编号", required = true, example = "1024") - public CommonResult getInputLibrary(@RequestParam("id") String id) { - InputLibraryDO inputLibrary = inputLibraryService.getInputLibrary(id); - return success(BeanUtils.toBean(inputLibrary, InputLibraryRespVO.class)); + public CommonResult getInputLibrary(@RequestParam("id") String id) { + InputsRespVO inputs = inputsManager.getInputDetails(id); + return success(inputs); } @GetMapping("/page") @Operation(summary = "获得投入品库维护分页") - public CommonResult> getInputLibraryPage(@Valid InputLibraryPageReqVO pageReqVO) { - PageResult pageResult = inputLibraryService.getInputLibraryPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InputLibraryRespVO.class)); + public CommonResult> getInputLibraryPage(@Valid InputsPageReqVO pageReqVO) { + PageResult pageResult = inputsManager.getInputsPage(pageReqVO); + return success(pageResult); } - @GetMapping("/export-excel") - @Operation(summary = "导出投入品库维护 Excel") - @ApiAccessLog(operateType = EXPORT) - public void exportInputLibraryExcel(@Valid InputLibraryPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = inputLibraryService.getInputLibraryPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "投入品库维护.xls", "数据", InputLibraryRespVO.class, - BeanUtils.toBean(list, InputLibraryRespVO.class)); +// @GetMapping("/export-excel") +// @Operation(summary = "导出投入品库维护 Excel") +// @ApiAccessLog(operateType = EXPORT) +// public void exportInputLibraryExcel(@Valid InputLibraryPageReqVO pageReqVO, +// HttpServletResponse response) throws IOException { +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// List list = inputLibraryService.getInputLibraryPage(pageReqVO).getList(); +// // 导出 Excel +// ExcelUtils.write(response, "投入品库维护.xls", "数据", InputLibraryRespVO.class, +// BeanUtils.toBean(list, InputLibraryRespVO.class)); +// } + + @GetMapping("/sync") + @Operation(summary = "同步至wms") + @Parameter(name = "id", description = "编号", required = true) + public CommonResult syncInputLibrary(@RequestParam("id") String id) { + inputsManager.syncToWms(id); + return success(true); + } + + @GetMapping("/drop-down-box") + @Operation(summary = "投入品下拉框") + public CommonResult> syncInputLibrary() { + List res = inputsManager.getInputsDropDownList(); + return success(res); } } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsDetailReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsDetailReqVO.java new file mode 100644 index 00000000..3cdc3080 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsDetailReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: TODO + * @author: binda + * @date: 2025/10/17 21:37 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InputsDetailReqVO { + private String id; + private Integer inputCategory; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsDropDownListRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsDropDownListRespVO.java new file mode 100644 index 00000000..7e9ffc56 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsDropDownListRespVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @description: + * @author: binda + * @date: 2025/10/17 22:26 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InputsDropDownListRespVO { + + 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; + + @Schema(description = "用法") + private String remark; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsPageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsPageReqVO.java index 9df20f2f..09dd42b8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsPageReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsPageReqVO.java @@ -3,18 +3,9 @@ package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdata import lombok.*; -import java.util.*; - import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; -import java.math.BigDecimal; - -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 投入品分页 Request VO") @Data @@ -23,35 +14,13 @@ public class InputsPageReqVO extends PageParam { @Schema(description = "投入品分类 (1: 模版分类; 2: 引用分类)") private Integer inputCategory; - @Schema(description = "投入品类型", example = "2") + @Schema(description = "投入品类型") private String inputType; - @Schema(description = "投入品名称", example = "芋艿") + @Schema(description = "投入品名称") private String inputName; - @Schema(description = "投入品单价", example = "11570") - private BigDecimal inputPrice; - - @Schema(description = "投入品单位") - private String inputUnit; - - @Schema(description = "投入品规格") - private String inputSpec; - - @Schema(description = "投入品规格单位") - private String specUnit; - - @Schema(description = "投入品用量") - private BigDecimal inputUsage; - - @Schema(description = "投入品使用状态 (1:启用; 0:停用;)", example = "1") + @Schema(description = "投入品使用状态 (1:启用; 0:停用;)") private Integer usageStatus; - @Schema(description = "投入品备注", example = "你说的对") - private String remark; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsRespVO.java index b492bde2..8f168f98 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsRespVO.java @@ -1,16 +1,10 @@ package cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs; - +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; - -import java.util.*; import java.math.BigDecimal; - -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDateTime; - import cn.idev.excel.annotation.*; @Schema(description = "管理后台 - 投入品 Response VO") @@ -26,44 +20,78 @@ public class InputsRespVO { @ExcelProperty("投入品分类 (1: 模版分类; 2: 引用分类)") private Integer inputCategory; - @Schema(description = "投入品类型", example = "2") + @Schema(description = "投入品类型") @ExcelProperty("投入品类型") private String inputType; + private String inputTypeName; - @Schema(description = "投入品名称", example = "芋艿") + @Schema(description = "投入品名称") @ExcelProperty("投入品名称") private String inputName; - @Schema(description = "投入品单价", example = "11570") + @Schema(description = "投入品单价") @ExcelProperty("投入品单价") private BigDecimal inputPrice; - @Schema(description = "投入品单位") - @ExcelProperty("投入品单位") - private String inputUnit; - - @Schema(description = "投入品规格") + @Schema(description = "投入品规格") // 规格数量 @ExcelProperty("投入品规格") private String inputSpec; - @Schema(description = "投入品规格单位") + @Schema(description = "投入品单位") // 单品 + @ExcelProperty("投入品单位") + private String inputUnit; + private String inputUnitName; + + @Schema(description = "投入品规格单位") // 规格 @ExcelProperty("投入品规格单位") private String specUnit; + private String specUnitName; @Schema(description = "投入品用量") @ExcelProperty("投入品用量") - private BigDecimal inputUsage; + private Integer inputUsage; - @Schema(description = "投入品使用状态 (1:启用; 0:停用;)", example = "1") + @Schema(description = "投入品使用状态 (1:启用; 0:停用;)") @ExcelProperty("投入品使用状态 (1:启用; 0:停用;)") private Integer usageStatus; + private String usageStatusName; - @Schema(description = "投入品备注", example = "你说的对") + @Schema(description = "同步标识符 (1: 已同步; 0: 未同步;)") + @ExcelProperty("投入品使用状态") + private Integer syncFlag; + private String syncFlagName; + + @Schema(description = "当前规格类型 (1: 按单品; 2: 按规格)") + @ExcelProperty("当前规格类型") + private Integer currentSpecType; + private String currentSpecTypeName; + + @Schema(description = "投入品备注") @ExcelProperty("投入品备注") private String remark; @Schema(description = "创建时间") @ExcelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd") private LocalDateTime createTime; + @Schema(description = "可用库存数量") + private Integer availableQuantity; + + @Schema(description = "现货库存数量") + private Integer onHandQuantity; + + @Schema(description = "库存预警数量") + private Integer reservedQuantity; + + // 登记证号 非必填 + private String registration; + // 提供厂商 非必填 + private String manufacturer; + // 药物类型 非必填 + private Integer drugType; + // 有效成分 非必填 + private String activePrinciple; + // 稀释倍液 非必填 + private Integer diluted; } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsSaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsSaveReqVO.java index d2c2b477..414afc01 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsSaveReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/basicdatamanagement/inputlibrary/vo/inputs/InputsSaveReqVO.java @@ -15,31 +15,44 @@ public class InputsSaveReqVO { @Schema(description = "投入品分类 (1: 模版分类; 2: 引用分类)") private Integer inputCategory; - @Schema(description = "投入品类型", example = "2") + @Schema(description = "投入品类型") private String inputType; - @Schema(description = "投入品名称", example = "芋艿") + @Schema(description = "投入品名称") private String inputName; - @Schema(description = "投入品单价", example = "11570") + @Schema(description = "投入品单价") private BigDecimal inputPrice; - @Schema(description = "投入品单位") - private String inputUnit; - @Schema(description = "投入品规格") private String inputSpec; + @Schema(description = "投入品单位") + private String inputUnit; + @Schema(description = "投入品规格单位") private String specUnit; @Schema(description = "投入品用量") - private BigDecimal inputUsage; + private Integer inputUsage; - @Schema(description = "投入品使用状态 (1:启用; 0:停用;)", example = "1") + @Schema(description = "投入品使用状态 (1:启用; 0:停用;)") private Integer usageStatus; - @Schema(description = "投入品备注", example = "你说的对") + @Schema(description = "同步标识符 (1: 已同步; 0: 未同步;)") + private Integer syncFlag; + + @Schema(description = "投入品备注") private String remark; + // 登记证号 非必填 + private String registration; + // 提供厂商 非必填 + private String manufacturer; + // 药物类型 非必填 + private Integer drugType; + // 有效成分 非必填 + private String activePrinciple; + // 稀释倍液 非必填 + private Integer diluted; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/ModelFarmingOperationController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/ModelFarmingOperationController.java index e807a56d..9a43c8d8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/ModelFarmingOperationController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/ModelFarmingOperationController.java @@ -76,7 +76,6 @@ public class ModelFarmingOperationController { @GetMapping("/get") @Operation(summary = "获得模型管理-农事操作") @Parameter(name = "id", description = "编号", required = true, example = "1024") - public CommonResult getModelFarmingOperation(@RequestParam("id") String id) { ModelFarmingOperationRespVO modelFarmingOperation = modelFarmingOperationService.getModelFarmingOperation(id); return success(modelFarmingOperation); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java index 08ded5e9..75a40e98 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/managementcenter/modelmanagement/modelfarmingoperation/vo/ModelFarmingOperationRespVO.java @@ -79,5 +79,8 @@ public class ModelFarmingOperationRespVO { @Schema(description = "可修改状态 (1:是; 0:否;)", example = "31485") private Integer usableType; + @Schema(description = "投入品id集合") + private String inputsIds; + private List farmingOperationInputDOS; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingrecord/FarmingRecordDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingrecord/FarmingRecordDO.java index ff565c34..6559c429 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingrecord/FarmingRecordDO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/farmingrecord/FarmingRecordDO.java @@ -47,7 +47,7 @@ public class FarmingRecordDO extends BaseDO { */ private String taskTime; /** - * 任务计划 (1: 开始; 2: 结束;) + * 任务计划 (0: 未开始; 1: 开始; 2: 结束;) */ private Integer taskStatus; /** @@ -87,25 +87,11 @@ public class FarmingRecordDO extends BaseDO { */ @TableField(value = "feedback_image_url") private String feedbackImageUrl; - /** * 执行反馈-图片URL集合(业务层使用) */ @TableField(exist = false) private List feedbackImageUrlList; - - /** - * 任务时间集合 - */ - @TableField(exist = false) - private List taskTimeList; - - /** - * 执行人集合 - */ - @TableField(exist = false) - private List executorList; - /** * 逻辑删除标识符 */ @@ -124,6 +110,32 @@ public class FarmingRecordDO extends BaseDO { private String plotName; private String tenantId; + /** + * 引用类型投入品id集合 (逗号分隔) + */ + private String inputsIds; + + + + + + + + + + + + + /** + * 任务时间集合 + */ + @TableField(exist = false) + private List taskTimeList; + /** + * 执行人集合 + */ + @TableField(exist = false) + private List executorList; @TableField(exist = false) private List investGoodsList; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/inputlibrary/InputsDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/inputlibrary/InputsDO.java index 6ff9fe3e..313f601e 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/inputlibrary/InputsDO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/inputlibrary/InputsDO.java @@ -3,11 +3,7 @@ package cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary; import lombok.*; -import java.util.*; import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @@ -36,10 +32,15 @@ public class InputsDO extends BaseDO { * 投入品分类 (1: 模版分类; 2: 引用分类) */ private Integer inputCategory; + @TableField(exist = false) + private String inputCategoryName; + /** * 投入品类型 */ private String inputType; + @TableField(exist = false) + private String inputTypeName; /** * 投入品名称 */ @@ -48,29 +49,74 @@ public class InputsDO extends BaseDO { * 投入品单价 */ private BigDecimal inputPrice; - /** - * 投入品单位 - */ - private String inputUnit; /** * 投入品规格 */ private String inputSpec; + /** + * 投入品单位 + */ + private String inputUnit; + @TableField(exist = false) + private String inputUnitName; /** * 投入品规格单位 */ private String specUnit; + @TableField(exist = false) + private String specUnitName; + + /** + * 当前规格类型 (1: 按单品; 2: 按规格) + */ + private Integer currentSpecType; + @TableField(exist = false) + private String currentSpecTypeName; /** * 投入品用量 */ - private BigDecimal inputUsage; + private Integer inputUsage; /** * 投入品使用状态 (1:启用; 0:停用;) */ private Integer usageStatus; + @TableField(exist = false) + private String usageStatusName; + /** + * 同步标识符 (1: 已同步; 0: 未同步;) + */ + private Integer syncFlag; + @TableField(exist = false) + private String syncFlagName; /** * 投入品备注 */ private String remark; + private String tenantId; + /** + * 可用库存数量 + */ + private Integer availableQuantity; + /** + * 现货库存数量 + */ + private Integer onHandQuantity; + /** + * 库存预警数量 + */ + private Integer reservedQuantity; + + + + // 登记证号 非必填 + private String registration; + // 提供厂商 非必填 + private String manufacturer; + // 药物类型 非必填 + private Integer drugType; + // 有效成分 非必填 + private String activePrinciple; + // 稀释倍液 非必填 + private Integer diluted; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelfarmingoperation/ModelFarmingOperationDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelfarmingoperation/ModelFarmingOperationDO.java index e99851a6..40b2bffb 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelfarmingoperation/ModelFarmingOperationDO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/modelfarmingoperation/ModelFarmingOperationDO.java @@ -61,11 +61,6 @@ public class ModelFarmingOperationDO extends BaseDO { * 操作示意图 */ private String sketch; - /** - * 操作示意图集合(业务层使用) - */ - @TableField(exist = false) - private List sketchList; /** * 基地id */ @@ -82,8 +77,23 @@ public class ModelFarmingOperationDO extends BaseDO { * 地块 */ private String plotName; - + /** + * 租户ID + */ private String tenantId; + /** + * 引用类型投入品id集合 (逗号分隔) + */ + private String inputsIds; + + + + + /** + * 操作示意图集合(业务层使用) + */ + @TableField(exist = false) + private List sketchList; @TableField(exist = false) private List investGoodsList; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputsMapper.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputsMapper.java index d1bd1018..33f8f826 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputsMapper.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/mysql/inputlibrary/InputsMapper.java @@ -20,15 +20,8 @@ public interface InputsMapper extends BaseMapperX { .eqIfPresent(InputsDO::getInputCategory, reqVO.getInputCategory()) .eqIfPresent(InputsDO::getInputType, reqVO.getInputType()) .likeIfPresent(InputsDO::getInputName, reqVO.getInputName()) - .eqIfPresent(InputsDO::getInputPrice, reqVO.getInputPrice()) - .eqIfPresent(InputsDO::getInputUnit, reqVO.getInputUnit()) - .eqIfPresent(InputsDO::getInputSpec, reqVO.getInputSpec()) - .eqIfPresent(InputsDO::getSpecUnit, reqVO.getSpecUnit()) - .eqIfPresent(InputsDO::getInputUsage, reqVO.getInputUsage()) .eqIfPresent(InputsDO::getUsageStatus, reqVO.getUsageStatus()) - .eqIfPresent(InputsDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(InputsDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InputsDO::getId)); + .orderByDesc(InputsDO::getCreateTime)); } } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/CommonConstants.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/CommonConstants.java index 686d9bf1..b6b281c5 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/CommonConstants.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/CommonConstants.java @@ -39,54 +39,8 @@ public class CommonConstants { public final static String NEWS_TYPE_4 = "4"; // 1: 要闻;2:速递;3:热搜;4: 重磅; 99:其他 public final static String NEWS_TYPE_99 = "99"; // 1: 要闻;2:速递;3:热搜;4: 重磅; 99:其他 - - - public static Map PLAN_MAP = new HashMap<>(); - public static Map LIFE_CYCLE_MAP = new HashMap<>(); - public static Map GRID_TYPE = new HashMap<>(); - public static Map DEVICE_STATE_MAP = new HashMap<>(); - public static Map BINDING_STATE_MAP = new HashMap<>(); - public static Map NEWS_TYPE_MAP = new HashMap<>(); - public static Map ONLINE_MAP = new HashMap<>(); - public static Map LEASE_STATUS_MAP = new HashMap<>(); - - static { - PLAN_MAP.put(PLAN_STATUS_1, "未开始"); - PLAN_MAP.put(PLAN_STATUS_2, "进行中"); - PLAN_MAP.put(PLAN_STATUS_3, "已完成"); - PLAN_MAP.put(PLAN_STATUS_4, "逾期"); - PLAN_MAP.put(PLAN_STATUS_5, "逾期未开始"); - PLAN_MAP.put(PLAN_STATUS_6, "逾期未结束"); - PLAN_MAP.put(PLAN_STATUS_7, "已结束"); - - LIFE_CYCLE_MAP.put("1", "一年生"); - LIFE_CYCLE_MAP.put("2", "半年生"); - LIFE_CYCLE_MAP.put("10", "多年生"); - - GRID_TYPE.put("1", "养殖类型"); - GRID_TYPE.put("2", "水产类型"); - - DEVICE_STATE_MAP.put(DEVICE_STATE_0,"未激活"); - DEVICE_STATE_MAP.put(DEVICE_STATE_1,"在线"); - DEVICE_STATE_MAP.put(DEVICE_STATE_2,"离线"); - DEVICE_STATE_MAP.put(DEVICE_STATE_3,"维护中"); - DEVICE_STATE_MAP.put(DEVICE_STATE_4,"故障"); - - BINDING_STATE_MAP.put(0,"未绑定"); - BINDING_STATE_MAP.put(1,"已绑定"); - - NEWS_TYPE_MAP.put(NEWS_TYPE_1,"要闻"); - NEWS_TYPE_MAP.put(NEWS_TYPE_2,"速递"); - NEWS_TYPE_MAP.put(NEWS_TYPE_3,"热搜"); - NEWS_TYPE_MAP.put(NEWS_TYPE_4,"重磅"); - NEWS_TYPE_MAP.put(NEWS_TYPE_99,"其他"); - - ONLINE_MAP.put("online", "在线"); - ONLINE_MAP.put("offline", "离线"); - - LEASE_STATUS_MAP.put(1, "已租"); - LEASE_STATUS_MAP.put(0, "未租"); - } + public final static Integer INPUT_TYPE_1 = 1; // 1: 模版类型 + public final static Integer INPUT_TYPE_2 = 2; // 1: 引用类型 // 模型类型 (1:模型模板; 2:引用案例) public final static Integer MODEL_TYPE_1 = 1; @@ -125,4 +79,79 @@ public class CommonConstants { public final static String DEVICE_TYPE_SOIL = "soil"; public final static String DEVICE_TYPE_WF = "water_fertilizer"; public final static String DEVICE_TYPE_VIDEO_MONITOR = "video_monitor"; + + public final static Integer CURRENT_SPEC_TYPE_1 = 1; // 当前规格类型 (1: 按单品; 2: 按规格) + public final static Integer CURRENT_SPEC_TYPE_2 = 2; // 当前规格类型 (1: 按单品; 2: 按规格) + + public final static Integer SYNC_FLAG_YES = 1; // 同步标识符 (1: 已同步; 0: 未同步;) + public final static Integer SYNC_FLAG_NO = 0; // 同步标识符 (1: 已同步; 0: 未同步;) + + public final static Integer INPUT_CATEGORY_1 = 1; // 模版类型 + public final static Integer INPUT_CATEGORY_2 = 2; // 引用类型 + + public static Map PLAN_MAP = new HashMap<>(); + public static Map LIFE_CYCLE_MAP = new HashMap<>(); + public static Map GRID_TYPE = new HashMap<>(); + public static Map DEVICE_STATE_MAP = new HashMap<>(); + public static Map BINDING_STATE_MAP = new HashMap<>(); + public static Map NEWS_TYPE_MAP = new HashMap<>(); + public static Map ONLINE_MAP = new HashMap<>(); + public static Map LEASE_STATUS_MAP = new HashMap<>(); + + public static Map CURRENT_SPEC_TYPE_MAP = new HashMap<>(); + public static Map SYNC_FLAG_MAP = new HashMap<>(); + public static Map USAGE_STATUS_MAP = new HashMap<>(); + public static Map INPUT_CATEGORY_MAP = new HashMap<>(); + + static { + INPUT_CATEGORY_MAP.put(INPUT_CATEGORY_1,"模版类型"); + INPUT_CATEGORY_MAP.put(INPUT_CATEGORY_2,"引用类型"); + + + USAGE_STATUS_MAP.put(YES_CODE,"启用"); + USAGE_STATUS_MAP.put(NO_CODE,"停用"); + + CURRENT_SPEC_TYPE_MAP.put(CURRENT_SPEC_TYPE_1, "按单品"); + CURRENT_SPEC_TYPE_MAP.put(CURRENT_SPEC_TYPE_2, "按规格"); + + SYNC_FLAG_MAP.put(SYNC_FLAG_YES, "已同步"); + SYNC_FLAG_MAP.put(SYNC_FLAG_NO, "未同步"); + + PLAN_MAP.put(PLAN_STATUS_1, "未开始"); + PLAN_MAP.put(PLAN_STATUS_2, "进行中"); + PLAN_MAP.put(PLAN_STATUS_3, "已完成"); + PLAN_MAP.put(PLAN_STATUS_4, "逾期"); + PLAN_MAP.put(PLAN_STATUS_5, "逾期未开始"); + PLAN_MAP.put(PLAN_STATUS_6, "逾期未结束"); + PLAN_MAP.put(PLAN_STATUS_7, "已结束"); + + LIFE_CYCLE_MAP.put("1", "一年生"); + LIFE_CYCLE_MAP.put("2", "半年生"); + LIFE_CYCLE_MAP.put("10", "多年生"); + + GRID_TYPE.put("1", "养殖类型"); + GRID_TYPE.put("2", "水产类型"); + + DEVICE_STATE_MAP.put(DEVICE_STATE_0,"未激活"); + DEVICE_STATE_MAP.put(DEVICE_STATE_1,"在线"); + DEVICE_STATE_MAP.put(DEVICE_STATE_2,"离线"); + DEVICE_STATE_MAP.put(DEVICE_STATE_3,"维护中"); + DEVICE_STATE_MAP.put(DEVICE_STATE_4,"故障"); + + BINDING_STATE_MAP.put(0,"未绑定"); + BINDING_STATE_MAP.put(1,"已绑定"); + + NEWS_TYPE_MAP.put(NEWS_TYPE_1,"要闻"); + NEWS_TYPE_MAP.put(NEWS_TYPE_2,"速递"); + NEWS_TYPE_MAP.put(NEWS_TYPE_3,"热搜"); + NEWS_TYPE_MAP.put(NEWS_TYPE_4,"重磅"); + NEWS_TYPE_MAP.put(NEWS_TYPE_99,"其他"); + + ONLINE_MAP.put("online", "在线"); + ONLINE_MAP.put("offline", "离线"); + + LEASE_STATUS_MAP.put(1, "已租"); + LEASE_STATUS_MAP.put(0, "未租"); + } + } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/InputsManager.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/InputsManager.java new file mode 100644 index 00000000..ba9b1ba0 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/InputsManager.java @@ -0,0 +1,229 @@ +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.modelmanagement.modelfarmingoperation.vo.ModelFarmingOperationRespVO; +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; +import cn.iocoder.yudao.module.farm.manager.inputs.service.WmsStockRemoteService; +import cn.iocoder.yudao.module.farm.service.farmingrecord.FarmingRecordService; +import cn.iocoder.yudao.module.farm.service.inputlibrary.InputUsageRecordsService; +import cn.iocoder.yudao.module.farm.service.inputlibrary.InputsService; +import cn.iocoder.yudao.module.farm.service.modelfarmingoperation.ModelFarmingOperationService; +import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; +import cn.iocoder.yudao.module.system.service.dict.DictDataService; +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.stream.Collectors; + +import static cn.iocoder.yudao.module.farm.enums.CommonConstants.*; + +/** + * @description: 投入品 + * @author: binda + * @date: 2025/10/17 14:27 + */ +@Service +public class InputsManager { + + private final InputsService inputsService; + private final InputUsageRecordsService inputUsageRecordsService; + private final WmsStockRemoteService wmsStockService; + private final DictDataService dictDataService; + private final FarmingRecordService farmingRecordService; + private final ModelFarmingOperationService modelFarmingOperationService; + + public InputsManager(InputsService inputsService, InputUsageRecordsService inputUsageRecordsService, WmsStockRemoteService wmsStockService, DictDataService dictDataService, FarmingRecordService farmingRecordService, ModelFarmingOperationService modelFarmingOperationService) { + this.inputsService = inputsService; + this.inputUsageRecordsService = inputUsageRecordsService; + this.wmsStockService = wmsStockService; + this.dictDataService = dictDataService; + this.farmingRecordService = farmingRecordService; + this.modelFarmingOperationService = modelFarmingOperationService; + } + + private final String ASSET_TYPE = "asset_type"; // 投入品类型 + private final String ITEMS_UNIT = "asset_unit"; // 规格-单位 (eg: 斤,吨..) + private final String SPECIFICATION_PRICE = "asset_price"; // 单品-单位 (eg: 捆,箱..) + + private Map getDictTypeMap(String dictType) { + List dictDataList = dictDataService.getDictDataList(NO_CODE, dictType); + return dictDataList.stream() + // 按 sort 字段降序排序(数字大的在上面) + .sorted((o1, o2) -> o2.getSort().compareTo(o1.getSort())) + // 收集到 Map 中 + .collect(Collectors.toMap( + DictDataDO::getValue, // key 映射 + DictDataDO::getLabel, // value 映射 + (oldValue, newValue) -> oldValue, // 键冲突时的处理策略 + LinkedHashMap::new // 使用 LinkedHashMap 保持排序顺序 + )); + } + + private void covertStr(InputsDO e,Map m,Map m2,Map m3) { + e.setUsageStatusName(USAGE_STATUS_MAP.get(e.getUsageStatus())); + e.setSyncFlagName(SYNC_FLAG_MAP.get(e.getSyncFlag())); + e.setCurrentSpecTypeName(CURRENT_SPEC_TYPE_MAP.get(e.getCurrentSpecType())); + e.setInputTypeName(m.get(e.getInputType())); + e.setInputUnitName(m2.get(e.getInputUnit())); + e.setSpecUnitName(m3.get(e.getSpecUnit())); + } + + /* + * ============================ + * 基础数据管理 - 投入品 (模版类型) + * ============================ + */ + + public String createInputsForTemplateType(InputsSaveReqVO req) { + // 新增本地投入品 + req.setInputCategory(INPUT_TYPE_1); + String id = inputsService.createInputs(req); + + // todo 同步给WMS系统 + if (StringUtils.isNotEmpty(id)) { + this.syncToWms(id); + } + return id; + } + + public boolean syncToWms(String id) { + InputCategoryDTO syncDTO = new InputCategoryDTO(); + String code = wmsStockService.syncInputCategory(syncDTO); + if (!StringUtils.equals(code, "success")) { + return false; + } + + InputsSaveReqVO req = new InputsSaveReqVO(); + req.setId(id); + req.setSyncFlag(CommonConstants.YES_CODE); + inputsService.updateInputs(req); + return true; + } + + public PageResult getInputsPage(InputsPageReqVO req) { + + Map inputTypeNameMap = this.getDictTypeMap(ASSET_TYPE); + Map itemsNameMap = this.getDictTypeMap(ITEMS_UNIT); + Map specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE); + + req.setInputCategory(CommonConstants.INPUT_TYPE_1); + PageResult source = inputsService.getInputsPage(req); + source.getList().stream().forEach(e -> { + covertStr(e, inputTypeNameMap, itemsNameMap, specificationNameMap); + }); + + PageResult res = BeanUtils.toBean(source, InputsRespVO.class); + return res; + + } + + public InputsRespVO getInputDetails(String id) { + + Map inputTypeNameMap = this.getDictTypeMap(ASSET_TYPE); + Map itemsNameMap = this.getDictTypeMap(ITEMS_UNIT); + Map specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE); + + InputsDO source = inputsService.getInputs(new InputsDetailReqVO(id, INPUT_CATEGORY_1)); + covertStr(source, inputTypeNameMap, itemsNameMap, specificationNameMap); + + InputsRespVO res = BeanUtils.toBean(source, InputsRespVO.class); + return res; + + } + + public List getInputsDropDownList() { + Map inputTypeNameMap = this.getDictTypeMap(ASSET_TYPE); + Map itemsNameMap = this.getDictTypeMap(ITEMS_UNIT); + Map specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE); + + List source = inputsService.getInputsListForTemplateType(); + source.stream().forEach(e -> { + covertStr(e, inputTypeNameMap, itemsNameMap, specificationNameMap); + }); + return BeanUtils.toBean(source,InputsDropDownListRespVO.class); + } + + + + + + + + + + + /* + * ================================================= + * 模型管理 - 农事记录 - 投入品 (引用类型) + * ================================================= + */ + + public void createInputsForReferenceType(InputsSaveReqVO req) { + req.setInputCategory(INPUT_TYPE_2); + String id = inputsService.createInputs(req); + } + + PageResult getInputsPageForReferenceType(String mfId,InputsPageReqVO req) { + + ModelFarmingOperationRespVO modelFarmingOperation = modelFarmingOperationService.getModelFarmingOperation(mfId); + String inputsIds = modelFarmingOperation.getInputsIds(); + List ids = Arrays.stream(inputsIds.split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toList()); + + + + + Map inputTypeNameMap = this.getDictTypeMap(ASSET_TYPE); + Map itemsNameMap = this.getDictTypeMap(ITEMS_UNIT); + Map specificationNameMap = this.getDictTypeMap(SPECIFICATION_PRICE); + + req.setInputCategory(CommonConstants.INPUT_TYPE_2); + PageResult source = inputsService.getInputsPage(req); + source.getList().stream().forEach(e -> { + covertStr(e, inputTypeNameMap, itemsNameMap, specificationNameMap); + }); + + PageResult res = BeanUtils.toBean(source, InputsRespVO.class); + return res; + } + + + + + + + + + + + + + + + + + + + + /* + * =============================== + * 种植中心 - 农事记录 - 投入品使用记录 + * =============================== + */ + + public void createInputUsageRecords(InputsSaveReqVO req) { + + } + + +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/dto/wms/InputCategoryDTO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/dto/wms/InputCategoryDTO.java new file mode 100644 index 00000000..27002978 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/dto/wms/InputCategoryDTO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.farm.manager.inputs.dto.wms; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: mws 物料库存 同步接口请求实体 + * @author: binda + * @date: 2025/10/17 15:29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InputCategoryDTO { + private String id; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/service/WmsStockRemoteService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/service/WmsStockRemoteService.java new file mode 100644 index 00000000..1024119a --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/service/WmsStockRemoteService.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.farm.manager.inputs.service; + +import cn.iocoder.yudao.module.farm.manager.inputs.dto.wms.InputCategoryDTO; + +/** + * @description: wms系统 物料库存接口 + * @author: binda + * @data: 2025/10/17 15:27 + */ +public interface WmsStockRemoteService { + // TODO: 2025/10/17 + String syncInputCategory(InputCategoryDTO inputCategoryDTO); +} + diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/service/impl/WmsStockRemoteServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/service/impl/WmsStockRemoteServiceImpl.java new file mode 100644 index 00000000..cf293ba4 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/inputs/service/impl/WmsStockRemoteServiceImpl.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.farm.manager.inputs.service.impl; + +import cn.iocoder.yudao.module.farm.manager.inputs.dto.wms.InputCategoryDTO; +import cn.iocoder.yudao.module.farm.manager.inputs.service.WmsStockRemoteService; +import org.springframework.stereotype.Service; + +/** + * @description: TODO + * @author: binda + * @date: 2025/10/20 09:55 + */ +@Service +public class WmsStockRemoteServiceImpl implements WmsStockRemoteService { + @Override + public String syncInputCategory(InputCategoryDTO inputCategoryDTO) { + return null; + } +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputUsageRecordsService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputUsageRecordsService.java index 15ce8948..21178c49 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputUsageRecordsService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputUsageRecordsService.java @@ -8,7 +8,6 @@ import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatam import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputUsageRecordsDO; import jakarta.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; /** * 投入品使用记录 Service 接口 diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsService.java index 5bf06389..1fd46e35 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsService.java @@ -3,12 +3,12 @@ package cn.iocoder.yudao.module.farm.service.inputlibrary; import java.util.*; +import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsDetailReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsSaveReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputsDO; import jakarta.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; /** * 投入品 Service 接口 @@ -53,6 +53,8 @@ public interface InputsService { * @return 投入品 */ InputsDO getInputs(String id); + InputsDO getInputs(InputsDetailReqVO req); + List getInputsListForTemplateType(); /** * 获得投入品分页 diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsServiceImpl.java index 87a7cabc..42599647 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/inputlibrary/InputsServiceImpl.java @@ -2,10 +2,14 @@ package cn.iocoder.yudao.module.farm.service.inputlibrary; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsDetailReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.managementcenter.basicdatamanagement.inputlibrary.vo.inputs.InputsSaveReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputsDO; import cn.iocoder.yudao.module.farm.dal.mysql.inputlibrary.InputsMapper; +import cn.iocoder.yudao.module.farm.enums.CommonConstants; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -17,6 +21,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 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.*; /** @@ -33,8 +38,13 @@ public class InputsServiceImpl implements InputsService { @Override public String createInputs(InputsSaveReqVO createReqVO) { + Long tenantId = getLoginUser().getTenantId(); + String id = IdUtil.fastUUID(); + // 插入 InputsDO inputs = BeanUtils.toBean(createReqVO, InputsDO.class); + inputs.setId(id); + inputs.setTenantId(String.valueOf(tenantId)); inputsMapper.insert(inputs); // 返回 @@ -76,6 +86,31 @@ public class InputsServiceImpl implements InputsService { return inputsMapper.selectById(id); } + @Override + public InputsDO getInputs(InputsDetailReqVO req) { + Long tenantId = getLoginUser().getTenantId(); + +// LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); +// x.eq(InputsDO::getId, req.getId()); +// x.eq(InputsDO::getInputCategory, req.getInputCategory()); +// x.eq(InputsDO::getDeleted, CommonConstants.NO_CODE); +// x.eq(InputsDO::getTenantId, tenantId); + + return inputsMapper.selectOne(InputsDO::getId,req.getId()); + } + + @Override + public List getInputsListForTemplateType() { + Long tenantId = getLoginUser().getTenantId(); + + LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); + x.eq(InputsDO::getInputCategory, CommonConstants.INPUT_CATEGORY_1); + x.eq(InputsDO::getDeleted, CommonConstants.NO_CODE); + x.eq(InputsDO::getTenantId, tenantId); + + return inputsMapper.selectList(x); + } + @Override public PageResult getInputsPage(InputsPageReqVO pageReqVO) { return inputsMapper.selectPage(pageReqVO);