diff --git a/pom.xml b/pom.xml index fe6130f..6f6b1c9 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.31 + 3.0.34 17 ${java.version} diff --git a/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java b/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java index 07be175..3b24a8f 100644 --- a/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java +++ b/yudao-module-base/yudao-module-base-api/src/main/java/cn/iocoder/yudao/module/tmpltp/enums/ErrorCodeConstants.java @@ -12,7 +12,9 @@ public interface ErrorCodeConstants { ErrorCode TEMPLATE_INSTANCE_NOT_EXISTS = new ErrorCode(1_027_000_504, "模板实例不存在"); ErrorCode TMPL_TP_SATUS_ERROR = new ErrorCode(1_027_000_506, "状态变更失败"); ErrorCode TMPL_TP_DEl_ERROR = new ErrorCode(1_027_000_507, "模版分类删除失败"); - + ErrorCode TEMPLATE_INSTANCE_DATA_NOT_EXISTS = new ErrorCode(1_027_000_508, "实例字段值不存在"); + ErrorCode TEMPLATE_INSTANCE_ITEM_NOT_EXISTS = new ErrorCode(1_027_000_509, "实例条款值不存在"); + ErrorCode PARAMS_IS_NULL_OR_ERR = new ErrorCode(1_027_000_510, "参数为空"); } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java new file mode 100644 index 0000000..4bc9005 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceDataController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TemplateInstanceDataService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + + +@Tag(name = "管理后台 - 实例字段值") +@RestController +@RequestMapping("/base/template-instance-data") +@Validated +public class TemplateInstanceDataController implements BusinessControllerMarker { + + + @Resource + private TemplateInstanceDataService templateInstanceDataService; + + @PostMapping("/create") + @Operation(summary = "创建实例字段值") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:create')") + public CommonResult createTemplateInstanceData(@Valid @RequestBody TemplateInstanceDataSaveReqVO createReqVO) { + return success(templateInstanceDataService.createTemplateInstanceData(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新实例字段值") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:update')") + public CommonResult updateTemplateInstanceData(@Valid @RequestBody TemplateInstanceDataSaveReqVO updateReqVO) { + templateInstanceDataService.updateTemplateInstanceData(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除实例字段值") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-instance-data:delete')") + public CommonResult deleteTemplateInstanceData(@RequestParam("id") Long id) { + templateInstanceDataService.deleteTemplateInstanceData(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除实例字段值") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:delete')") + public CommonResult deleteTemplateInstanceDataList(@RequestBody BatchDeleteReqVO req) { + templateInstanceDataService.deleteTemplateInstanceDataListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得实例字段值") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:query')") + public CommonResult getTemplateInstanceData(@RequestParam("id") Long id) { + TemplateInstanceDataDO templateInstanceData = templateInstanceDataService.getTemplateInstanceData(id); + return success(BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得实例字段值分页") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:query')") + public CommonResult> getTemplateInstanceDataPage(@Valid TemplateInstanceDataPageReqVO pageReqVO) { + PageResult pageResult = templateInstanceDataService.getTemplateInstanceDataPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TemplateInstanceDataRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出实例字段值 Excel") + @PreAuthorize("@ss.hasPermission('base:template-instance-data:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTemplateInstanceDataExcel(@Valid TemplateInstanceDataPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = templateInstanceDataService.getTemplateInstanceDataPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "实例字段值.xls", "数据", TemplateInstanceDataRespVO.class, + BeanUtils.toBean(list, TemplateInstanceDataRespVO.class)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java new file mode 100644 index 0000000..3d1437a --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TemplateInstanceItemController.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import cn.iocoder.yudao.module.base.service.tmpltp.TemplateInstanceItemService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 实例条款值") +@RestController +@RequestMapping("/base/template-instance-item") +@Validated +public class TemplateInstanceItemController implements BusinessControllerMarker { + + + @Resource + private TemplateInstanceItemService templateInstanceItemService; + + @PostMapping("/create") + @Operation(summary = "创建实例条款值") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:create')") + public CommonResult createTemplateInstanceItem(@Valid @RequestBody TemplateInstanceItemSaveReqVO createReqVO) { + return success(templateInstanceItemService.createTemplateInstanceItem(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新实例条款值") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:update')") + public CommonResult updateTemplateInstanceItem(@Valid @RequestBody TemplateInstanceItemSaveReqVO updateReqVO) { + templateInstanceItemService.updateTemplateInstanceItem(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除实例条款值") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:template-instance-item:delete')") + public CommonResult deleteTemplateInstanceItem(@RequestParam("id") String id) { + templateInstanceItemService.deleteTemplateInstanceItem(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除实例条款值") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:delete')") + public CommonResult deleteTemplateInstanceItemList(@RequestBody BatchDeleteReqVO req) { + List ids = req.getIds().stream().map(String::valueOf).toList(); + templateInstanceItemService.deleteTemplateInstanceItemListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得实例条款值") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:query')") + public CommonResult getTemplateInstanceItem(@RequestParam("id") String id) { + TemplateInstanceItemDO templateInstanceItem = templateInstanceItemService.getTemplateInstanceItem(id); + return success(BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得实例条款值分页") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:query')") + public CommonResult> getTemplateInstanceItemPage(@Valid TemplateInstanceItemPageReqVO pageReqVO) { + PageResult pageResult = templateInstanceItemService.getTemplateInstanceItemPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TemplateInstanceItemRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出实例条款值 Excel") + @PreAuthorize("@ss.hasPermission('base:template-instance-item:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTemplateInstanceItemExcel(@Valid TemplateInstanceItemPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = templateInstanceItemService.getTemplateInstanceItemPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "实例条款值.xls", "数据", TemplateInstanceItemRespVO.class, + BeanUtils.toBean(list, TemplateInstanceItemRespVO.class)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java index 8837b4d..10984af 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/TmplTpController.java @@ -26,6 +26,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult; 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.common.pojo.CommonResult.success; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -33,6 +35,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.PARAMS_IS_NULL_OR_ERR; @Tag(name = "管理后台 - 模板分类") @@ -127,16 +130,16 @@ public class TmplTpController extends AbstractFileUploadController implements Bu //更新类型状态 @PutMapping("/updateStatus") - @Operation(summary = "更新模板字段状态") + @Operation(summary = "更新模板类型状态") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:update')") public CommonResult updateStatus(@RequestBody Map params) { if (params == null){ - throw new RuntimeException("参数不能为空"); + throw exception(PARAMS_IS_NULL_OR_ERR); } - if (!params.containsKey("id") || !params.containsKey("status")){ - throw new RuntimeException("参数id或者状态不能为空"); + if (!params.containsKey("id") || !params.containsKey("sts")){ + throw exception(PARAMS_IS_NULL_OR_ERR); } - tmplTpService.updateStatus(Long.valueOf(params.get("id").toString()), params.get("status").toString()); + tmplTpService.updateStatus(Long.valueOf(params.get("id").toString()), params.get("sts").toString()); return success(true); } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java new file mode 100644 index 0000000..d999ec6 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataPageReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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 +public class TemplateInstanceDataPageReqVO extends PageParam { + + @Schema(description = "关联实例主键", example = "25824") + private String instanceId; + + @Schema(description = "字段标识;关联字段库") + private String fieldKey; + + @Schema(description = "用户填写的值") + private String fieldValue; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java new file mode 100644 index 0000000..cfb344e --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 实例字段值 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TemplateInstanceDataRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10920") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25824") + @ExcelProperty("关联实例主键") + private String instanceId; + + @Schema(description = "字段标识;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("字段标识;关联字段库") + private String fieldKey; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("用户填写的值") + private String fieldValue; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java new file mode 100644 index 0000000..ab71737 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 实例字段值新增/修改 Request VO") +@Data +public class TemplateInstanceDataSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10920") + private Long id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25824") + @NotEmpty(message = "关联实例主键不能为空") + private String instanceId; + + @Schema(description = "字段标识;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "字段标识;关联字段库不能为空") + private String fieldKey; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "用户填写的值不能为空") + private String fieldValue; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java new file mode 100644 index 0000000..dcc825e --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemPageReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 实例条款值分页 Request VO") +@Data +public class TemplateInstanceItemPageReqVO extends PageParam { + + @Schema(description = "关联实例主键", example = "28964") + private String inscId; + + @Schema(description = "条款库主键;关联字段库", example = "11278") + private String itmId; + + @Schema(description = "用户填写的值") + private String val; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java new file mode 100644 index 0000000..cedae9a --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 实例条款值 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TemplateInstanceItemRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25152") + @ExcelProperty("主键") + private String id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28964") + @ExcelProperty("关联实例主键") + private String inscId; + + @Schema(description = "条款库主键;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED, example = "11278") + @ExcelProperty("条款库主键;关联字段库") + private String itmId; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("用户填写的值") + private String val; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java new file mode 100644 index 0000000..f63db78 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 实例条款值新增/修改 Request VO") +@Data +public class TemplateInstanceItemSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25152") + private String id; + + @Schema(description = "关联实例主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28964") + @NotEmpty(message = "关联实例主键不能为空") + private String inscId; + + @Schema(description = "条款库主键;关联字段库", requiredMode = Schema.RequiredMode.REQUIRED, example = "11278") + @NotEmpty(message = "条款库主键;关联字段库不能为空") + private String itmId; + + @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "用户填写的值不能为空") + private String val; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java index ad2ca2b..7252dd7 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplItmSaveReqVO.java @@ -10,7 +10,7 @@ import lombok.Data; @Data public class TmplItmSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "") - private long id; + private Long id; @Schema(description = "条款编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "") private String itmNum; diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java index b8529ca..27b2759 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/controller/admin/templtp/vo/TmplTpSaveReqVO.java @@ -28,11 +28,10 @@ public class TmplTpSaveReqVO { private Long srt; @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "状态不能为空") private String sts; - @NotEmpty(message = "条款能为空") + private List tmplItmIds ; - @NotEmpty(message = "字段不能为空") - private List tmplTpFldIds; + + private List tmplTpFldIds; } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java new file mode 100644 index 0000000..190ae6b --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceDataDO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 实例字段值 DO +* +* @author 后台管理 +*/ +@TableName("bse_tmpl_insc_dat") +@KeySequence("bse_tmpl_insc_dat_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TemplateInstanceDataDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 关联实例主键 + */ + @TableField("INSC_ID") + private String instanceId; + /** + * 字段标识;关联字段库 + */ + @TableField("FLD_KY") + private String fieldKey; + /** + * 用户填写的值 + */ + @TableField("FLD_VAL") + private String fieldValue; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java new file mode 100644 index 0000000..59ef319 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/dataobject/tmpltp/TemplateInstanceItemDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 实例条款值 DO +* +* @author 后台管理 +*/ +@TableName("bse_tmpl_insc_itm") +@KeySequence("bse_tmpl_insc_itm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TemplateInstanceItemDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 关联实例主键 + */ + @TableField("INSC_ID") + private String inscId; + /** + * 条款库主键;关联字段库 + */ + @TableField("ITM_ID") + private String itmId; + /** + * 用户填写的值 + */ + @TableField("VAL") + private String val; + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java new file mode 100644 index 0000000..770a66a --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 实例字段值 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface TemplateInstanceDataMapper extends BaseMapperX { + + default PageResult selectPage(TemplateInstanceDataPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TemplateInstanceDataDO::getInstanceId, reqVO.getInstanceId()) + .eqIfPresent(TemplateInstanceDataDO::getFieldKey, reqVO.getFieldKey()) + .eqIfPresent(TemplateInstanceDataDO::getFieldValue, reqVO.getFieldValue()) + .betweenIfPresent(TemplateInstanceDataDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TemplateInstanceDataDO::getId)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java new file mode 100644 index 0000000..18a39f3 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 实例条款值 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface TemplateInstanceItemMapper extends BaseMapperX { + + default PageResult selectPage(TemplateInstanceItemPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TemplateInstanceItemDO::getInscId, reqVO.getInscId()) + .eqIfPresent(TemplateInstanceItemDO::getItmId, reqVO.getItmId()) + .eqIfPresent(TemplateInstanceItemDO::getVal, reqVO.getVal()) + .betweenIfPresent(TemplateInstanceItemDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TemplateInstanceItemDO::getId)); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java index 129c356..47fdb39 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/dal/mysql/tmpltp/TmplTpMapper.java @@ -5,8 +5,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplFldRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplItmRespVO; import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpPageReqVO; import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpDO; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -34,26 +37,11 @@ public interface TmplTpMapper extends BaseMapperX { .orderByDesc(TmplTpDO::getId)); } - @Select("select bt.*\n" + - "from bse_tmpl_tp btt\n" + - " inner join bse_tmpl_fld_rel btfr on btt.id = btfr.tmpl_tp_id\n" + - " inner join biz_tmpl_tp_fld bt on bt.id = btfr.tp_fld_id\n" + - "where btt.deleted = 0\n" + - " and btfr.deleted = 0\n" + - " and bt.deleted = 0\n" + - "and btt.id = #{id}") - List> getField(@Param("id") Long id); + @MapKey("id") + List getField(@Param("id") Long id); - @Select("select bti.*\n" + - "from bse_tmpl_tp btt\n" + - " inner join BSE_TMPL_ITM_REL btir on btt.id = btir.itm_fld_id\n" + - " inner join BSE_TMPL_ITM bti on btir.itm_fld_id = bti.id\n" + - "where btt.deleted = 0\n" + - " and btfr.deleted = 0\n" + - " and bti.deleted = 0\n" + - "and btt.id = #{id}") - List>getClause(@Param("id") Long id); + @MapKey("id") + List getClause(@Param("id") Long id); - @Select("select * from bse_tmpl_tp where id= #{id}") TmplTpDO getTmplTpById(@Param("id") Long id); } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java new file mode 100644 index 0000000..164689c --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataService.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import jakarta.validation.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 实例字段值 Service 接口 + * + * @author 后台管理 + */ +public interface TemplateInstanceDataService { + + /** + * 创建实例字段值 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TemplateInstanceDataRespVO createTemplateInstanceData(@Valid TemplateInstanceDataSaveReqVO createReqVO); + + /** + * 更新实例字段值 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateInstanceData(@Valid TemplateInstanceDataSaveReqVO updateReqVO); + + /** + * 删除实例字段值 + * + * @param id 编号 + */ + void deleteTemplateInstanceData(Long id); + + /** + * 批量删除实例字段值 + * + * @param ids 编号 + */ + void deleteTemplateInstanceDataListByIds(List ids); + + /** + * 获得实例字段值 + * + * @param id 编号 + * @return 实例字段值 + */ + TemplateInstanceDataDO getTemplateInstanceData(Long id); + + /** + * 获得实例字段值分页 + * + * @param pageReqVO 分页查询 + * @return 实例字段值分页 + */ + PageResult getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java new file mode 100644 index 0000000..b9dff96 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.base.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_DATA_NOT_EXISTS; + +/** + * 实例字段值 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataService { + + @Resource + private TemplateInstanceDataMapper templateInstanceDataMapper; + + @Override + public TemplateInstanceDataRespVO createTemplateInstanceData(TemplateInstanceDataSaveReqVO createReqVO) { + // 插入 + TemplateInstanceDataDO templateInstanceData = BeanUtils.toBean(createReqVO, TemplateInstanceDataDO.class); + templateInstanceDataMapper.insert(templateInstanceData); + // 返回 + return BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class); + } + + @Override + public void updateTemplateInstanceData(TemplateInstanceDataSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateInstanceDataExists(updateReqVO.getId()); + // 更新 + TemplateInstanceDataDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDataDO.class); + templateInstanceDataMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateInstanceData(Long id) { + // 校验存在 + validateTemplateInstanceDataExists(id); + // 删除 + templateInstanceDataMapper.deleteById(id); + } + + @Override + public void deleteTemplateInstanceDataListByIds(List ids) { + // 校验存在 + validateTemplateInstanceDataExists(ids); + // 删除 + templateInstanceDataMapper.deleteByIds(ids); + } + + private void validateTemplateInstanceDataExists(List ids) { + List list = templateInstanceDataMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TEMPLATE_INSTANCE_DATA_NOT_EXISTS); + } + } + + private void validateTemplateInstanceDataExists(Long id) { + if (templateInstanceDataMapper.selectById(id) == null) { + throw exception(TEMPLATE_INSTANCE_DATA_NOT_EXISTS); + } + } + + @Override + public TemplateInstanceDataDO getTemplateInstanceData(Long id) { + return templateInstanceDataMapper.selectById(id); + } + + @Override + public PageResult getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO) { + return templateInstanceDataMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java new file mode 100644 index 0000000..e20f7ba --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemService.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import java.util.*; + +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import jakarta.validation.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 实例条款值 Service 接口 + * + * @author 后台管理 + */ +public interface TemplateInstanceItemService { + + /** + * 创建实例条款值 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TemplateInstanceItemRespVO createTemplateInstanceItem(@Valid TemplateInstanceItemSaveReqVO createReqVO); + + /** + * 更新实例条款值 + * + * @param updateReqVO 更新信息 + */ + void updateTemplateInstanceItem(@Valid TemplateInstanceItemSaveReqVO updateReqVO); + + /** + * 删除实例条款值 + * + * @param id 编号 + */ + void deleteTemplateInstanceItem(String id); + + /** + * 批量删除实例条款值 + * + * @param ids 编号 + */ + void deleteTemplateInstanceItemListByIds(List ids); + + /** + * 获得实例条款值 + * + * @param id 编号 + * @return 实例条款值 + */ + TemplateInstanceItemDO getTemplateInstanceItem(String id); + + /** + * 获得实例条款值分页 + * + * @param pageReqVO 分页查询 + * @return 实例条款值分页 + */ + PageResult getTemplateInstanceItemPage(TemplateInstanceItemPageReqVO pageReqVO); + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java new file mode 100644 index 0000000..91d2b1e --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; +import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import cn.iocoder.yudao.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.base.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_ITEM_NOT_EXISTS; + +/** + * 实例条款值 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { + + @Resource + private TemplateInstanceItemMapper templateInstanceItemMapper; + + @Override + public TemplateInstanceItemRespVO createTemplateInstanceItem(TemplateInstanceItemSaveReqVO createReqVO) { + // 插入 + TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); + templateInstanceItemMapper.insert(templateInstanceItem); + // 返回 + return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); + } + + @Override + public void updateTemplateInstanceItem(TemplateInstanceItemSaveReqVO updateReqVO) { + // 校验存在 + validateTemplateInstanceItemExists(updateReqVO.getId()); + // 更新 + TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); + templateInstanceItemMapper.updateById(updateObj); + } + + @Override + public void deleteTemplateInstanceItem(String id) { + // 校验存在 + validateTemplateInstanceItemExists(id); + // 删除 + templateInstanceItemMapper.deleteById(id); + } + + @Override + public void deleteTemplateInstanceItemListByIds(List ids) { + // 校验存在 + validateTemplateInstanceItemExists(ids); + // 删除 + templateInstanceItemMapper.deleteByIds(ids); + } + + private void validateTemplateInstanceItemExists(List ids) { + List list = templateInstanceItemMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TEMPLATE_INSTANCE_ITEM_NOT_EXISTS); + } + } + + private void validateTemplateInstanceItemExists(String id) { + if (templateInstanceItemMapper.selectById(id) == null) { + throw exception(TEMPLATE_INSTANCE_ITEM_NOT_EXISTS); + } + } + + @Override + public TemplateInstanceItemDO getTemplateInstanceItem(String id) { + return templateInstanceItemMapper.selectById(id); + } + + @Override + public PageResult getTemplateInstanceItemPage(TemplateInstanceItemPageReqVO pageReqVO) { + return templateInstanceItemMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java index 951353e..7526af5 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplItmServiceImpl.java @@ -23,8 +23,9 @@ import static cn.iocoder.yudao.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_N public class TmplItmServiceImpl extends ServiceImpl implements TmplItmService{ @Override public TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) { + tmplItmSaveReqVO.setId(null); TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class); - this.save(bean); + baseMapper.insert(bean); return BeanUtils.toBean(bean, TmplItmRespVO.class); } @@ -46,7 +47,7 @@ public class TmplItmServiceImpl extends ServiceImpl im } private void validateTmplLtmExists(Long id) { - if (this.getById(id) == null) { + if (baseMapper.selectById(id) == null) { throw exception(TMPL_ITM_NOT_EXISTS); } } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java index 071ad8d..ecd3309 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpFldServiceImpl.java @@ -58,7 +58,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl { PageResult getTmplTpPage(TmplTpPageReqVO pageReqVO); - List> getField(Long id); - List> getClause(Long id); + List getField(Long id); + List getClause(Long id); List buildTree(); void updateStatus(Long id, String status); } diff --git a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java index f71c772..dba563f 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java +++ b/yudao-module-base/yudao-module-base-server/src/main/java/cn/iocoder/yudao/module/base/service/tmpltp/TmplTpServiceImpl.java @@ -2,11 +2,8 @@ package cn.iocoder.yudao.module.base.service.tmpltp; import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpPageReqVO; -import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpRespVO; -import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpSaveReqVO; +import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.*; -import cn.iocoder.yudao.module.base.controller.admin.templtp.vo.TmplTpTreeVO; import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplFldRelDO; import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplItmRelDO; import cn.iocoder.yudao.module.base.dal.dataobject.tmpltp.TmplTpDO; @@ -50,8 +47,11 @@ public class TmplTpServiceImpl extends ServiceImpl imple @Override @Transactional public TmplTpRespVO createTmplTp(TmplTpSaveReqVO createReqVO) { + //置空id + createReqVO.setId(null); // 插入 TmplTpDO tmplTp = BeanUtils.toBean(createReqVO, TmplTpDO.class); + tmplTp.setSts("Y"); baseMapper.insert(tmplTp); // 返回 List tmplFldRelDOS = new ArrayList<>(); @@ -62,7 +62,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplFldRelDO.setTpFldId(String.valueOf(tmplItmId)); tmplFldRelDOS.add(tmplFldRelDO); }); - createReqVO.getTmplTpFldIds().forEach(tmplFldId -> { + createReqVO.getTmplItmIds().forEach(tmplFldId -> { TmplItmRelDO tmplItmRelDO = new TmplItmRelDO(); tmplItmRelDO.setTmplTpId(String.valueOf(tmplTp.getId())); tmplItmRelDO.setItmFldId(String.valueOf(tmplFldId)); @@ -88,9 +88,9 @@ public class TmplTpServiceImpl extends ServiceImpl imple // 校验存在 validateTmplTpExists(ids); //校验能否进行删除 - if (!validateStatusCanDelete(ids)){ - throw exception(TMPL_TP_DEl_ERROR); - } +// if (!validateStatusCanDelete(ids)){ +// throw exception(TMPL_TP_DEl_ERROR); +// } // 删除 baseMapper.deleteByIds(ids); } @@ -111,7 +111,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple } private void validateTmplTpExists(Long id) { - if (this.getById(id) == null) { + if (baseMapper.selectById(id) == null) { throw exception(TMPL_TP_NOT_EXISTS); } } @@ -127,12 +127,12 @@ public class TmplTpServiceImpl extends ServiceImpl imple } @Override - public List> getField(Long id) { + public List getField(Long id) { return baseMapper.getField(id); } @Override - public List> getClause(Long id) { + public List getClause(Long id) { return baseMapper.getClause(id); } @@ -183,9 +183,9 @@ public class TmplTpServiceImpl extends ServiceImpl imple @Override public void updateStatus(Long id, String status) { //验证当前的能否变更为之后的状态 - if (!validateStatusUpdate(id, status)) { - throw exception(TMPL_TP_SATUS_ERROR); - } +// if (!validateStatusUpdate(id, status)) { +// throw exception(TMPL_TP_SATUS_ERROR); +// } baseMapper.update(Wrappers.lambdaUpdate().set(TmplTpDO::getSts, status).eq(TmplTpDO::getId, id)); } @@ -207,13 +207,13 @@ public class TmplTpServiceImpl extends ServiceImpl imple private boolean validateStatusCanDelete(List ids) { Set sts = listByIds(ids).stream().map(TmplTpDO::getSts).collect(Collectors.toSet()); - List result=new ArrayList<>(); + List result = new ArrayList<>(); sts.forEach(status -> { StatusEnum currentStatus = StatusEnum.fromCode(status); boolean transitionAllowed = false; if (currentStatus != null) { transitionAllowed = currentStatus.isTransitionAllowed(status); - }else { + } else { result.add(false); } result.add(transitionAllowed); diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml new file mode 100644 index 0000000..50f2447 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml new file mode 100644 index 0000000..5addfc8 --- /dev/null +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml index 05ee80d..b5b4b19 100644 --- a/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml +++ b/yudao-module-base/yudao-module-base-server/src/main/resources/mapper/tmpltp/TmplTpMapper.xml @@ -9,4 +9,34 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java index 23282d4..acdbcb9 100644 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java +++ b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java @@ -8,4 +8,15 @@ public interface ErrorCodeConstants { ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_001_000_002, "ERP物料数据不存在"); ErrorCode ERP_COMPANY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_COSTCENTER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PRODUCTIVE_VERSION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PURCHASE_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_INTERNAL_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_SALES_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java index 2b86448..20b12f4 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.erp; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; /** * ContractOrder 模块的启动类 diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java new file mode 100644 index 0000000..7fa68eb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java @@ -0,0 +1,124 @@ +package cn.iocoder.yudao.module.erp.common.conf; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.*; +import java.util.stream.Collectors; + +import static dm.jdbc.util.DriverUtil.log; + +@Configuration +public class ErpConfig { + + @Value("${erp.address}") + private String erpAddress; + + @Value("${erp.sapsys}") + private String sapsys; + + @Resource + private RedisTemplate redisTemplate; + + + /** + * 调用ERP接口获取公司数据 + */ + public JSONArray fetchDataFromERP(String funcnr, Map req) { + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/get"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("sapsys", sapsys); + requestBody.put("funcnr", funcnr); // 获取枚举值 + if (req != null) { + requestBody.put("req", req); + } + + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + + // 解析响应结果 + String responseBody = response.getBody(); + if (responseBody == null) { + log.warn("ERP接口返回空响应"); + return null; + } + + JSONObject jsonResponse = JSON.parseObject(responseBody); + if (jsonResponse == null) { + log.warn("ERP接口响应无法解析为JSON"); + return null; + } + + // 正确获取E_DATA数组 + JSONObject dataObject = jsonResponse.getJSONObject("data"); + if (dataObject != null && "S".equals(dataObject.getString("E_FLAG"))) { + return dataObject.getJSONArray("E_DATA"); + } else { + log.warn("ERP接口调用失败或返回错误标志"); + return null; + } + } + + + public Map> numbers(JSONArray dataArray, String key,String dataKey) { + // 使用 Redis 获取缓存数据 + Map> numbers = new HashMap<>(); + List cachedNumbers = (List) redisTemplate.opsForValue().get(key); + if (cachedNumbers == null) { + cachedNumbers = new ArrayList<>(); + } + + // 提取有效的 BUKRS 编号 + List existingNumbers = new ArrayList<>(); + if (dataArray != null) { + existingNumbers = dataArray.stream() + .filter(Objects::nonNull) + .map(dataJson -> ((JSONObject) dataJson).getString(dataKey)) + .filter(Objects::nonNull) + .map(String::trim) // 去除字符串首尾空格 + .collect(Collectors.toList()); + } + + // 找出共同存在的编号 + Set cachedNumberSet = new HashSet<>(cachedNumbers != null ? cachedNumbers : new ArrayList<>()); + List commonNumbers = existingNumbers.stream() + .filter(cachedNumberSet::contains) + .collect(Collectors.toList()); + numbers.put("com", commonNumbers); + + List newNumbers = existingNumbers.stream() + .filter(num -> !cachedNumberSet.contains(num)) + .collect(Collectors.toList()); + + // 合并所有编号 + List allNumbers = new ArrayList<>(cachedNumbers); + allNumbers.addAll(newNumbers); + numbers.put("all", allNumbers); + return numbers; + } + + public void updateRedisCache(String key, List allnumbers) { + // 使用 Redis 更新缓存数据 + redisTemplate.opsForValue().set(key, allnumbers); + } +} diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java new file mode 100644 index 0000000..d8dfa42 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java @@ -0,0 +1,165 @@ +package cn.iocoder.yudao.module.erp.common.conf; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +//import redis.clients.jedis.JedisPoolConfig; + + +/** + * @author wuxz + * @create 2022-06-07 20:54 + */ +@Primary +@Configuration +public class MyRedisConfig { + +/* + @Value("${spring.redis.database}") + private Integer database; + + @Value("${spring.redis.host}") + private String host; + + @Value("${spring.redis.port}") + private Integer port; + + @Value("${spring.redis.password}") + private String password; + + @Value("${spring.redis.jedis.pool.max-idle}") + private Integer max_idle; + + @Value("${spring.redis.jedis.pool.min-idle}") + private Integer min_idle; + + @Value("${spring.redis.jedis.pool.max-active}") + private Integer max_active; + + @Value("${spring.redis.jedis.pool.max-wait}") + private Integer max_wait; +*/ + + + + + + @Bean(value = "MyRedisTemplate") + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + // 通过 Jackson 组件进行序列化 + RedisSerializer serializer = redisSerializer(); + + // key 和 value + // 一般来说, redis-key采用字符串序列化; + // redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(serializer); + + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(serializer); + + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + + @Bean + public RedisSerializer redisSerializer() { + //创建JSON序列化器 + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // objectMapper.enableDefaultTyping()被弃用 + objectMapper.activateDefaultTyping( + LaissezFaireSubTypeValidator.instance, + ObjectMapper.DefaultTyping.NON_FINAL, + JsonTypeInfo.As.WRAPPER_ARRAY); + serializer.setObjectMapper(objectMapper); + return serializer; + } + + + + + +// @Bean +// public JedisPoolConfig jedisPoolConfig() { +// JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); +// //最小空闲连接数 +// jedisPoolConfig.setMinIdle(min_idle); +// jedisPoolConfig.setMaxIdle(max_idle); +// jedisPoolConfig.setMaxTotal(max_active); +// //当池内没有可用的连接时,最大等待时间 +// jedisPoolConfig.setMaxWaitMillis(max_wait); +// //------其他属性根据需要自行添加------------- +// return jedisPoolConfig; +// } +// +// +// /** +// * jedis连接工厂 +// * @param jedisPoolConfig +// * @return +// */ +// @Bean +// public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) { +// //单机版jedis +// RedisStandaloneConfiguration redisStandaloneConfiguration = +// new RedisStandaloneConfiguration(); +// //设置redis服务器的host或者ip地址 +// redisStandaloneConfiguration.setHostName(host); +// //设置默认使用的数据库 +// redisStandaloneConfiguration.setDatabase(database); +// //设置密码 +// redisStandaloneConfiguration.setPassword(password); +// //设置redis的服务的端口号 +// redisStandaloneConfiguration.setPort(port); +// //获得默认的连接池构造器 +// JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jc = +// (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder(); +// //指定jedisPoolConifig +// jc.poolConfig(jedisPoolConfig); +// //通过构造器来构造jedis客户端配置 +// JedisClientConfiguration jedisClientConfiguration = jc.build(); +// return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration); +// } +// +// +// @Bean +// @ConditionalOnMissingBean(name = {"redisTemplate"}) +// public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){ +// RedisTemplate redisTemplate = new RedisTemplate<>(); +// redisTemplate.setKeySerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); +// redisTemplate.setConnectionFactory(jedisConnectionFactory); +// return redisTemplate; +// } + + + /** + * 序列化乱码问题解决 + */ +// @Bean +// public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){ +// RedisTemplate redisTemplate = new RedisTemplate<>(); +// redisTemplate.setKeySerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); +// redisTemplate.setConnectionFactory(jedisConnectionFactory); +// return redisTemplate; +// } + + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java index c369956..2023e46 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java @@ -13,32 +13,60 @@ public class OftenEnum { //接口编号枚举 public enum FuncnrEnum { - 公司代码("001"), - 工厂信息("002"), - 客商信息("003"), - 成本中心("004"), - 内部订单("005"), - 库位信息("006"), - 采购组织("007"), - 销售组织("008"), - 合同信息("009"), - 资产卡片("010"), - 库存信息("011"), - 辅组编码("012"), - 生产订单("013"), - BOM清单("014"), - 工艺路线("015"), - 生产版本("016"), - 生产投料("017"), - 生产订单明细("018"), - 库存明细("019"), - 发票状态("020"), - 物料数据("021"); + 公司代码("001", "BUKRS", ""), + 工厂信息("002", "", ""), + 客商信息("003", "PARTNER", "DATUM"), + 成本中心("004", "", ""), + 内部订单("005", "", ""), + 库位信息("006", "", ""), + 采购组织("007", "", ""), + 销售组织("008", "", ""), + 合同信息("009", "", ""), + 资产卡片("010", "", ""), + 库存信息("011", "", ""), + 辅组编码("012", "", ""), + 生产订单("013", "", ""), + BOM清单("014", "", ""), + 工艺路线("015", "", ""), + 生产版本("016", "", ""), + 生产投料("017", "", ""), + 生产订单明细("018", "", ""), + 库存明细("019", "", ""), + 发票状态("020", "", ""), + 物料数据("021", "", "ERSDA"); - public String funcnr = null; + private final String funcnr; + private final String datakey; + private final String datekey; - FuncnrEnum(String funcnr) { + FuncnrEnum(String funcnr, String datakey,String datekey) { this.funcnr = funcnr; + this.datakey = datakey; + this.datekey = datekey; + } + + public String getFuncnr() { + return funcnr; + } + + public String getDatakey() { + return datakey; + } + + public String getDatekey() { + return datekey; + } + } + + //接口编号枚举 + public enum ModeTypeEnum { + 供应商("K"), + 客户("D"); + + public String modetype = null; + + ModeTypeEnum(String modetype) { + this.modetype = modetype; } } } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticsTask.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java similarity index 96% rename from yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticsTask.java rename to yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java index 12d62a9..ed38050 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticsTask.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java @@ -15,7 +15,7 @@ import org.springframework.transaction.annotation.Transactional; **/ @Configuration @EnableScheduling -public class statisticsTask { +public class statisticstask { @Resource private ErpCompanyService erpCompanyService; diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java new file mode 100644 index 0000000..610e2c5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料清单(BOM)") +@RestController +@RequestMapping("/sply/erp-bom") +@Validated +public class ErpBomController { + + + @Resource + private ErpBomService erpBomService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:create')") + public CommonResult createErpBom(@Valid @RequestBody ErpBomSaveReqVO createReqVO) { + return success(erpBomService.createErpBom(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:update')") + public CommonResult updateErpBom(@Valid @RequestBody ErpBomSaveReqVO updateReqVO) { + erpBomService.updateErpBom(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBom(@RequestParam("id") Long id) { + erpBomService.deleteErpBom(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBomList(@RequestBody BatchDeleteReqVO req) { + erpBomService.deleteErpBomListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult getErpBom(@RequestParam("id") Long id) { + ErpBomDO erpBom = erpBomService.getErpBom(id); + return success(BeanUtils.toBean(erpBom, ErpBomRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult> getErpBomPage(@Valid ErpBomPageReqVO pageReqVO) { + PageResult pageResult = erpBomService.getErpBomPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM) Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomExcel(@Valid ErpBomPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomService.getErpBomPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM).xls", "数据", ErpBomRespVO.class, + BeanUtils.toBean(list, ErpBomRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java new file mode 100644 index 0000000..1e6768e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料清单(BOM)明细") +@RestController +@RequestMapping("/sply/erp-bom-detail") +@Validated +public class ErpBomDetailController { + + + @Resource + private ErpBomDetailService erpBomDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:create')") + public CommonResult createErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO createReqVO) { + return success(erpBomDetailService.createErpBomDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:update')") + public CommonResult updateErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO updateReqVO) { + erpBomDetailService.updateErpBomDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetail(@RequestParam("id") Long id) { + erpBomDetailService.deleteErpBomDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetailList(@RequestBody BatchDeleteReqVO req) { + erpBomDetailService.deleteErpBomDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult getErpBomDetail(@RequestParam("id") Long id) { + ErpBomDetailDO erpBomDetail = erpBomDetailService.getErpBomDetail(id); + return success(BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult> getErpBomDetailPage(@Valid ErpBomDetailPageReqVO pageReqVO) { + PageResult pageResult = erpBomDetailService.getErpBomDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM)明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomDetailExcel(@Valid ErpBomDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomDetailService.getErpBomDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM)明细.xls", "数据", ErpBomDetailRespVO.class, + BeanUtils.toBean(list, ErpBomDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java index 26f8584..07474b0 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java @@ -1,39 +1,36 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; import cn.iocoder.yudao.module.erp.service.erp.ErpCompanyService; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; import java.io.IOException; +import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - @Tag(name = "管理后台 - ERP公司") @RestController -@RequestMapping("/admin/erp/company") +@RequestMapping("/sply/erp-company") @Validated public class ErpCompanyController { @@ -104,10 +101,10 @@ public class ErpCompanyController { BeanUtils.toBean(list, ErpCompanyRespVO.class)); } - @PostMapping("/callErpRfcInterface") + @PostMapping("/getErpCompanyTask") @Operation(summary = "定时获得erp更新公司") @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") - public void callErpRfcInterface() { + public void getErpCompanyTask() { erpCompanyService.callErpRfcInterface(); } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java new file mode 100644 index 0000000..45c270e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCostcenterService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP成本中心") +@RestController +@RequestMapping("/sply/erp-costcenter") +@Validated +public class ErpCostcenterController { + + + @Resource + private ErpCostcenterService erpCostcenterService; + + @PostMapping("/create") + @Operation(summary = "创建ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:create')") + public CommonResult createErpCostcenter(@Valid @RequestBody ErpCostcenterSaveReqVO createReqVO) { + return success(erpCostcenterService.createErpCostcenter(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:update')") + public CommonResult updateErpCostcenter(@Valid @RequestBody ErpCostcenterSaveReqVO updateReqVO) { + erpCostcenterService.updateErpCostcenter(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP成本中心") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:delete')") + public CommonResult deleteErpCostcenter(@RequestParam("id") Long id) { + erpCostcenterService.deleteErpCostcenter(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:delete')") + public CommonResult deleteErpCostcenterList(@RequestBody BatchDeleteReqVO req) { + erpCostcenterService.deleteErpCostcenterListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP成本中心") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public CommonResult getErpCostcenter(@RequestParam("id") Long id) { + ErpCostcenterDO erpCostcenter = erpCostcenterService.getErpCostcenter(id); + return success(BeanUtils.toBean(erpCostcenter, ErpCostcenterRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP成本中心分页") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public CommonResult> getErpCostcenterPage(@Valid ErpCostcenterPageReqVO pageReqVO) { + PageResult pageResult = erpCostcenterService.getErpCostcenterPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpCostcenterRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP成本中心 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpCostcenterExcel(@Valid ErpCostcenterPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpCostcenterService.getErpCostcenterPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP成本中心.xls", "数据", ErpCostcenterRespVO.class, + BeanUtils.toBean(list, ErpCostcenterRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java index c3e41ac..5dde0d4 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java @@ -1,39 +1,36 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.service.erp.ErpCustomerService; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCustomerService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; import java.io.IOException; import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - @Tag(name = "管理后台 - ERP客商信息") @RestController -@RequestMapping("/erp/customer") +@RequestMapping("/sply/erp-customer") @Validated public class ErpCustomerController { @@ -104,4 +101,18 @@ public class ErpCustomerController { BeanUtils.toBean(list, ErpCustomerRespVO.class)); } + @PostMapping("/getErpCustomerTask") + @Operation(summary = "定时获得erp更新客商主数据") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public void getErpCustomerTask() { + erpCustomerService.callErpRfcInterface(); + } + + @PostMapping("/initialize") + @Operation(summary = "把数据库数据number搞到redis") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public void initialize() { + erpCustomerService.initialize(); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java new file mode 100644 index 0000000..3194879 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpFactoryService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工厂") +@RestController +@RequestMapping("/sply/erp-factory") +@Validated +public class ErpFactoryController { + + + @Resource + private ErpFactoryService erpFactoryService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:create')") + public CommonResult createErpFactory(@Valid @RequestBody ErpFactorySaveReqVO createReqVO) { + return success(erpFactoryService.createErpFactory(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:update')") + public CommonResult updateErpFactory(@Valid @RequestBody ErpFactorySaveReqVO updateReqVO) { + erpFactoryService.updateErpFactory(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工厂") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')") + public CommonResult deleteErpFactory(@RequestParam("id") Long id) { + erpFactoryService.deleteErpFactory(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')") + public CommonResult deleteErpFactoryList(@RequestBody BatchDeleteReqVO req) { + erpFactoryService.deleteErpFactoryListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工厂") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:query')") + public CommonResult getErpFactory(@RequestParam("id") Long id) { + ErpFactoryDO erpFactory = erpFactoryService.getErpFactory(id); + return success(BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工厂分页") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:query')") + public CommonResult> getErpFactoryPage(@Valid ErpFactoryPageReqVO pageReqVO) { + PageResult pageResult = erpFactoryService.getErpFactoryPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工厂 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpFactoryExcel(@Valid ErpFactoryPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpFactoryService.getErpFactoryPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工厂.xls", "数据", ErpFactoryRespVO.class, + BeanUtils.toBean(list, ErpFactoryRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java new file mode 100644 index 0000000..b77e62e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpInternalOrderController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpInternalOrderService; + +@Tag(name = "管理后台 - ERP内部订单") +@RestController +@RequestMapping("/sply/erp-internal-order") +@Validated +public class ErpInternalOrderController { + + + @Resource + private ErpInternalOrderService erpInternalOrderService; + + @PostMapping("/create") + @Operation(summary = "创建ERP内部订单") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:create')") + public CommonResult createErpInternalOrder(@Valid @RequestBody ErpInternalOrderSaveReqVO createReqVO) { + return success(erpInternalOrderService.createErpInternalOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP内部订单") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:update')") + public CommonResult updateErpInternalOrder(@Valid @RequestBody ErpInternalOrderSaveReqVO updateReqVO) { + erpInternalOrderService.updateErpInternalOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP内部订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:delete')") + public CommonResult deleteErpInternalOrder(@RequestParam("id") Long id) { + erpInternalOrderService.deleteErpInternalOrder(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP内部订单") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:delete')") + public CommonResult deleteErpInternalOrderList(@RequestBody BatchDeleteReqVO req) { + erpInternalOrderService.deleteErpInternalOrderListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP内部订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:query')") + public CommonResult getErpInternalOrder(@RequestParam("id") Long id) { + ErpInternalOrderDO erpInternalOrder = erpInternalOrderService.getErpInternalOrder(id); + return success(BeanUtils.toBean(erpInternalOrder, ErpInternalOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP内部订单分页") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:query')") + public CommonResult> getErpInternalOrderPage(@Valid ErpInternalOrderPageReqVO pageReqVO) { + PageResult pageResult = erpInternalOrderService.getErpInternalOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpInternalOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP内部订单 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-internal-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpInternalOrderExcel(@Valid ErpInternalOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpInternalOrderService.getErpInternalOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP内部订单.xls", "数据", ErpInternalOrderRespVO.class, + BeanUtils.toBean(list, ErpInternalOrderRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java index 33ec30e..2a27116 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java @@ -1,39 +1,36 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; import cn.iocoder.yudao.module.erp.service.erp.ErpMaterialService; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; import java.io.IOException; +import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - @Tag(name = "管理后台 - ERP物料信息") @RestController -@RequestMapping("/erp/material") +@RequestMapping("/sply/erp-material") @Validated public class ErpMaterialController { @@ -104,4 +101,18 @@ public class ErpMaterialController { BeanUtils.toBean(list, ErpMaterialRespVO.class)); } + @PostMapping("/getErpMaterialTask") + @Operation(summary = "定时获得erp更新公司") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public void getErpMaterialTask() { + erpMaterialService.callErpRfcInterface(); + } + + @PostMapping("/initialize") + @Operation(summary = "把数据库数据number搞到redis") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public void initialize() { + erpMaterialService.initialize(); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java new file mode 100644 index 0000000..92831bd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工艺路线") +@RestController +@RequestMapping("/sply/erp-process") +@Validated +public class ErpProcessController { + + + @Resource + private ErpProcessService erpProcessService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:create')") + public CommonResult createErpProcess(@Valid @RequestBody ErpProcessSaveReqVO createReqVO) { + return success(erpProcessService.createErpProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:update')") + public CommonResult updateErpProcess(@Valid @RequestBody ErpProcessSaveReqVO updateReqVO) { + erpProcessService.updateErpProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcess(@RequestParam("id") Long id) { + erpProcessService.deleteErpProcess(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcessList(@RequestBody BatchDeleteReqVO req) { + erpProcessService.deleteErpProcessListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult getErpProcess(@RequestParam("id") Long id) { + ErpProcessDO erpProcess = erpProcessService.getErpProcess(id); + return success(BeanUtils.toBean(erpProcess, ErpProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult> getErpProcessPage(@Valid ErpProcessPageReqVO pageReqVO) { + PageResult pageResult = erpProcessService.getErpProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessExcel(@Valid ErpProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessService.getErpProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线.xls", "数据", ErpProcessRespVO.class, + BeanUtils.toBean(list, ErpProcessRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java new file mode 100644 index 0000000..a7358fc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工艺路线明细") +@RestController +@RequestMapping("/sply/erp-process-detail") +@Validated +public class ErpProcessDetailController { + + + @Resource + private ErpProcessDetailService erpProcessDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:create')") + public CommonResult createErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO createReqVO) { + return success(erpProcessDetailService.createErpProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:update')") + public CommonResult updateErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO updateReqVO) { + erpProcessDetailService.updateErpProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetail(@RequestParam("id") Long id) { + erpProcessDetailService.deleteErpProcessDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetailList(@RequestBody BatchDeleteReqVO req) { + erpProcessDetailService.deleteErpProcessDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult getErpProcessDetail(@RequestParam("id") Long id) { + ErpProcessDetailDO erpProcessDetail = erpProcessDetailService.getErpProcessDetail(id); + return success(BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult> getErpProcessDetailPage(@Valid ErpProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = erpProcessDetailService.getErpProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessDetailExcel(@Valid ErpProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessDetailService.getErpProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线明细.xls", "数据", ErpProcessDetailRespVO.class, + BeanUtils.toBean(list, ErpProcessDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java new file mode 100644 index 0000000..83e13a2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProductiveVersionService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP生产版本") +@RestController +@RequestMapping("/sply/erp-productive-version") +@Validated +public class ErpProductiveVersionController { + + + @Resource + private ErpProductiveVersionService erpProductiveVersionService; + + @PostMapping("/create") + @Operation(summary = "创建ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:create')") + public CommonResult createErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO createReqVO) { + return success(erpProductiveVersionService.createErpProductiveVersion(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:update')") + public CommonResult updateErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO updateReqVO) { + erpProductiveVersionService.updateErpProductiveVersion(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP生产版本") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:delete')") + public CommonResult deleteErpProductiveVersion(@RequestParam("id") Long id) { + erpProductiveVersionService.deleteErpProductiveVersion(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:delete')") + public CommonResult deleteErpProductiveVersionList(@RequestBody BatchDeleteReqVO req) { + erpProductiveVersionService.deleteErpProductiveVersionListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP生产版本") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:query')") + public CommonResult getErpProductiveVersion(@RequestParam("id") Long id) { + ErpProductiveVersionDO erpProductiveVersion = erpProductiveVersionService.getErpProductiveVersion(id); + return success(BeanUtils.toBean(erpProductiveVersion, ErpProductiveVersionRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP生产版本分页") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:query')") + public CommonResult> getErpProductiveVersionPage(@Valid ErpProductiveVersionPageReqVO pageReqVO) { + PageResult pageResult = erpProductiveVersionService.getErpProductiveVersionPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProductiveVersionRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP生产版本 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProductiveVersionExcel(@Valid ErpProductiveVersionPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProductiveVersionService.getErpProductiveVersionPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP生产版本.xls", "数据", ErpProductiveVersionRespVO.class, + BeanUtils.toBean(list, ErpProductiveVersionRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java new file mode 100644 index 0000000..9134712 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpPurchaseOrganizationService; + +@Tag(name = "管理后台 - ERP采购组织") +@RestController +@RequestMapping("/sply/erp-purchase-organization") +@Validated +public class ErpPurchaseOrganizationController { + + + @Resource + private ErpPurchaseOrganizationService erpPurchaseOrganizationService; + + @PostMapping("/create") + @Operation(summary = "创建ERP采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:create')") + public CommonResult createErpPurchaseOrganization(@Valid @RequestBody ErpPurchaseOrganizationSaveReqVO createReqVO) { + return success(erpPurchaseOrganizationService.createErpPurchaseOrganization(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:update')") + public CommonResult updateErpPurchaseOrganization(@Valid @RequestBody ErpPurchaseOrganizationSaveReqVO updateReqVO) { + erpPurchaseOrganizationService.updateErpPurchaseOrganization(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP采购组织") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:delete')") + public CommonResult deleteErpPurchaseOrganization(@RequestParam("id") Long id) { + erpPurchaseOrganizationService.deleteErpPurchaseOrganization(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP采购组织") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:delete')") + public CommonResult deleteErpPurchaseOrganizationList(@RequestBody BatchDeleteReqVO req) { + erpPurchaseOrganizationService.deleteErpPurchaseOrganizationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP采购组织") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:query')") + public CommonResult getErpPurchaseOrganization(@RequestParam("id") Long id) { + ErpPurchaseOrganizationDO erpPurchaseOrganization = erpPurchaseOrganizationService.getErpPurchaseOrganization(id); + return success(BeanUtils.toBean(erpPurchaseOrganization, ErpPurchaseOrganizationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP采购组织分页") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:query')") + public CommonResult> getErpPurchaseOrganizationPage(@Valid ErpPurchaseOrganizationPageReqVO pageReqVO) { + PageResult pageResult = erpPurchaseOrganizationService.getErpPurchaseOrganizationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpPurchaseOrganizationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP采购组织 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpPurchaseOrganizationExcel(@Valid ErpPurchaseOrganizationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpPurchaseOrganizationService.getErpPurchaseOrganizationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP采购组织.xls", "数据", ErpPurchaseOrganizationRespVO.class, + BeanUtils.toBean(list, ErpPurchaseOrganizationRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java new file mode 100644 index 0000000..145d10b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpSalesOrganizationController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpSalesOrganizationService; + +@Tag(name = "管理后台 - ERP销售组织") +@RestController +@RequestMapping("/sply/erp-sales-organization") +@Validated +public class ErpSalesOrganizationController { + + + @Resource + private ErpSalesOrganizationService erpSalesOrganizationService; + + @PostMapping("/create") + @Operation(summary = "创建ERP销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:create')") + public CommonResult createErpSalesOrganization(@Valid @RequestBody ErpSalesOrganizationSaveReqVO createReqVO) { + return success(erpSalesOrganizationService.createErpSalesOrganization(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:update')") + public CommonResult updateErpSalesOrganization(@Valid @RequestBody ErpSalesOrganizationSaveReqVO updateReqVO) { + erpSalesOrganizationService.updateErpSalesOrganization(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP销售组织") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:delete')") + public CommonResult deleteErpSalesOrganization(@RequestParam("id") Long id) { + erpSalesOrganizationService.deleteErpSalesOrganization(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP销售组织") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:delete')") + public CommonResult deleteErpSalesOrganizationList(@RequestBody BatchDeleteReqVO req) { + erpSalesOrganizationService.deleteErpSalesOrganizationListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP销售组织") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:query')") + public CommonResult getErpSalesOrganization(@RequestParam("id") Long id) { + ErpSalesOrganizationDO erpSalesOrganization = erpSalesOrganizationService.getErpSalesOrganization(id); + return success(BeanUtils.toBean(erpSalesOrganization, ErpSalesOrganizationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP销售组织分页") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:query')") + public CommonResult> getErpSalesOrganizationPage(@Valid ErpSalesOrganizationPageReqVO pageReqVO) { + PageResult pageResult = erpSalesOrganizationService.getErpSalesOrganizationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpSalesOrganizationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP销售组织 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpSalesOrganizationExcel(@Valid ErpSalesOrganizationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpSalesOrganizationService.getErpSalesOrganizationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP销售组织.xls", "数据", ErpSalesOrganizationRespVO.class, + BeanUtils.toBean(list, ErpSalesOrganizationRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java new file mode 100644 index 0000000..96fcf83 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpWarehouseController.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpWarehouseService; + +@Tag(name = "管理后台 - ERP库位") +@RestController +@RequestMapping("/sply/erp-warehouse") +@Validated +public class ErpWarehouseController { + + + @Resource + private ErpWarehouseService erpWarehouseService; + + @PostMapping("/create") + @Operation(summary = "创建ERP库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:create')") + public CommonResult createErpWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO createReqVO) { + return success(erpWarehouseService.createErpWarehouse(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:update')") + public CommonResult updateErpWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO updateReqVO) { + erpWarehouseService.updateErpWarehouse(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP库位") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:delete')") + public CommonResult deleteErpWarehouse(@RequestParam("id") Long id) { + erpWarehouseService.deleteErpWarehouse(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP库位") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:delete')") + public CommonResult deleteErpWarehouseList(@RequestBody BatchDeleteReqVO req) { + erpWarehouseService.deleteErpWarehouseListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP库位") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:query')") + public CommonResult getErpWarehouse(@RequestParam("id") Long id) { + ErpWarehouseDO erpWarehouse = erpWarehouseService.getErpWarehouse(id); + return success(BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP库位分页") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:query')") + public CommonResult> getErpWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) { + PageResult pageResult = erpWarehouseService.getErpWarehousePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP库位 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpWarehouseExcel(@Valid ErpWarehousePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpWarehouseService.getErpWarehousePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP库位.xls", "数据", ErpWarehouseRespVO.class, + BeanUtils.toBean(list, ErpWarehouseRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java new file mode 100644 index 0000000..04f836f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细分页 Request VO") +@Data +public class ErpBomDetailPageReqVO extends PageParam { + + @Schema(description = "BOM主键", example = "24876") + private String bomId; + + @Schema(description = "ERP物料清单主键", example = "14731") + private String erpBomId; + + @Schema(description = "子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别") + private String category; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + + @Schema(description = "物料标识", example = "2") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java new file mode 100644 index 0000000..976de61 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @ExcelProperty("BOM主键") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @ExcelProperty("ERP物料清单主键") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项类别") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("物料标识") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java new file mode 100644 index 0000000..5c834f7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细新增/修改 Request VO") +@Data +public class ErpBomDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @NotEmpty(message = "BOM主键不能为空") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @NotEmpty(message = "ERP物料清单主键不能为空") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项物料编码不能为空") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子项物料描述不能为空") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项类别不能为空") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "物料标识不能为空") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java new file mode 100644 index 0000000..f969188 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)分页 Request VO") +@Data +public class ErpBomPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java new file mode 100644 index 0000000..d3cc055 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM) Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("可选BOM") + private String useItem; + + @Schema(description = "物料描述") + @ExcelProperty("物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java new file mode 100644 index 0000000..6a2ffcc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)新增/修改 Request VO") +@Data +public class ErpBomSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "顶层物料编码不能为空") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "可选BOM不能为空") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java index 07c08e8..54db844 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; @Schema(description = "管理后台 - ERP公司分页 Request VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java index b53ab3b..8194615 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java @@ -1,9 +1,9 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import com.alibaba.excel.annotation.*; +import lombok.Data; @Schema(description = "管理后台 - ERP公司 Response VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java index 06fdbbf..6c63638 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; @Schema(description = "管理后台 - ERP公司新增/修改 Request VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java new file mode 100644 index 0000000..f699a2e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +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 = "管理后台 - ERP成本中心分页 Request VO") +@Data +public class ErpCostcenterPageReqVO extends PageParam { + + @Schema(description = "成本中心编码") + private String number; + + @Schema(description = "成本中心描述", example = "赵六") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用") + private String isUse; + + @Schema(description = "功能范围") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + private String scopeName; + + @Schema(description = "起始日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startDate; + + @Schema(description = "截止日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java new file mode 100644 index 0000000..4ddac56 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP成本中心 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpCostcenterRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23318") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("成本中心编码") + private String number; + + @Schema(description = "成本中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("成本中心描述") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工区必填;使用这个基础数据是,如果为X时必须和工区使用") + private String isUse; + + @Schema(description = "功能范围", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("功能范围") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + @ExcelProperty("功能范围描述") + private String scopeName; + + @Schema(description = "起始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("起始日期") + private LocalDateTime startDate; + + @Schema(description = "截止日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("截止日期") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java new file mode 100644 index 0000000..005eed4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP成本中心新增/修改 Request VO") +@Data +public class ErpCostcenterSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23318") + private Long id; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "成本中心编码不能为空") + private String number; + + @Schema(description = "成本中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "成本中心描述不能为空") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工区必填;使用这个基础数据是,如果为X时必须和工区使用不能为空") + private String isUse; + + @Schema(description = "功能范围", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "功能范围不能为空") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + private String scopeName; + + @Schema(description = "起始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "起始日期不能为空") + private LocalDateTime startDate; + + @Schema(description = "截止日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止日期不能为空") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java index 8a32458..f5b4e38 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java @@ -1,9 +1,10 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; -import lombok.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; 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; @@ -41,7 +42,4 @@ public class ErpCustomerPageReqVO extends PageParam { @Schema(description = "冻结标识") private String isProvisional; - @Schema(description = "类型", example = "2") - private String type; - } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java index 5878fa1..1f68cc4 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.Data; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - ERP客商主数据 Response VO") @Data @@ -51,8 +52,4 @@ public class ErpCustomerRespVO { @ExcelProperty("冻结标识") private String isProvisional; - @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("类型") - private String type; - } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java index cddb3c1..dd593e7 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java @@ -1,8 +1,9 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import jakarta.validation.constraints.*; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; import java.time.LocalDateTime; @@ -45,8 +46,4 @@ public class ErpCustomerSaveReqVO { @Schema(description = "冻结标识") private String isProvisional; - @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotEmpty(message = "类型不能为空") - private String type; - } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java new file mode 100644 index 0000000..fd4dda5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂分页 Request VO") +@Data +public class ErpFactoryPageReqVO extends PageParam { + + @Schema(description = "工厂名称", example = "赵六") + private String name; + + @Schema(description = "工厂编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java new file mode 100644 index 0000000..e8208c0 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpFactoryRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9235") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("工厂名称") + private String name; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java new file mode 100644 index 0000000..b2de568 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂新增/修改 Request VO") +@Data +public class ErpFactorySaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9235") + private Long id; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "工厂名称不能为空") + private String name; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂编码不能为空") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java new file mode 100644 index 0000000..77e572d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderPageReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - ERP内部订单分页 Request VO") +@Data +public class ErpInternalOrderPageReqVO extends PageParam { + + @Schema(description = "内部订单编号") + private String number; + + @Schema(description = "内部订单描述", example = "王五") + private String name; + + @Schema(description = "内部订单类型", example = "2") + private String type; + + @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用") + private String isOff; + + @Schema(description = "是否已完成") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java new file mode 100644 index 0000000..44466ac --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderRespVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP内部订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpInternalOrderRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19327") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "内部订单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("内部订单编号") + private String number; + + @Schema(description = "内部订单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("内部订单描述") + private String name; + + @Schema(description = "内部订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("内部订单类型") + private String type; + + @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否已关闭;使用这个基础数据是,如果为X时必须和工区使用") + private String isOff; + + @Schema(description = "是否已完成") + @ExcelProperty("是否已完成") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java new file mode 100644 index 0000000..0c731fd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpInternalOrderSaveReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - ERP内部订单新增/修改 Request VO") +@Data +public class ErpInternalOrderSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19327") + private Long id; + + @Schema(description = "内部订单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "内部订单编号不能为空") + private String number; + + @Schema(description = "内部订单描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "内部订单描述不能为空") + private String name; + + @Schema(description = "内部订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "内部订单类型不能为空") + private String type; + + @Schema(description = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否已关闭;使用这个基础数据是,如果为X时必须和工区使用不能为空") + private String isOff; + + @Schema(description = "是否已完成") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java index fa5b0e1..3e6bf9e 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; 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; diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java index 46b5597..459108a 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; +import lombok.Data; + import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - ERP物料数据 Response VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java index 0939bbc..705608f 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + import java.time.LocalDateTime; @Schema(description = "管理后台 - ERP物料数据新增/修改 Request VO") diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java new file mode 100644 index 0000000..aaf2a03 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细分页 Request VO") +@Data +public class ErpProcessDetailPageReqVO extends PageParam { + + @Schema(description = "ERP工艺路线主键", example = "30589") + private String processId; + + @Schema(description = "工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", example = "李四") + private String processingName; + + @Schema(description = "作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", example = "张三") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java new file mode 100644 index 0000000..e98e30f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @ExcelProperty("ERP工艺路线主键") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("工序描述") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + @ExcelProperty("工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("工作中心描述") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java new file mode 100644 index 0000000..73ae23c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细新增/修改 Request VO") +@Data +public class ErpProcessDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @NotEmpty(message = "ERP工艺路线主键不能为空") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工序编码不能为空") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "工序描述不能为空") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "作业的计量单位不能为空") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "工作中心描述不能为空") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java new file mode 100644 index 0000000..886e57d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线分页 Request VO") +@Data +public class ErpProcessPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "27504") + private Long groupCount; + + @Schema(description = "工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", example = "2") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java new file mode 100644 index 0000000..55854f9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + @ExcelProperty("物料描述") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @ExcelProperty("组计数器") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位") + private String uom; + + @Schema(description = "用途") + @ExcelProperty("用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java new file mode 100644 index 0000000..7145858 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线新增/修改 Request VO") +@Data +public class ErpProcessSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线描述不能为空") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java new file mode 100644 index 0000000..548a1eb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本分页 Request VO") +@Data +public class ErpProductiveVersionPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "生产版本编码") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "15610") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java new file mode 100644 index 0000000..17d802c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProductiveVersionRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27745") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "生产版本编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("生产版本编码") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + @ExcelProperty("生产版本描述") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + @ExcelProperty("备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "15610") + @ExcelProperty("组计数器") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java new file mode 100644 index 0000000..5360149 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本新增/修改 Request VO") +@Data +public class ErpProductiveVersionSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27745") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "生产版本编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "生产版本编码不能为空") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "15610") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java new file mode 100644 index 0000000..599464f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationPageReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - ERP采购组织分页 Request VO") +@Data +public class ErpPurchaseOrganizationPageReqVO extends PageParam { + + @Schema(description = "采购组织编号") + private String number; + + @Schema(description = "采购组织描述", example = "赵六") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java new file mode 100644 index 0000000..6ebe58d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP采购组织 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpPurchaseOrganizationRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17344") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "采购组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("采购组织编号") + private String number; + + @Schema(description = "采购组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("采购组织描述") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java new file mode 100644 index 0000000..d4cd99b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpPurchaseOrganizationSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - ERP采购组织新增/修改 Request VO") +@Data +public class ErpPurchaseOrganizationSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17344") + private Long id; + + @Schema(description = "采购组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织编号不能为空") + private String number; + + @Schema(description = "采购组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "采购组织描述不能为空") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;存入ERP公司编码不能为空") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java new file mode 100644 index 0000000..a692c56 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationPageReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - ERP销售组织分页 Request VO") +@Data +public class ErpSalesOrganizationPageReqVO extends PageParam { + + @Schema(description = "销售组织编号") + private String number; + + @Schema(description = "销售组织描述", example = "李四") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java new file mode 100644 index 0000000..2836764 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP销售组织 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpSalesOrganizationRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22623") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "销售组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("销售组织编号") + private String number; + + @Schema(description = "销售组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("销售组织描述") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;存入ERP公司编码") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java new file mode 100644 index 0000000..dd5cb41 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpSalesOrganizationSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - ERP销售组织新增/修改 Request VO") +@Data +public class ErpSalesOrganizationSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22623") + private Long id; + + @Schema(description = "销售组织编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "销售组织编号不能为空") + private String number; + + @Schema(description = "销售组织描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "销售组织描述不能为空") + private String name; + + @Schema(description = "公司编码;存入ERP公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;存入ERP公司编码不能为空") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java new file mode 100644 index 0000000..ea58a76 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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 = "管理后台 - ERP库位分页 Request VO") +@Data +public class ErpWarehousePageReqVO extends PageParam { + + @Schema(description = "工厂编码;将查询参数存入") + private String factoryNumber; + + @Schema(description = "库位描述", example = "张三") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "库位编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java new file mode 100644 index 0000000..320709f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP库位 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpWarehouseRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16847") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码;将查询参数存入") + @ExcelProperty("工厂编码;将查询参数存入") + private String factoryNumber; + + @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("库位描述") + private String name; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "库位编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("库位编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java new file mode 100644 index 0000000..339fa38 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - ERP库位新增/修改 Request VO") +@Data +public class ErpWarehouseSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "16847") + private Long id; + + @Schema(description = "工厂编码;将查询参数存入") + private String factoryNumber; + + @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "库位描述不能为空") + private String name; + + @Schema(description = "库位编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "库位编码不能为空") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java new file mode 100644 index 0000000..af5ebba --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP物料清单(BOM) DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm") +@KeySequence("sply_erp_bm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 顶层物料编码 + */ + @TableField("UP_MTRL") + private String upMaterial; + /** + * 可选BOM + */ + @TableField("USE_ITM") + private String useItem; + /** + * 物料描述 + */ + @TableField("MTRL_DSP") + private String materialDescription; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java new file mode 100644 index 0000000..503cf37 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP物料清单(BOM)明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm_dtl") +@KeySequence("sply_erp_bm_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDetailDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * BOM主键 + */ + @TableField("BM_ID") + private String bomId; + /** + * ERP物料清单主键 + */ + @TableField("ERP_BM_ID") + private String erpBomId; + /** + * 子项物料编码 + */ + @TableField("CHD_MTRL_NUM") + private String childMaterialNumber; + /** + * 子项物料描述 + */ + @TableField("CHD_MTRL_DSP") + private BigDecimal childMaterialDescription; + /** + * 子项类别 + */ + @TableField("CTGR") + private String category; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + /** + * 物料标识 + */ + @TableField("IDE_TP") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java index 779d839..993efd7 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java @@ -1,9 +1,7 @@ package cn.iocoder.yudao.module.erp.dal.dataobject.erp; -import lombok.*; -import java.util.*; import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; /** * ERP公司 DO * @@ -12,7 +10,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("sply_erp_cpn") @KeySequence("sply_erp_cpn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @ToString(callSuper = true) @Builder @NoArgsConstructor @@ -20,9 +19,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpCompanyDO extends BaseDO { - - +//public class ErpCompanyDO extends BaseDO { +public class ErpCompanyDO{ /** * 主键 @@ -45,4 +43,7 @@ public class ErpCompanyDO extends BaseDO { @TableField("CUR") private String currency; + @TableField(exist = false) + private Integer TENANT_ID; + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java new file mode 100644 index 0000000..6826b48 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; +/** +* ERP成本中心 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_cctr") +@KeySequence("sply_erp_cctr_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpCostcenterDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 成本中心编码 + */ + @TableField("NUM") + private String number; + /** + * 成本中心描述 + */ + @TableField("NAME") + private String name; + /** + * 工区必填;使用这个基础数据是,如果为X时必须和工区使用 + */ + @TableField("IS_USE") + private String isUse; + /** + * 功能范围 + */ + @TableField("SCO_NUM") + private String scopeNumber; + /** + * 功能范围描述 + */ + @TableField("SCO_NAME") + private String scopeName; + /** + * 起始日期 + */ + @TableField("STRT_DT") + private LocalDateTime startDate; + /** + * 截止日期 + */ + @TableField("END_DT") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java index 742755e..2423ae2 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java @@ -1,11 +1,9 @@ package cn.iocoder.yudao.module.erp.dal.dataobject.erp; -import lombok.*; -import java.util.*; - import java.time.LocalDateTime; - import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.time.LocalDateTime; /** * ERP客商主数据 DO * @@ -14,7 +12,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("sply_erp_cstm") @KeySequence("sply_erp_cstm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @ToString(callSuper = true) @Builder @NoArgsConstructor @@ -22,7 +21,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpCustomerDO extends BaseDO { +//public class ErpCustomerDO extends BaseDO { +public class ErpCustomerDO{ @@ -76,10 +76,8 @@ public class ErpCustomerDO extends BaseDO { */ @TableField("IS_PRVS") private String isProvisional; - /** - * 类型 - */ - @TableField("TP") - private String type; + + @TableField(exist = false) + private Integer TENANT_ID; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java new file mode 100644 index 0000000..425021b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP工厂 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_fact") +@KeySequence("sply_erp_fact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpFactoryDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂名称 + */ + @TableField("NAME") + private String name; + /** + * 工厂编码 + */ + @TableField("NUM") + private String number; + /** + * 公司编号 + */ + @TableField("CPN_ID") + private Long companyId; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java new file mode 100644 index 0000000..5f90364 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpInternalOrderDO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP内部订单 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_intl_ord") +@KeySequence("sply_erp_intl_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpInternalOrderDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 内部订单编号 + */ + @TableField("NUM") + private String number; + /** + * 内部订单描述 + */ + @TableField("NAME") + private String name; + /** + * 内部订单类型 + */ + @TableField("TP") + private String type; + /** + * 是否已关闭;使用这个基础数据是,如果为X时必须和工区使用 + */ + @TableField("IS_OFF") + private String isOff; + /** + * 是否已完成 + */ + @TableField("IS_FIN") + private String isFinish; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java index 423e687..b962257 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java @@ -1,10 +1,9 @@ package cn.iocoder.yudao.module.erp.dal.dataobject.erp; -import lombok.*; -import java.util.*; - import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.time.LocalDateTime; /** * ERP物料数据 DO * @@ -13,7 +12,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("sply_erp_mtrl") @KeySequence("sply_erp_mtrl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @ToString(callSuper = true) @Builder @NoArgsConstructor @@ -21,7 +21,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpMaterialDO extends BaseDO { +//public class ErpMaterialDO extends BaseDO { +public class ErpMaterialDO { @@ -96,4 +97,7 @@ public class ErpMaterialDO extends BaseDO { @TableField("MTRL_LEN_DSP") private String materialLengthDescription; + @TableField(exist = false) + private Integer TENANT_ID; + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java new file mode 100644 index 0000000..d34bd98 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP工艺路线 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs") +@KeySequence("sply_erp_prcs_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 物料描述 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + /** + * 工艺路线描述 + */ + @TableField("BLN_DSP") + private String blineDescription; + /** + * 计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 用途 + */ + @TableField("USE_DSP") + private String useDescription; + /** + * 状态 + */ + @TableField("STS") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java new file mode 100644 index 0000000..8689ba2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP工艺路线明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs_dtl") +@KeySequence("sply_erp_prcs_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDetailDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * ERP工艺路线主键 + */ + @TableField("PRCS_ID") + private String processId; + /** + * 工序编码 + */ + @TableField("PROC_NUM") + private BigDecimal processingNumber; + /** + * 工序描述 + */ + @TableField("PROC_NAME") + private String processingName; + /** + * 作业的计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 工作中心编号 + */ + @TableField("WRK_CTR_NUM") + private String workCenterNumber; + /** + * 工作中心描述 + */ + @TableField("WRK_CTR_NAME") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java new file mode 100644 index 0000000..e40fbff --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP生产版本 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_pdtv_ver") +@KeySequence("sply_erp_pdtv_ver_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProductiveVersionDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 生产版本编码 + */ + @TableField("PDTV_VER_NUM") + private String productiveVersionNumber; + /** + * 生产版本描述 + */ + @TableField("PDTV_VER_NAME") + private String productiveVersionName; + /** + * 备选BOM编号 + */ + @TableField("BM_NUM") + private String bomNumber; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java new file mode 100644 index 0000000..c9240dd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpPurchaseOrganizationDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP采购组织 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prch_orgz") +@KeySequence("sply_erp_prch_orgz_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpPurchaseOrganizationDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 采购组织编号 + */ + @TableField("NUM") + private String number; + /** + * 采购组织描述 + */ + @TableField("NAME") + private String name; + /** + * 公司编码;存入ERP公司编码 + */ + @TableField("CPN_NUM") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java new file mode 100644 index 0000000..b855a6e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpSalesOrganizationDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP销售组织 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_sale_orgz") +@KeySequence("sply_erp_sale_orgz_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpSalesOrganizationDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 销售组织编号 + */ + @TableField("NUM") + private String number; + /** + * 销售组织描述 + */ + @TableField("NAME") + private String name; + /** + * 公司编码;存入ERP公司编码 + */ + @TableField("CPN_NUM") + private String companyNumber; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java new file mode 100644 index 0000000..01aeb5d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpWarehouseDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +/** +* ERP库位 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_wrh") +@KeySequence("sply_erp_wrh_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpWarehouseDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码;将查询参数存入 + */ + @TableField("FACT_NUM") + private String factoryNumber; + /** + * 库位描述 + */ + @TableField("NAME") + private String name; + /** + * 公司编号 + */ + @TableField("COMPANY_ID") + private Long companyId; + /** + * 公司名称 + */ + @TableField("COMPANY_NAME") + private String companyName; + /** + * 部门编号 + */ + @TableField("DEPT_ID") + private Long deptId; + /** + * 部门名称 + */ + @TableField("DEPT_NAME") + private String deptName; + /** + * 岗位编号 + */ + @TableField("POST_ID") + private Long postId; + /** + * 库位编码 + */ + @TableField("NUM") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java new file mode 100644 index 0000000..014a84c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料清单(BOM)明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDetailDO::getBomId, reqVO.getBomId()) + .eqIfPresent(ErpBomDetailDO::getErpBomId, reqVO.getErpBomId()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialNumber, reqVO.getChildMaterialNumber()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialDescription, reqVO.getChildMaterialDescription()) + .eqIfPresent(ErpBomDetailDO::getCategory, reqVO.getCategory()) + .eqIfPresent(ErpBomDetailDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDetailDO::getUnit, reqVO.getUnit()) + .eqIfPresent(ErpBomDetailDO::getIdentificationType, reqVO.getIdentificationType()) + .orderByDesc(ErpBomDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java new file mode 100644 index 0000000..2a794f3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料清单(BOM) Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpBomDO::getUpMaterial, reqVO.getUpMaterial()) + .eqIfPresent(ErpBomDO::getUseItem, reqVO.getUseItem()) + .eqIfPresent(ErpBomDO::getMaterialDescription, reqVO.getMaterialDescription()) + .eqIfPresent(ErpBomDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDO::getUnit, reqVO.getUnit()) + .orderByDesc(ErpBomDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java new file mode 100644 index 0000000..aa8b4c7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP成本中心 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpCostcenterMapper extends BaseMapperX { + + default PageResult selectPage(ErpCostcenterPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpCostcenterDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpCostcenterDO::getName, reqVO.getName()) + .eqIfPresent(ErpCostcenterDO::getIsUse, reqVO.getIsUse()) + .eqIfPresent(ErpCostcenterDO::getScopeNumber, reqVO.getScopeNumber()) + .likeIfPresent(ErpCostcenterDO::getScopeName, reqVO.getScopeName()) + .betweenIfPresent(ErpCostcenterDO::getStartDate, reqVO.getStartDate()) + .betweenIfPresent(ErpCostcenterDO::getEndDate, reqVO.getEndDate()) + .orderByDesc(ErpCostcenterDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java index 6e882ae..dfe7bd6 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java @@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.erp.dal.mysql.erp; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; import org.apache.ibatis.annotations.Mapper; /** @@ -26,7 +26,6 @@ public interface ErpCustomerMapper extends BaseMapperX { .betweenIfPresent(ErpCustomerDO::getRepairDate, reqVO.getRepairDate()) .eqIfPresent(ErpCustomerDO::getIsGiveback, reqVO.getIsGiveback()) .eqIfPresent(ErpCustomerDO::getIsProvisional, reqVO.getIsProvisional()) - .eqIfPresent(ErpCustomerDO::getType, reqVO.getType()) .orderByDesc(ErpCustomerDO::getId)); } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java new file mode 100644 index 0000000..b3c195a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工厂 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpFactoryMapper extends BaseMapperX { + + default PageResult selectPage(ErpFactoryPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ErpFactoryDO::getName, reqVO.getName()) + .eqIfPresent(ErpFactoryDO::getNumber, reqVO.getNumber()) + .orderByDesc(ErpFactoryDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java new file mode 100644 index 0000000..3f8f400 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpInternalOrderMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP内部订单 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpInternalOrderMapper extends BaseMapperX { + + default PageResult selectPage(ErpInternalOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpInternalOrderDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpInternalOrderDO::getName, reqVO.getName()) + .eqIfPresent(ErpInternalOrderDO::getType, reqVO.getType()) + .eqIfPresent(ErpInternalOrderDO::getIsOff, reqVO.getIsOff()) + .eqIfPresent(ErpInternalOrderDO::getIsFinish, reqVO.getIsFinish()) + .orderByDesc(ErpInternalOrderDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java index 6b06b19..b170f84 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.erp.dal.mysql.erp; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; import org.apache.ibatis.annotations.Mapper; diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java new file mode 100644 index 0000000..85e1b28 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工艺路线明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDetailDO::getProcessId, reqVO.getProcessId()) + .eqIfPresent(ErpProcessDetailDO::getProcessingNumber, reqVO.getProcessingNumber()) + .likeIfPresent(ErpProcessDetailDO::getProcessingName, reqVO.getProcessingName()) + .eqIfPresent(ErpProcessDetailDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDetailDO::getWorkCenterNumber, reqVO.getWorkCenterNumber()) + .likeIfPresent(ErpProcessDetailDO::getWorkCenterName, reqVO.getWorkCenterName()) + .orderByDesc(ErpProcessDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java new file mode 100644 index 0000000..f46e488 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工艺路线 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProcessDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(ErpProcessDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(ErpProcessDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProcessDO::getGroupCount, reqVO.getGroupCount()) + .eqIfPresent(ErpProcessDO::getBlineDescription, reqVO.getBlineDescription()) + .eqIfPresent(ErpProcessDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDO::getUseDescription, reqVO.getUseDescription()) + .eqIfPresent(ErpProcessDO::getStatus, reqVO.getStatus()) + .orderByDesc(ErpProcessDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java new file mode 100644 index 0000000..ddf8200 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP生产版本 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProductiveVersionMapper extends BaseMapperX { + + default PageResult selectPage(ErpProductiveVersionPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProductiveVersionDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProductiveVersionDO::getMaterialNumber, reqVO.getMaterialNumber()) + .eqIfPresent(ErpProductiveVersionDO::getProductiveVersionNumber, reqVO.getProductiveVersionNumber()) + .likeIfPresent(ErpProductiveVersionDO::getProductiveVersionName, reqVO.getProductiveVersionName()) + .eqIfPresent(ErpProductiveVersionDO::getBomNumber, reqVO.getBomNumber()) + .eqIfPresent(ErpProductiveVersionDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProductiveVersionDO::getGroupCount, reqVO.getGroupCount()) + .orderByDesc(ErpProductiveVersionDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java new file mode 100644 index 0000000..0035a04 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpPurchaseOrganizationMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP采购组织 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpPurchaseOrganizationMapper extends BaseMapperX { + + default PageResult selectPage(ErpPurchaseOrganizationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpPurchaseOrganizationDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpPurchaseOrganizationDO::getName, reqVO.getName()) + .eqIfPresent(ErpPurchaseOrganizationDO::getCompanyNumber, reqVO.getCompanyNumber()) + .orderByDesc(ErpPurchaseOrganizationDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java new file mode 100644 index 0000000..d560296 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpSalesOrganizationMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP销售组织 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpSalesOrganizationMapper extends BaseMapperX { + + default PageResult selectPage(ErpSalesOrganizationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpSalesOrganizationDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpSalesOrganizationDO::getName, reqVO.getName()) + .eqIfPresent(ErpSalesOrganizationDO::getCompanyNumber, reqVO.getCompanyNumber()) + .orderByDesc(ErpSalesOrganizationDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java new file mode 100644 index 0000000..5ca7d39 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpWarehouseMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; + +/** + * ERP库位 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpWarehouseMapper extends BaseMapperX { + + default PageResult selectPage(ErpWarehousePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpWarehouseDO::getFactoryNumber, reqVO.getFactoryNumber()) + .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName()) + .betweenIfPresent(ErpWarehouseDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ErpWarehouseDO::getNumber, reqVO.getNumber()) + .orderByDesc(ErpWarehouseDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java new file mode 100644 index 0000000..5fea1b5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料清单(BOM)明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomDetailService { + + /** + * 创建ERP物料清单(BOM)明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomDetailRespVO createErpBomDetail(@Valid ErpBomDetailSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM)明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpBomDetail(@Valid ErpBomDetailSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM)明细 + * + * @param id 编号 + */ + void deleteErpBomDetail(Long id); + + /** + * 批量删除ERP物料清单(BOM)明细 + * + * @param ids 编号 + */ + void deleteErpBomDetailListByIds(List ids); + + /** + * 获得ERP物料清单(BOM)明细 + * + * @param id 编号 + * @return ERP物料清单(BOM)明细 + */ + ErpBomDetailDO getErpBomDetail(Long id); + + /** + * 获得ERP物料清单(BOM)明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)明细分页 + */ + PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java new file mode 100644 index 0000000..3d52c0c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_BOM_DETAIL_NOT_EXISTS; + +/** + * ERP物料清单(BOM)明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomDetailServiceImpl implements ErpBomDetailService { + + @Resource + private ErpBomDetailMapper erpBomDetailMapper; + + @Override + public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) { + // 插入 + ErpBomDetailDO erpBomDetail = BeanUtils.toBean(createReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.insert(erpBomDetail); + // 返回 + return BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class); + } + + @Override + public void updateErpBomDetail(ErpBomDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomDetailExists(updateReqVO.getId()); + // 更新 + ErpBomDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpBomDetail(Long id) { + // 校验存在 + validateErpBomDetailExists(id); + // 删除 + erpBomDetailMapper.deleteById(id); + } + + @Override + public void deleteErpBomDetailListByIds(List ids) { + // 校验存在 + validateErpBomDetailExists(ids); + // 删除 + erpBomDetailMapper.deleteByIds(ids); + } + + private void validateErpBomDetailExists(List ids) { + List list = erpBomDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + private void validateErpBomDetailExists(Long id) { + if (erpBomDetailMapper.selectById(id) == null) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpBomDetailDO getErpBomDetail(Long id) { + return erpBomDetailMapper.selectById(id); + } + + @Override + public PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO) { + return erpBomDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java new file mode 100644 index 0000000..90da405 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料清单(BOM) Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomService { + + /** + * 创建ERP物料清单(BOM) + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomRespVO createErpBom(@Valid ErpBomSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM) + * + * @param updateReqVO 更新信息 + */ + void updateErpBom(@Valid ErpBomSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM) + * + * @param id 编号 + */ + void deleteErpBom(Long id); + + /** + * 批量删除ERP物料清单(BOM) + * + * @param ids 编号 + */ + void deleteErpBomListByIds(List ids); + + /** + * 获得ERP物料清单(BOM) + * + * @param id 编号 + * @return ERP物料清单(BOM) + */ + ErpBomDO getErpBom(Long id); + + /** + * 获得ERP物料清单(BOM)分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)分页 + */ + PageResult getErpBomPage(ErpBomPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java new file mode 100644 index 0000000..c187dbe --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_BOM_NOT_EXISTS; + +/** + * ERP物料清单(BOM) Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomServiceImpl implements ErpBomService { + + @Resource + private ErpBomMapper erpBomMapper; + + @Override + public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { + // 插入 + ErpBomDO erpBom = BeanUtils.toBean(createReqVO, ErpBomDO.class); + erpBomMapper.insert(erpBom); + // 返回 + return BeanUtils.toBean(erpBom, ErpBomRespVO.class); + } + + @Override + public void updateErpBom(ErpBomSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomExists(updateReqVO.getId()); + // 更新 + ErpBomDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDO.class); + erpBomMapper.updateById(updateObj); + } + + @Override + public void deleteErpBom(Long id) { + // 校验存在 + validateErpBomExists(id); + // 删除 + erpBomMapper.deleteById(id); + } + + @Override + public void deleteErpBomListByIds(List ids) { + // 校验存在 + validateErpBomExists(ids); + // 删除 + erpBomMapper.deleteByIds(ids); + } + + private void validateErpBomExists(List ids) { + List list = erpBomMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + private void validateErpBomExists(Long id) { + if (erpBomMapper.selectById(id) == null) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + @Override + public ErpBomDO getErpBom(Long id) { + return erpBomMapper.selectById(id); + } + + @Override + public PageResult getErpBomPage(ErpBomPageReqVO pageReqVO) { + return erpBomMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java index b884437..72c6136 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.erp.service.erp; -import java.util.*; - import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; -import jakarta.validation.*; +import jakarta.validation.Valid; + +import java.util.List; /** * ERP公司 Service 接口 diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java index 147e6c2..cbb7993 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java @@ -2,28 +2,24 @@ package cn.iocoder.yudao.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCompanyMapper; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.HttpEntity; -import org.springframework.http.ResponseEntity; -import org.springframework.web.client.RestTemplate; -import java.util.*; - -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; @@ -38,15 +34,12 @@ import static dm.jdbc.util.DriverUtil.log; @Validated public class ErpCompanyServiceImpl implements ErpCompanyService { - @Value("${erp.address}") - private String erpAddress; - - @Value("${erp.sapsys}") - private String sapsys; - @Resource private ErpCompanyMapper erpCompanyMapper; + @Resource + private ErpConfig erpConfig; + @Override public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { // 插入 @@ -105,61 +98,91 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { } @Override + @Transactional public void callErpRfcInterface() { try { - // 构建完整URL - String url = "http://" + erpAddress + "/api/rfc/get"; - // 构建请求参数 - JSONObject requestBody = new JSONObject(); - requestBody.put("sapsys", sapsys); - requestBody.put("funcnr", OftenEnum.FuncnrEnum.公司代码.funcnr); // 获取枚举值 - - // 设置请求头 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - // 创建HTTP请求实体 - HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); - - // 发送POST请求 - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); - - // 解析响应结果 - JSONObject jsonResponse = JSON.parseObject(response.getBody()); - - // 正确获取E_DATA数组 - JSONObject dataObject = jsonResponse.getJSONObject("data"); - if (dataObject != null && "S".equals(dataObject.getString("E_FLAG"))) { - JSONArray companyArray = dataObject.getJSONArray("E_DATA"); - - // 批量插入公司数据 - if (companyArray != null && !companyArray.isEmpty()) { - List erpCompanyDOS = new ArrayList<>(); - for (int i = 0; i < companyArray.size(); i++) { - JSONObject companyJson = companyArray.getJSONObject(i); - if (companyJson != null) { - ErpCompanyDO companyDO = new ErpCompanyDO(); - companyDO.setName(companyJson.getString("BUTXT")); - companyDO.setNumber(companyJson.getString("BUKRS")); - companyDO.setCurrency(companyJson.getString("WAERS")); - erpCompanyDOS.add(companyDO); - } - } - // 批量插入数据库 - if (!erpCompanyDOS.isEmpty()) { - erpCompanyMapper.insertBatch(erpCompanyDOS); - } - } - } else { - log.warn("ERP接口调用失败或返回错误标志"); + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); + if (dataArray == null || dataArray.isEmpty()) { + return; } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } catch (Exception e) { log.error("调用ERP RFC接口失败: {}", e); throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); } } + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("BUKRS").trim(); + if (number != null) { + ErpCompanyDO DO = new ErpCompanyDO(); + DO.setName(dataJson.getString("BUTXT")); + DO.setNumber(number); + DO.setCurrency(dataJson.getString("WAERS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCompanyMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCompanyMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java new file mode 100644 index 0000000..08ea18e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP成本中心 Service 接口 + * + * @author 后台管理 + */ +public interface ErpCostcenterService { + + /** + * 创建ERP成本中心 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpCostcenterRespVO createErpCostcenter(@Valid ErpCostcenterSaveReqVO createReqVO); + + /** + * 更新ERP成本中心 + * + * @param updateReqVO 更新信息 + */ + void updateErpCostcenter(@Valid ErpCostcenterSaveReqVO updateReqVO); + + /** + * 删除ERP成本中心 + * + * @param id 编号 + */ + void deleteErpCostcenter(Long id); + + /** + * 批量删除ERP成本中心 + * + * @param ids 编号 + */ + void deleteErpCostcenterListByIds(List ids); + + /** + * 获得ERP成本中心 + * + * @param id 编号 + * @return ERP成本中心 + */ + ErpCostcenterDO getErpCostcenter(Long id); + + /** + * 获得ERP成本中心分页 + * + * @param pageReqVO 分页查询 + * @return ERP成本中心分页 + */ + PageResult getErpCostcenterPage(ErpCostcenterPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java new file mode 100644 index 0000000..946a2f3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCostcenterMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_COSTCENTER_NOT_EXISTS; + +/** + * ERP成本中心 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpCostcenterServiceImpl implements ErpCostcenterService { + + @Resource + private ErpCostcenterMapper erpCostcenterMapper; + + @Override + public ErpCostcenterRespVO createErpCostcenter(ErpCostcenterSaveReqVO createReqVO) { + // 插入 + ErpCostcenterDO erpCostcenter = BeanUtils.toBean(createReqVO, ErpCostcenterDO.class); + erpCostcenterMapper.insert(erpCostcenter); + // 返回 + return BeanUtils.toBean(erpCostcenter, ErpCostcenterRespVO.class); + } + + @Override + public void updateErpCostcenter(ErpCostcenterSaveReqVO updateReqVO) { + // 校验存在 + validateErpCostcenterExists(updateReqVO.getId()); + // 更新 + ErpCostcenterDO updateObj = BeanUtils.toBean(updateReqVO, ErpCostcenterDO.class); + erpCostcenterMapper.updateById(updateObj); + } + + @Override + public void deleteErpCostcenter(Long id) { + // 校验存在 + validateErpCostcenterExists(id); + // 删除 + erpCostcenterMapper.deleteById(id); + } + + @Override + public void deleteErpCostcenterListByIds(List ids) { + // 校验存在 + validateErpCostcenterExists(ids); + // 删除 + erpCostcenterMapper.deleteByIds(ids); + } + + private void validateErpCostcenterExists(List ids) { + List list = erpCostcenterMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + } + + private void validateErpCostcenterExists(Long id) { + if (erpCostcenterMapper.selectById(id) == null) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + } + + @Override + public ErpCostcenterDO getErpCostcenter(Long id) { + return erpCostcenterMapper.selectById(id); + } + + @Override + public PageResult getErpCostcenterPage(ErpCostcenterPageReqVO pageReqVO) { + return erpCostcenterMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java index dc27963..58f5ffc 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.erp.service.erp; -import java.util.*; - -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; -import jakarta.validation.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import jakarta.validation.Valid; + +import java.util.List; /** * ERP客商主数据 Service 接口 @@ -61,4 +61,7 @@ public interface ErpCustomerService { */ PageResult getErpCustomerPage(ErpCustomerPageReqVO pageReqVO); + void callErpRfcInterface(); + + void initialize(); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java index d6b7e83..e24f78d 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java @@ -1,22 +1,35 @@ package cn.iocoder.yudao.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCustomerMapper; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; -import org.springframework.stereotype.Service; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCustomerMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import jakarta.annotation.Resource; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CUSTOMER_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; /** * ERP客商主数据 Service 实现类 @@ -27,6 +40,12 @@ import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CUSTOMER_ @Validated public class ErpCustomerServiceImpl implements ErpCustomerService { + @Resource + private RedisTemplate redisTemplate; + + @Resource + private ErpConfig erpConfig; + @Resource private ErpCustomerMapper erpCustomerMapper; @@ -57,12 +76,12 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { } @Override - public void deleteErpCustomerListByIds(List ids) { + public void deleteErpCustomerListByIds(List ids) { // 校验存在 validateErpCustomerExists(ids); // 删除 erpCustomerMapper.deleteByIds(ids); - } + } private void validateErpCustomerExists(List ids) { List list = erpCustomerMapper.selectByIds(ids); @@ -87,4 +106,129 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { return erpCustomerMapper.selectPage(pageReqVO); } + @Override + @Transactional + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); +// datumEntry.put("low", "2021-05-17"); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); +// req.put("BUKRS", "3001"); + + // 1. 调用ERP接口获取数据 + for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { + req.put("mode", type.modetype); + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + + // 2. 处理数据,区分新增和更新 + ProcessingResult result = processData(dataArray, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { + String key = "erp" + funcnrEnum.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key, funcnrEnum.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("PARTNER").trim(); + if (number != null) { + ErpCustomerDO DO = new ErpCustomerDO(); + DO.setName(dataJson.getString("NAME_ORG1")); + DO.setNumber(number); + DO.setAccountGroup(dataJson.getString("BU_GROUP")); + DO.setDescription(dataJson.getString("BU_SORT1")); + DO.setCenterNumber(dataJson.getString("BU_SORT2")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("CRDAT")+"T00:00:00")); + DO.setRepairDate(LocalDateTime.parse(dataJson.getString("CHDAT")+"T00:00:00")); + DO.setIsGiveback(dataJson.getString("XDELE")); + DO.setIsProvisional(dataJson.getString("XBLCK")); +// DO.setType(type.modetype); + + // 使用 Map 优化查找效率,避免每次遍历 comnumbers 列表 + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCustomerMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCustomerMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key, result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + + @Override + public void initialize() { + List existingNumbers = erpCustomerMapper.selectList(new LambdaQueryWrapperX()) + .stream() + .map(ErpCustomerDO::getNumber) + .collect(Collectors.toList()); + String key = "erp" + OftenEnum.FuncnrEnum.客商信息.getFuncnr(); + redisTemplate.opsForValue().set(key, existingNumbers); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java new file mode 100644 index 0000000..8d6e338 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工厂 Service 接口 + * + * @author 后台管理 + */ +public interface ErpFactoryService { + + /** + * 创建ERP工厂 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpFactoryRespVO createErpFactory(@Valid ErpFactorySaveReqVO createReqVO); + + /** + * 更新ERP工厂 + * + * @param updateReqVO 更新信息 + */ + void updateErpFactory(@Valid ErpFactorySaveReqVO updateReqVO); + + /** + * 删除ERP工厂 + * + * @param id 编号 + */ + void deleteErpFactory(Long id); + + /** + * 批量删除ERP工厂 + * + * @param ids 编号 + */ + void deleteErpFactoryListByIds(List ids); + + /** + * 获得ERP工厂 + * + * @param id 编号 + * @return ERP工厂 + */ + ErpFactoryDO getErpFactory(Long id); + + /** + * 获得ERP工厂分页 + * + * @param pageReqVO 分页查询 + * @return ERP工厂分页 + */ + PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java new file mode 100644 index 0000000..56cd524 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpFactoryMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_FACTORY_NOT_EXISTS; + +/** + * ERP工厂 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpFactoryServiceImpl implements ErpFactoryService { + + @Resource + private ErpFactoryMapper erpFactoryMapper; + + @Override + public ErpFactoryRespVO createErpFactory(ErpFactorySaveReqVO createReqVO) { + // 插入 + ErpFactoryDO erpFactory = BeanUtils.toBean(createReqVO, ErpFactoryDO.class); + erpFactoryMapper.insert(erpFactory); + // 返回 + return BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class); + } + + @Override + public void updateErpFactory(ErpFactorySaveReqVO updateReqVO) { + // 校验存在 + validateErpFactoryExists(updateReqVO.getId()); + // 更新 + ErpFactoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpFactoryDO.class); + erpFactoryMapper.updateById(updateObj); + } + + @Override + public void deleteErpFactory(Long id) { + // 校验存在 + validateErpFactoryExists(id); + // 删除 + erpFactoryMapper.deleteById(id); + } + + @Override + public void deleteErpFactoryListByIds(List ids) { + // 校验存在 + validateErpFactoryExists(ids); + // 删除 + erpFactoryMapper.deleteByIds(ids); + } + + private void validateErpFactoryExists(List ids) { + List list = erpFactoryMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + + private void validateErpFactoryExists(Long id) { + if (erpFactoryMapper.selectById(id) == null) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + + @Override + public ErpFactoryDO getErpFactory(Long id) { + return erpFactoryMapper.selectById(id); + } + + @Override + public PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO) { + return erpFactoryMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java new file mode 100644 index 0000000..2ce6b94 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP内部订单 Service 接口 + * + * @author 后台管理 + */ +public interface ErpInternalOrderService { + + /** + * 创建ERP内部订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpInternalOrderRespVO createErpInternalOrder(@Valid ErpInternalOrderSaveReqVO createReqVO); + + /** + * 更新ERP内部订单 + * + * @param updateReqVO 更新信息 + */ + void updateErpInternalOrder(@Valid ErpInternalOrderSaveReqVO updateReqVO); + + /** + * 删除ERP内部订单 + * + * @param id 编号 + */ + void deleteErpInternalOrder(Long id); + + /** + * 批量删除ERP内部订单 + * + * @param ids 编号 + */ + void deleteErpInternalOrderListByIds(List ids); + + /** + * 获得ERP内部订单 + * + * @param id 编号 + * @return ERP内部订单 + */ + ErpInternalOrderDO getErpInternalOrder(Long id); + + /** + * 获得ERP内部订单分页 + * + * @param pageReqVO 分页查询 + * @return ERP内部订单分页 + */ + PageResult getErpInternalOrderPage(ErpInternalOrderPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java new file mode 100644 index 0000000..b63f716 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpInternalOrderServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpInternalOrderDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpInternalOrderMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; + +/** + * ERP内部订单 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { + + @Resource + private ErpInternalOrderMapper erpInternalOrderMapper; + + @Override + public ErpInternalOrderRespVO createErpInternalOrder(ErpInternalOrderSaveReqVO createReqVO) { + // 插入 + ErpInternalOrderDO erpInternalOrder = BeanUtils.toBean(createReqVO, ErpInternalOrderDO.class); + erpInternalOrderMapper.insert(erpInternalOrder); + // 返回 + return BeanUtils.toBean(erpInternalOrder, ErpInternalOrderRespVO.class); + } + + @Override + public void updateErpInternalOrder(ErpInternalOrderSaveReqVO updateReqVO) { + // 校验存在 + validateErpInternalOrderExists(updateReqVO.getId()); + // 更新 + ErpInternalOrderDO updateObj = BeanUtils.toBean(updateReqVO, ErpInternalOrderDO.class); + erpInternalOrderMapper.updateById(updateObj); + } + + @Override + public void deleteErpInternalOrder(Long id) { + // 校验存在 + validateErpInternalOrderExists(id); + // 删除 + erpInternalOrderMapper.deleteById(id); + } + + @Override + public void deleteErpInternalOrderListByIds(List ids) { + // 校验存在 + validateErpInternalOrderExists(ids); + // 删除 + erpInternalOrderMapper.deleteByIds(ids); + } + + private void validateErpInternalOrderExists(List ids) { + List list = erpInternalOrderMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS); + } + } + + private void validateErpInternalOrderExists(Long id) { + if (erpInternalOrderMapper.selectById(id) == null) { + throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS); + } + } + + @Override + public ErpInternalOrderDO getErpInternalOrder(Long id) { + return erpInternalOrderMapper.selectById(id); + } + + @Override + public PageResult getErpInternalOrderPage(ErpInternalOrderPageReqVO pageReqVO) { + return erpInternalOrderMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java index f64eaa5..3f52ed2 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.erp.service.erp; -import java.util.*; - +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; -import jakarta.validation.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; +import jakarta.validation.Valid; + +import java.util.List; /** * ERP物料数据 Service 接口 @@ -61,4 +61,7 @@ public interface ErpMaterialService { */ PageResult getErpMaterialPage(ErpMaterialPageReqVO pageReqVO); + void callErpRfcInterface(); + + void initialize(); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java index 71e1c06..e3e9df3 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java @@ -1,22 +1,33 @@ package cn.iocoder.yudao.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpMaterialMapper; -import org.springframework.stereotype.Service; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_MATERIAL_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; /** * ERP物料数据 Service 实现类 @@ -29,6 +40,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Resource private ErpMaterialMapper erpMaterialMapper; + @Resource + private ErpConfig erpConfig; @Override public ErpMaterialRespVO createErpMaterial(ErpMaterialSaveReqVO createReqVO) { @@ -87,4 +100,124 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { return erpMaterialMapper.selectPage(pageReqVO); } + @Override + @Transactional + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.物料数据; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", "2021-05-16"); +// datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatakey(), datumList); + + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("MATNR").trim(); + if (number != null) { + ErpMaterialDO DO = new ErpMaterialDO(); + DO.setDownCenterNumber(number); + DO.setCenterNumber(dataJson.getString("BISMT")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("ERSDA"))); + DO.setMaterialType(dataJson.getString("MTART")); + DO.setMaterialGroupDate(dataJson.getString("MATKL")); + DO.setExternalMaterialGroupDate(dataJson.getString("EXTWG")); + DO.setUnit(dataJson.getString("MEINS")); + DO.setUnitDescription(dataJson.getString("MSEHT")); + DO.setMaterialTypeDescription(dataJson.getString("MTBEZ")); + DO.setMaterialGroupDescription(dataJson.getString("WGBEZ")); + DO.setExternalMaterialGroupDescription(dataJson.getString("EWBEZ")); + DO.setMaterialName(dataJson.getString("MAKTX")); + DO.setMaterialLengthDescription(dataJson.getString("LDESC")); + + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpMaterialMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpMaterialMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + + @Override + public void initialize() { + List existingNumbers = erpMaterialMapper.selectList(new LambdaQueryWrapperX()) + .stream() + .map(ErpMaterialDO::getDownCenterNumber) + .collect(Collectors.toList()); + String key = "erp" + OftenEnum.FuncnrEnum.物料数据.getFuncnr(); + erpConfig.updateRedisCache(key, existingNumbers); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java new file mode 100644 index 0000000..a9163e7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工艺路线明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessDetailService { + + /** + * 创建ERP工艺路线明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessDetailRespVO createErpProcessDetail(@Valid ErpProcessDetailSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcessDetail(@Valid ErpProcessDetailSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线明细 + * + * @param id 编号 + */ + void deleteErpProcessDetail(Long id); + + /** + * 批量删除ERP工艺路线明细 + * + * @param ids 编号 + */ + void deleteErpProcessDetailListByIds(List ids); + + /** + * 获得ERP工艺路线明细 + * + * @param id 编号 + * @return ERP工艺路线明细 + */ + ErpProcessDetailDO getErpProcessDetail(Long id); + + /** + * 获得ERP工艺路线明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线明细分页 + */ + PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java new file mode 100644 index 0000000..8d4e7c6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_DETAIL_NOT_EXISTS; + +/** + * ERP工艺路线明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { + + @Resource + private ErpProcessDetailMapper erpProcessDetailMapper; + + @Override + public ErpProcessDetailRespVO createErpProcessDetail(ErpProcessDetailSaveReqVO createReqVO) { + // 插入 + ErpProcessDetailDO erpProcessDetail = BeanUtils.toBean(createReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.insert(erpProcessDetail); + // 返回 + return BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class); + } + + @Override + public void updateErpProcessDetail(ErpProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessDetailExists(updateReqVO.getId()); + // 更新 + ErpProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcessDetail(Long id) { + // 校验存在 + validateErpProcessDetailExists(id); + // 删除 + erpProcessDetailMapper.deleteById(id); + } + + @Override + public void deleteErpProcessDetailListByIds(List ids) { + // 校验存在 + validateErpProcessDetailExists(ids); + // 删除 + erpProcessDetailMapper.deleteByIds(ids); + } + + private void validateErpProcessDetailExists(List ids) { + List list = erpProcessDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + private void validateErpProcessDetailExists(Long id) { + if (erpProcessDetailMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpProcessDetailDO getErpProcessDetail(Long id) { + return erpProcessDetailMapper.selectById(id); + } + + @Override + public PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO) { + return erpProcessDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java new file mode 100644 index 0000000..4d020a4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工艺路线 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessService { + + /** + * 创建ERP工艺路线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessRespVO createErpProcess(@Valid ErpProcessSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcess(@Valid ErpProcessSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线 + * + * @param id 编号 + */ + void deleteErpProcess(Long id); + + /** + * 批量删除ERP工艺路线 + * + * @param ids 编号 + */ + void deleteErpProcessListByIds(List ids); + + /** + * 获得ERP工艺路线 + * + * @param id 编号 + * @return ERP工艺路线 + */ + ErpProcessDO getErpProcess(Long id); + + /** + * 获得ERP工艺路线分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线分页 + */ + PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java new file mode 100644 index 0000000..bc1b832 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_NOT_EXISTS; + +/** + * ERP工艺路线 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessServiceImpl implements ErpProcessService { + + @Resource + private ErpProcessMapper erpProcessMapper; + + @Override + public ErpProcessRespVO createErpProcess(ErpProcessSaveReqVO createReqVO) { + // 插入 + ErpProcessDO erpProcess = BeanUtils.toBean(createReqVO, ErpProcessDO.class); + erpProcessMapper.insert(erpProcess); + // 返回 + return BeanUtils.toBean(erpProcess, ErpProcessRespVO.class); + } + + @Override + public void updateErpProcess(ErpProcessSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessExists(updateReqVO.getId()); + // 更新 + ErpProcessDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDO.class); + erpProcessMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcess(Long id) { + // 校验存在 + validateErpProcessExists(id); + // 删除 + erpProcessMapper.deleteById(id); + } + + @Override + public void deleteErpProcessListByIds(List ids) { + // 校验存在 + validateErpProcessExists(ids); + // 删除 + erpProcessMapper.deleteByIds(ids); + } + + private void validateErpProcessExists(List ids) { + List list = erpProcessMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + private void validateErpProcessExists(Long id) { + if (erpProcessMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + @Override + public ErpProcessDO getErpProcess(Long id) { + return erpProcessMapper.selectById(id); + } + + @Override + public PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO) { + return erpProcessMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java new file mode 100644 index 0000000..84ee98b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP生产版本 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProductiveVersionService { + + /** + * 创建ERP生产版本 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProductiveVersionRespVO createErpProductiveVersion(@Valid ErpProductiveVersionSaveReqVO createReqVO); + + /** + * 更新ERP生产版本 + * + * @param updateReqVO 更新信息 + */ + void updateErpProductiveVersion(@Valid ErpProductiveVersionSaveReqVO updateReqVO); + + /** + * 删除ERP生产版本 + * + * @param id 编号 + */ + void deleteErpProductiveVersion(Long id); + + /** + * 批量删除ERP生产版本 + * + * @param ids 编号 + */ + void deleteErpProductiveVersionListByIds(List ids); + + /** + * 获得ERP生产版本 + * + * @param id 编号 + * @return ERP生产版本 + */ + ErpProductiveVersionDO getErpProductiveVersion(Long id); + + /** + * 获得ERP生产版本分页 + * + * @param pageReqVO 分页查询 + * @return ERP生产版本分页 + */ + PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java new file mode 100644 index 0000000..7ce359c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProductiveVersionMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PRODUCTIVE_VERSION_NOT_EXISTS; + +/** + * ERP生产版本 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionService { + + @Resource + private ErpProductiveVersionMapper erpProductiveVersionMapper; + + @Override + public ErpProductiveVersionRespVO createErpProductiveVersion(ErpProductiveVersionSaveReqVO createReqVO) { + // 插入 + ErpProductiveVersionDO erpProductiveVersion = BeanUtils.toBean(createReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.insert(erpProductiveVersion); + // 返回 + return BeanUtils.toBean(erpProductiveVersion, ErpProductiveVersionRespVO.class); + } + + @Override + public void updateErpProductiveVersion(ErpProductiveVersionSaveReqVO updateReqVO) { + // 校验存在 + validateErpProductiveVersionExists(updateReqVO.getId()); + // 更新 + ErpProductiveVersionDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.updateById(updateObj); + } + + @Override + public void deleteErpProductiveVersion(Long id) { + // 校验存在 + validateErpProductiveVersionExists(id); + // 删除 + erpProductiveVersionMapper.deleteById(id); + } + + @Override + public void deleteErpProductiveVersionListByIds(List ids) { + // 校验存在 + validateErpProductiveVersionExists(ids); + // 删除 + erpProductiveVersionMapper.deleteByIds(ids); + } + + private void validateErpProductiveVersionExists(List ids) { + List list = erpProductiveVersionMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + } + + private void validateErpProductiveVersionExists(Long id) { + if (erpProductiveVersionMapper.selectById(id) == null) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + } + + @Override + public ErpProductiveVersionDO getErpProductiveVersion(Long id) { + return erpProductiveVersionMapper.selectById(id); + } + + @Override + public PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO) { + return erpProductiveVersionMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java new file mode 100644 index 0000000..3965380 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP采购组织 Service 接口 + * + * @author 后台管理 + */ +public interface ErpPurchaseOrganizationService { + + /** + * 创建ERP采购组织 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpPurchaseOrganizationRespVO createErpPurchaseOrganization(@Valid ErpPurchaseOrganizationSaveReqVO createReqVO); + + /** + * 更新ERP采购组织 + * + * @param updateReqVO 更新信息 + */ + void updateErpPurchaseOrganization(@Valid ErpPurchaseOrganizationSaveReqVO updateReqVO); + + /** + * 删除ERP采购组织 + * + * @param id 编号 + */ + void deleteErpPurchaseOrganization(Long id); + + /** + * 批量删除ERP采购组织 + * + * @param ids 编号 + */ + void deleteErpPurchaseOrganizationListByIds(List ids); + + /** + * 获得ERP采购组织 + * + * @param id 编号 + * @return ERP采购组织 + */ + ErpPurchaseOrganizationDO getErpPurchaseOrganization(Long id); + + /** + * 获得ERP采购组织分页 + * + * @param pageReqVO 分页查询 + * @return ERP采购组织分页 + */ + PageResult getErpPurchaseOrganizationPage(ErpPurchaseOrganizationPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java new file mode 100644 index 0000000..5694cc5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpPurchaseOrganizationMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; + +/** + * ERP采购组织 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizationService { + + @Resource + private ErpPurchaseOrganizationMapper erpPurchaseOrganizationMapper; + + @Override + public ErpPurchaseOrganizationRespVO createErpPurchaseOrganization(ErpPurchaseOrganizationSaveReqVO createReqVO) { + // 插入 + ErpPurchaseOrganizationDO erpPurchaseOrganization = BeanUtils.toBean(createReqVO, ErpPurchaseOrganizationDO.class); + erpPurchaseOrganizationMapper.insert(erpPurchaseOrganization); + // 返回 + return BeanUtils.toBean(erpPurchaseOrganization, ErpPurchaseOrganizationRespVO.class); + } + + @Override + public void updateErpPurchaseOrganization(ErpPurchaseOrganizationSaveReqVO updateReqVO) { + // 校验存在 + validateErpPurchaseOrganizationExists(updateReqVO.getId()); + // 更新 + ErpPurchaseOrganizationDO updateObj = BeanUtils.toBean(updateReqVO, ErpPurchaseOrganizationDO.class); + erpPurchaseOrganizationMapper.updateById(updateObj); + } + + @Override + public void deleteErpPurchaseOrganization(Long id) { + // 校验存在 + validateErpPurchaseOrganizationExists(id); + // 删除 + erpPurchaseOrganizationMapper.deleteById(id); + } + + @Override + public void deleteErpPurchaseOrganizationListByIds(List ids) { + // 校验存在 + validateErpPurchaseOrganizationExists(ids); + // 删除 + erpPurchaseOrganizationMapper.deleteByIds(ids); + } + + private void validateErpPurchaseOrganizationExists(List ids) { + List list = erpPurchaseOrganizationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS); + } + } + + private void validateErpPurchaseOrganizationExists(Long id) { + if (erpPurchaseOrganizationMapper.selectById(id) == null) { + throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS); + } + } + + @Override + public ErpPurchaseOrganizationDO getErpPurchaseOrganization(Long id) { + return erpPurchaseOrganizationMapper.selectById(id); + } + + @Override + public PageResult getErpPurchaseOrganizationPage(ErpPurchaseOrganizationPageReqVO pageReqVO) { + return erpPurchaseOrganizationMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java new file mode 100644 index 0000000..bf1def2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP销售组织 Service 接口 + * + * @author 后台管理 + */ +public interface ErpSalesOrganizationService { + + /** + * 创建ERP销售组织 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpSalesOrganizationRespVO createErpSalesOrganization(@Valid ErpSalesOrganizationSaveReqVO createReqVO); + + /** + * 更新ERP销售组织 + * + * @param updateReqVO 更新信息 + */ + void updateErpSalesOrganization(@Valid ErpSalesOrganizationSaveReqVO updateReqVO); + + /** + * 删除ERP销售组织 + * + * @param id 编号 + */ + void deleteErpSalesOrganization(Long id); + + /** + * 批量删除ERP销售组织 + * + * @param ids 编号 + */ + void deleteErpSalesOrganizationListByIds(List ids); + + /** + * 获得ERP销售组织 + * + * @param id 编号 + * @return ERP销售组织 + */ + ErpSalesOrganizationDO getErpSalesOrganization(Long id); + + /** + * 获得ERP销售组织分页 + * + * @param pageReqVO 分页查询 + * @return ERP销售组织分页 + */ + PageResult getErpSalesOrganizationPage(ErpSalesOrganizationPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java new file mode 100644 index 0000000..8522329 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpSalesOrganizationMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; + +/** + * ERP销售组织 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationService { + + @Resource + private ErpSalesOrganizationMapper erpSalesOrganizationMapper; + + @Override + public ErpSalesOrganizationRespVO createErpSalesOrganization(ErpSalesOrganizationSaveReqVO createReqVO) { + // 插入 + ErpSalesOrganizationDO erpSalesOrganization = BeanUtils.toBean(createReqVO, ErpSalesOrganizationDO.class); + erpSalesOrganizationMapper.insert(erpSalesOrganization); + // 返回 + return BeanUtils.toBean(erpSalesOrganization, ErpSalesOrganizationRespVO.class); + } + + @Override + public void updateErpSalesOrganization(ErpSalesOrganizationSaveReqVO updateReqVO) { + // 校验存在 + validateErpSalesOrganizationExists(updateReqVO.getId()); + // 更新 + ErpSalesOrganizationDO updateObj = BeanUtils.toBean(updateReqVO, ErpSalesOrganizationDO.class); + erpSalesOrganizationMapper.updateById(updateObj); + } + + @Override + public void deleteErpSalesOrganization(Long id) { + // 校验存在 + validateErpSalesOrganizationExists(id); + // 删除 + erpSalesOrganizationMapper.deleteById(id); + } + + @Override + public void deleteErpSalesOrganizationListByIds(List ids) { + // 校验存在 + validateErpSalesOrganizationExists(ids); + // 删除 + erpSalesOrganizationMapper.deleteByIds(ids); + } + + private void validateErpSalesOrganizationExists(List ids) { + List list = erpSalesOrganizationMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS); + } + } + + private void validateErpSalesOrganizationExists(Long id) { + if (erpSalesOrganizationMapper.selectById(id) == null) { + throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS); + } + } + + @Override + public ErpSalesOrganizationDO getErpSalesOrganization(Long id) { + return erpSalesOrganizationMapper.selectById(id); + } + + @Override + public PageResult getErpSalesOrganizationPage(ErpSalesOrganizationPageReqVO pageReqVO) { + return erpSalesOrganizationMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java new file mode 100644 index 0000000..d2dea6d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * ERP库位 Service 接口 + * + * @author 后台管理 + */ +public interface ErpWarehouseService { + + /** + * 创建ERP库位 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpWarehouseRespVO createErpWarehouse(@Valid ErpWarehouseSaveReqVO createReqVO); + + /** + * 更新ERP库位 + * + * @param updateReqVO 更新信息 + */ + void updateErpWarehouse(@Valid ErpWarehouseSaveReqVO updateReqVO); + + /** + * 删除ERP库位 + * + * @param id 编号 + */ + void deleteErpWarehouse(Long id); + + /** + * 批量删除ERP库位 + * + * @param ids 编号 + */ + void deleteErpWarehouseListByIds(List ids); + + /** + * 获得ERP库位 + * + * @param id 编号 + * @return ERP库位 + */ + ErpWarehouseDO getErpWarehouse(Long id); + + /** + * 获得ERP库位分页 + * + * @param pageReqVO 分页查询 + * @return ERP库位分页 + */ + PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java new file mode 100644 index 0000000..dee3abe --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpWarehouseServiceImpl.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.*; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpWarehouseDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpWarehouseMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; + +/** + * ERP库位 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpWarehouseServiceImpl implements ErpWarehouseService { + + @Resource + private ErpWarehouseMapper erpWarehouseMapper; + + @Override + public ErpWarehouseRespVO createErpWarehouse(ErpWarehouseSaveReqVO createReqVO) { + // 插入 + ErpWarehouseDO erpWarehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); + erpWarehouseMapper.insert(erpWarehouse); + // 返回 + return BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class); + } + + @Override + public void updateErpWarehouse(ErpWarehouseSaveReqVO updateReqVO) { + // 校验存在 + validateErpWarehouseExists(updateReqVO.getId()); + // 更新 + ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); + erpWarehouseMapper.updateById(updateObj); + } + + @Override + public void deleteErpWarehouse(Long id) { + // 校验存在 + validateErpWarehouseExists(id); + // 删除 + erpWarehouseMapper.deleteById(id); + } + + @Override + public void deleteErpWarehouseListByIds(List ids) { + // 校验存在 + validateErpWarehouseExists(ids); + // 删除 + erpWarehouseMapper.deleteByIds(ids); + } + + private void validateErpWarehouseExists(List ids) { + List list = erpWarehouseMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } + } + + private void validateErpWarehouseExists(Long id) { + if (erpWarehouseMapper.selectById(id) == null) { + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } + } + + @Override + public ErpWarehouseDO getErpWarehouse(Long id) { + return erpWarehouseMapper.selectById(id); + } + + @Override + public PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO) { + return erpWarehouseMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml new file mode 100644 index 0000000..020682e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml new file mode 100644 index 0000000..0143f61 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml new file mode 100644 index 0000000..809b486 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml new file mode 100644 index 0000000..31ccbe6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml new file mode 100644 index 0000000..2445fba --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml new file mode 100644 index 0000000..5fa8a22 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml new file mode 100644 index 0000000..ac98f4b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml new file mode 100644 index 0000000..6e4eef9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml new file mode 100644 index 0000000..5d62df9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml new file mode 100644 index 0000000..89027f8 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml new file mode 100644 index 0000000..dde5ebd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file