From e5db1db169ea283ac640e197e8097291934bac83 Mon Sep 17 00:00:00 2001 From: siontion Date: Wed, 21 Feb 2024 10:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=96=99=E9=9C=80=E6=B1=82=E8=AE=A1?= =?UTF-8?q?=E5=88=92=20=E6=8E=A5=E5=8F=A3=E5=8F=8A=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 物料需求计划 接口及页面生成 --- .../module/heli/enums/ErrorCodeConstants.java | 3 + .../materialplan/MaterialPlanController.java | 95 ++++++ .../vo/MaterialPlanPageReqVO.java | 54 ++++ .../materialplan/vo/MaterialPlanRespVO.java | 63 ++++ .../vo/MaterialPlanSaveReqVO.java | 46 +++ .../MaterialPlanDetailController.java | 95 ++++++ .../vo/MaterialPlanDetailPageReqVO.java | 44 +++ .../vo/MaterialPlanDetailRespVO.java | 48 +++ .../vo/MaterialPlanDetailSaveReqVO.java | 38 +++ .../materialplan/MaterialPlanDO.java | 71 ++++ .../MaterialPlanDetailDO.java | 56 ++++ .../materialplan/MaterialPlanMapper.java | 36 +++ .../MaterialPlanDetailMapper.java | 33 ++ .../materialplan/MaterialPlanService.java | 55 ++++ .../materialplan/MaterialPlanServiceImpl.java | 74 +++++ .../MaterialPlanDetailService.java | 55 ++++ .../MaterialPlanDetailServiceImpl.java | 74 +++++ .../materialplan/MaterialPlanMapper.xml | 12 + .../MaterialPlanDetailMapper.xml | 12 + .../src/api/heli/materialplan/index.ts | 44 +++ .../src/api/heli/materialplandetail/index.ts | 41 +++ .../heli/materialplan/MaterialPlanForm.vue | 148 +++++++++ .../src/views/heli/materialplan/index.vue | 302 ++++++++++++++++++ 23 files changed, 1499 insertions(+) create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/MaterialPlanDetailController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplan/MaterialPlanDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplandetail/MaterialPlanDetailDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplandetail/MaterialPlanDetailMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplan/MaterialPlanMapper.xml create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplandetail/MaterialPlanDetailMapper.xml create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/materialplandetail/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/MaterialPlanForm.vue create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/index.vue diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index 0fdc18f8..e0cbf1c8 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -60,4 +60,7 @@ public interface ErrorCodeConstants { /************生产计划管理***********/ ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_007_001, "生产计划不存在"); ErrorCode PLAN_SUB_NOT_EXISTS = new ErrorCode(1_007_002, "生产计划子项目不存在"); + /************采购管理***********/ + ErrorCode MATERIAL_PLAN_NOT_EXISTS = new ErrorCode(1_008_001, "物料需求计划不存在"); + ErrorCode MATERIAL_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_008_002, "物料需求计划物料详情不存在"); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java new file mode 100644 index 00000000..af6cc4cf --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; +import com.chanko.yunxi.mes.module.heli.service.materialplan.MaterialPlanService; + +@Tag(name = "管理后台 - 物料需求计划") +@RestController +@RequestMapping("/heli/material-plan") +@Validated +public class MaterialPlanController { + + @Resource + private MaterialPlanService materialPlanService; + + @PostMapping("/create") + @Operation(summary = "创建物料需求计划") + @PreAuthorize("@ss.hasPermission('heli:material-plan:create')") + public CommonResult createMaterialPlan(@Valid @RequestBody MaterialPlanSaveReqVO createReqVO) { + return success(materialPlanService.createMaterialPlan(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料需求计划") + @PreAuthorize("@ss.hasPermission('heli:material-plan:update')") + public CommonResult updateMaterialPlan(@Valid @RequestBody MaterialPlanSaveReqVO updateReqVO) { + materialPlanService.updateMaterialPlan(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料需求计划") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:material-plan:delete')") + public CommonResult deleteMaterialPlan(@RequestParam("id") Long id) { + materialPlanService.deleteMaterialPlan(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料需求计划") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") + public CommonResult getMaterialPlan(@RequestParam("id") Long id) { + MaterialPlanDO materialPlan = materialPlanService.getMaterialPlan(id); + return success(BeanUtils.toBean(materialPlan, MaterialPlanRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料需求计划分页") + @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") + public CommonResult> getMaterialPlanPage(@Valid MaterialPlanPageReqVO pageReqVO) { + PageResult pageResult = materialPlanService.getMaterialPlanPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料需求计划 Excel") + @PreAuthorize("@ss.hasPermission('heli:material-plan:export')") + @OperateLog(type = EXPORT) + public void exportMaterialPlanExcel(@Valid MaterialPlanPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialPlanService.getMaterialPlanPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料需求计划.xls", "数据", MaterialPlanRespVO.class, + BeanUtils.toBean(list, MaterialPlanRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java new file mode 100644 index 00000000..aeda0d14 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanPageReqVO.java @@ -0,0 +1,54 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料需求计划分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MaterialPlanPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "物料计划单号") + private String projectMaterialPlanNo; + + @Schema(description = "订单id") + private Long projectId; + + @Schema(description = "生产计划id") + private Long projectPlanId; + + @Schema(description = "送审人") + private Long submitUserId; + + @Schema(description = "送审时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] submitTime; + + @Schema(description = "审核人") + private Long auditor; + + @Schema(description = "审核时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] auditTime; + + @Schema(description = "状态,1已保存,2已送审,3已审核,4已打回 ,默认是1") + private Integer status; + + @Schema(description = "备注") + private String description; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanRespVO.java new file mode 100644 index 00000000..fa649020 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanRespVO.java @@ -0,0 +1,63 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 物料需求计划 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MaterialPlanRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "物料计划单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料计划单号") + private String projectMaterialPlanNo; + + @Schema(description = "订单id") + @ExcelProperty("订单id") + private Long projectId; + + @Schema(description = "生产计划id") + @ExcelProperty("生产计划id") + private Long projectPlanId; + + @Schema(description = "送审人") + @ExcelProperty("送审人") + private Long submitUserId; + + @Schema(description = "送审时间") + @ExcelProperty("送审时间") + private LocalDateTime submitTime; + + @Schema(description = "审核人") + @ExcelProperty("审核人") + private Long auditor; + + @Schema(description = "审核时间") + @ExcelProperty("审核时间") + private LocalDateTime auditTime; + + @Schema(description = "状态,1已保存,2已送审,3已审核,4已打回 ,默认是1") + @ExcelProperty(value = "状态,1已保存,2已送审,3已审核,4已打回 ,默认是1", converter = DictConvert.class) + @DictFormat("heli_project_material_plan_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer status; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String description; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanSaveReqVO.java new file mode 100644 index 00000000..339421f1 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/vo/MaterialPlanSaveReqVO.java @@ -0,0 +1,46 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 物料需求计划新增/修改 Request VO") +@Data +public class MaterialPlanSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "物料计划单号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料计划单号不能为空") + private String projectMaterialPlanNo; + + @Schema(description = "订单id") + private Long projectId; + + @Schema(description = "生产计划id") + private Long projectPlanId; + + @Schema(description = "送审人") + private Long submitUserId; + + @Schema(description = "送审时间") + private LocalDateTime submitTime; + + @Schema(description = "审核人") + private Long auditor; + + @Schema(description = "审核时间") + private LocalDateTime auditTime; + + @Schema(description = "状态,1已保存,2已送审,3已审核,4已打回 ,默认是1") + private Integer status; + + @Schema(description = "备注") + private String description; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/MaterialPlanDetailController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/MaterialPlanDetailController.java new file mode 100644 index 00000000..45fcc896 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/MaterialPlanDetailController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail; + +import org.springframework.web.bind.annotation.*; +import javax.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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; +import com.chanko.yunxi.mes.module.heli.service.materialplandetail.MaterialPlanDetailService; + +@Tag(name = "管理后台 - 物料需求计划物料详情") +@RestController +@RequestMapping("/heli/material-plan-detail") +@Validated +public class MaterialPlanDetailController { + + @Resource + private MaterialPlanDetailService materialPlanDetailService; + + @PostMapping("/create") + @Operation(summary = "创建物料需求计划物料详情") + @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:create')") + public CommonResult createMaterialPlanDetail(@Valid @RequestBody MaterialPlanDetailSaveReqVO createReqVO) { + return success(materialPlanDetailService.createMaterialPlanDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新物料需求计划物料详情") + @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:update')") + public CommonResult updateMaterialPlanDetail(@Valid @RequestBody MaterialPlanDetailSaveReqVO updateReqVO) { + materialPlanDetailService.updateMaterialPlanDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除物料需求计划物料详情") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:delete')") + public CommonResult deleteMaterialPlanDetail(@RequestParam("id") Long id) { + materialPlanDetailService.deleteMaterialPlanDetail(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得物料需求计划物料详情") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')") + public CommonResult getMaterialPlanDetail(@RequestParam("id") Long id) { + MaterialPlanDetailDO materialPlanDetail = materialPlanDetailService.getMaterialPlanDetail(id); + return success(BeanUtils.toBean(materialPlanDetail, MaterialPlanDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得物料需求计划物料详情分页") + @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')") + public CommonResult> getMaterialPlanDetailPage(@Valid MaterialPlanDetailPageReqVO pageReqVO) { + PageResult pageResult = materialPlanDetailService.getMaterialPlanDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MaterialPlanDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出物料需求计划物料详情 Excel") + @PreAuthorize("@ss.hasPermission('heli:material-plan-detail:export')") + @OperateLog(type = EXPORT) + public void exportMaterialPlanDetailExcel(@Valid MaterialPlanDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = materialPlanDetailService.getMaterialPlanDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "物料需求计划物料详情.xls", "数据", MaterialPlanDetailRespVO.class, + BeanUtils.toBean(list, MaterialPlanDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailPageReqVO.java new file mode 100644 index 00000000..cbd4794b --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailPageReqVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料需求计划物料详情分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MaterialPlanDetailPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "物料需求采购计划id") + private Long projectMaterialPlanId; + + @Schema(description = "物料id") + private Long materialId; + + @Schema(description = "子项目编号") + private Long projectSubId; + + @Schema(description = "需求数量") + private Long requireAmount; + + @Schema(description = "需求到货日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] requireArriveTime; + + @Schema(description = "备注") + private String description; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailRespVO.java new file mode 100644 index 00000000..a95fcb32 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailRespVO.java @@ -0,0 +1,48 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +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 MaterialPlanDetailRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "物料需求采购计划id", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料需求采购计划id") + private Long projectMaterialPlanId; + + @Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料id") + private Long materialId; + + @Schema(description = "子项目编号") + @ExcelProperty("子项目编号") + private Long projectSubId; + + @Schema(description = "需求数量") + @ExcelProperty("需求数量") + private Long requireAmount; + + @Schema(description = "需求到货日期") + @ExcelProperty("需求到货日期") + private LocalDateTime requireArriveTime; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String description; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailSaveReqVO.java new file mode 100644 index 00000000..53459f82 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplandetail/vo/MaterialPlanDetailSaveReqVO.java @@ -0,0 +1,38 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 物料需求计划物料详情新增/修改 Request VO") +@Data +public class MaterialPlanDetailSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "物料需求采购计划id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "物料需求采购计划id不能为空") + private Long projectMaterialPlanId; + + @Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "物料id不能为空") + private Long materialId; + + @Schema(description = "子项目编号") + private Long projectSubId; + + @Schema(description = "需求数量") + private Long requireAmount; + + @Schema(description = "需求到货日期") + private LocalDateTime requireArriveTime; + + @Schema(description = "备注") + private String description; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplan/MaterialPlanDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplan/MaterialPlanDO.java new file mode 100644 index 00000000..c0a198cd --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplan/MaterialPlanDO.java @@ -0,0 +1,71 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 物料需求计划 DO + * + * @author 管理员 + */ +@TableName("project_material_plan") +@KeySequence("project_material_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MaterialPlanDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 物料计划单号 + */ + private String projectMaterialPlanNo; + /** + * 订单id + */ + private Long projectId; + /** + * 生产计划id + */ + private Long projectPlanId; + /** + * 送审人 + */ + private Long submitUserId; + /** + * 送审时间 + */ + private LocalDateTime submitTime; + /** + * 审核人 + */ + private Long auditor; + /** + * 审核时间 + */ + private LocalDateTime auditTime; + /** + * 状态,1已保存,2已送审,3已审核,4已打回 ,默认是1 + * + * 枚举 {@link TODO heli_project_material_plan_status 对应的类} + */ + private Integer status; + /** + * 备注 + */ + private String description; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplandetail/MaterialPlanDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplandetail/MaterialPlanDetailDO.java new file mode 100644 index 00000000..008ce135 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplandetail/MaterialPlanDetailDO.java @@ -0,0 +1,56 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 物料需求计划物料详情 DO + * + * @author 管理员 + */ +@TableName("project_material_plan_detail") +@KeySequence("project_material_plan_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MaterialPlanDetailDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 物料需求采购计划id + */ + private Long projectMaterialPlanId; + /** + * 物料id + */ + private Long materialId; + /** + * 子项目编号 + */ + private Long projectSubId; + /** + * 需求数量 + */ + private Long requireAmount; + /** + * 需求到货日期 + */ + private LocalDateTime requireArriveTime; + /** + * 备注 + */ + private String description; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java new file mode 100644 index 00000000..fecc74e9 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplan/MaterialPlanMapper.java @@ -0,0 +1,36 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*; + +/** + * 物料需求计划 Mapper + * + * @author 管理员 + */ +@Mapper +public interface MaterialPlanMapper extends BaseMapperX { + + default PageResult selectPage(MaterialPlanPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialPlanDO::getId, reqVO.getId()) + .likeIfPresent(MaterialPlanDO::getProjectMaterialPlanNo, reqVO.getProjectMaterialPlanNo()) + .eqIfPresent(MaterialPlanDO::getProjectId, reqVO.getProjectId()) + .eqIfPresent(MaterialPlanDO::getProjectPlanId, reqVO.getProjectPlanId()) + .eqIfPresent(MaterialPlanDO::getSubmitUserId, reqVO.getSubmitUserId()) + .betweenIfPresent(MaterialPlanDO::getSubmitTime, reqVO.getSubmitTime()) + .eqIfPresent(MaterialPlanDO::getAuditor, reqVO.getAuditor()) + .betweenIfPresent(MaterialPlanDO::getAuditTime, reqVO.getAuditTime()) + .eqIfPresent(MaterialPlanDO::getStatus, reqVO.getStatus()) + .eqIfPresent(MaterialPlanDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(MaterialPlanDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialPlanDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplandetail/MaterialPlanDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplandetail/MaterialPlanDetailMapper.java new file mode 100644 index 00000000..a66c374d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplandetail/MaterialPlanDetailMapper.java @@ -0,0 +1,33 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*; + +/** + * 物料需求计划物料详情 Mapper + * + * @author 管理员 + */ +@Mapper +public interface MaterialPlanDetailMapper extends BaseMapperX { + + default PageResult selectPage(MaterialPlanDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MaterialPlanDetailDO::getId, reqVO.getId()) + .eqIfPresent(MaterialPlanDetailDO::getProjectMaterialPlanId, reqVO.getProjectMaterialPlanId()) + .eqIfPresent(MaterialPlanDetailDO::getMaterialId, reqVO.getMaterialId()) + .eqIfPresent(MaterialPlanDetailDO::getProjectSubId, reqVO.getProjectSubId()) + .eqIfPresent(MaterialPlanDetailDO::getRequireAmount, reqVO.getRequireAmount()) + .betweenIfPresent(MaterialPlanDetailDO::getRequireArriveTime, reqVO.getRequireArriveTime()) + .eqIfPresent(MaterialPlanDetailDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(MaterialPlanDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MaterialPlanDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java new file mode 100644 index 00000000..4b2a60b4 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.service.materialplan; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 物料需求计划 Service 接口 + * + * @author 管理员 + */ +public interface MaterialPlanService { + + /** + * 创建物料需求计划 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMaterialPlan(@Valid MaterialPlanSaveReqVO createReqVO); + + /** + * 更新物料需求计划 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialPlan(@Valid MaterialPlanSaveReqVO updateReqVO); + + /** + * 删除物料需求计划 + * + * @param id 编号 + */ + void deleteMaterialPlan(Long id); + + /** + * 获得物料需求计划 + * + * @param id 编号 + * @return 物料需求计划 + */ + MaterialPlanDO getMaterialPlan(Long id); + + /** + * 获得物料需求计划分页 + * + * @param pageReqVO 分页查询 + * @return 物料需求计划分页 + */ + PageResult getMaterialPlanPage(MaterialPlanPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java new file mode 100644 index 00000000..4478920d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.heli.service.materialplan; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 物料需求计划 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class MaterialPlanServiceImpl implements MaterialPlanService { + + @Resource + private MaterialPlanMapper materialPlanMapper; + + @Override + public Long createMaterialPlan(MaterialPlanSaveReqVO createReqVO) { + // 插入 + MaterialPlanDO materialPlan = BeanUtils.toBean(createReqVO, MaterialPlanDO.class); + materialPlanMapper.insert(materialPlan); + // 返回 + return materialPlan.getId(); + } + + @Override + public void updateMaterialPlan(MaterialPlanSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialPlanExists(updateReqVO.getId()); + // 更新 + MaterialPlanDO updateObj = BeanUtils.toBean(updateReqVO, MaterialPlanDO.class); + materialPlanMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialPlan(Long id) { + // 校验存在 + validateMaterialPlanExists(id); + // 删除 + materialPlanMapper.deleteById(id); + } + + private void validateMaterialPlanExists(Long id) { + if (materialPlanMapper.selectById(id) == null) { + throw exception(MATERIAL_PLAN_NOT_EXISTS); + } + } + + @Override + public MaterialPlanDO getMaterialPlan(Long id) { + return materialPlanMapper.selectById(id); + } + + @Override + public PageResult getMaterialPlanPage(MaterialPlanPageReqVO pageReqVO) { + return materialPlanMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailService.java new file mode 100644 index 00000000..c498f742 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.service.materialplandetail; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 物料需求计划物料详情 Service 接口 + * + * @author 管理员 + */ +public interface MaterialPlanDetailService { + + /** + * 创建物料需求计划物料详情 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMaterialPlanDetail(@Valid MaterialPlanDetailSaveReqVO createReqVO); + + /** + * 更新物料需求计划物料详情 + * + * @param updateReqVO 更新信息 + */ + void updateMaterialPlanDetail(@Valid MaterialPlanDetailSaveReqVO updateReqVO); + + /** + * 删除物料需求计划物料详情 + * + * @param id 编号 + */ + void deleteMaterialPlanDetail(Long id); + + /** + * 获得物料需求计划物料详情 + * + * @param id 编号 + * @return 物料需求计划物料详情 + */ + MaterialPlanDetailDO getMaterialPlanDetail(Long id); + + /** + * 获得物料需求计划物料详情分页 + * + * @param pageReqVO 分页查询 + * @return 物料需求计划物料详情分页 + */ + PageResult getMaterialPlanDetailPage(MaterialPlanDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailServiceImpl.java new file mode 100644 index 00000000..cd3ecc70 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplandetail/MaterialPlanDetailServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.heli.service.materialplandetail; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail.MaterialPlanDetailMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 物料需求计划物料详情 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class MaterialPlanDetailServiceImpl implements MaterialPlanDetailService { + + @Resource + private MaterialPlanDetailMapper materialPlanDetailMapper; + + @Override + public Long createMaterialPlanDetail(MaterialPlanDetailSaveReqVO createReqVO) { + // 插入 + MaterialPlanDetailDO materialPlanDetail = BeanUtils.toBean(createReqVO, MaterialPlanDetailDO.class); + materialPlanDetailMapper.insert(materialPlanDetail); + // 返回 + return materialPlanDetail.getId(); + } + + @Override + public void updateMaterialPlanDetail(MaterialPlanDetailSaveReqVO updateReqVO) { + // 校验存在 + validateMaterialPlanDetailExists(updateReqVO.getId()); + // 更新 + MaterialPlanDetailDO updateObj = BeanUtils.toBean(updateReqVO, MaterialPlanDetailDO.class); + materialPlanDetailMapper.updateById(updateObj); + } + + @Override + public void deleteMaterialPlanDetail(Long id) { + // 校验存在 + validateMaterialPlanDetailExists(id); + // 删除 + materialPlanDetailMapper.deleteById(id); + } + + private void validateMaterialPlanDetailExists(Long id) { + if (materialPlanDetailMapper.selectById(id) == null) { + throw exception(MATERIAL_PLAN_DETAIL_NOT_EXISTS); + } + } + + @Override + public MaterialPlanDetailDO getMaterialPlanDetail(Long id) { + return materialPlanDetailMapper.selectById(id); + } + + @Override + public PageResult getMaterialPlanDetailPage(MaterialPlanDetailPageReqVO pageReqVO) { + return materialPlanDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplan/MaterialPlanMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplan/MaterialPlanMapper.xml new file mode 100644 index 00000000..0e4fd5e2 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplan/MaterialPlanMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplandetail/MaterialPlanDetailMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplandetail/MaterialPlanDetailMapper.xml new file mode 100644 index 00000000..1df22a9c --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/materialplandetail/MaterialPlanDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts new file mode 100644 index 00000000..af2de459 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplan/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +export interface MaterialPlanVO { + id: number + projectMaterialPlanNo: string + projectId: number + projectPlanId: number + submitUserId: number + submitTime: Date + auditor: number + auditTime: Date + status: number + description: string +} + +// 查询物料需求计划分页 +export const getMaterialPlanPage = async (params) => { + return await request.get({ url: `/heli/material-plan/page`, params }) +} + +// 查询物料需求计划详情 +export const getMaterialPlan = async (id: number) => { + return await request.get({ url: `/heli/material-plan/get?id=` + id }) +} + +// 新增物料需求计划 +export const createMaterialPlan = async (data: MaterialPlanVO) => { + return await request.post({ url: `/heli/material-plan/create`, data }) +} + +// 修改物料需求计划 +export const updateMaterialPlan = async (data: MaterialPlanVO) => { + return await request.put({ url: `/heli/material-plan/update`, data }) +} + +// 删除物料需求计划 +export const deleteMaterialPlan = async (id: number) => { + return await request.delete({ url: `/heli/material-plan/delete?id=` + id }) +} + +// 导出物料需求计划 Excel +export const exportMaterialPlan = async (params) => { + return await request.download({ url: `/heli/material-plan/export-excel`, params }) +} \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplandetail/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplandetail/index.ts new file mode 100644 index 00000000..63680ab3 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplandetail/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +export interface MaterialPlanDetailVO { + id: number + projectMaterialPlanId: number + materialId: number + projectSubId: number + requireAmount: number + requireArriveTime: Date + description: string +} + +// 查询物料需求计划物料详情分页 +export const getMaterialPlanDetailPage = async (params) => { + return await request.get({ url: `/heli/material-plan-detail/page`, params }) +} + +// 查询物料需求计划物料详情详情 +export const getMaterialPlanDetail = async (id: number) => { + return await request.get({ url: `/heli/material-plan-detail/get?id=` + id }) +} + +// 新增物料需求计划物料详情 +export const createMaterialPlanDetail = async (data: MaterialPlanDetailVO) => { + return await request.post({ url: `/heli/material-plan-detail/create`, data }) +} + +// 修改物料需求计划物料详情 +export const updateMaterialPlanDetail = async (data: MaterialPlanDetailVO) => { + return await request.put({ url: `/heli/material-plan-detail/update`, data }) +} + +// 删除物料需求计划物料详情 +export const deleteMaterialPlanDetail = async (id: number) => { + return await request.delete({ url: `/heli/material-plan-detail/delete?id=` + id }) +} + +// 导出物料需求计划物料详情 Excel +export const exportMaterialPlanDetail = async (params) => { + return await request.download({ url: `/heli/material-plan-detail/export-excel`, params }) +} \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/MaterialPlanForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/MaterialPlanForm.vue new file mode 100644 index 00000000..a41095ea --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/MaterialPlanForm.vue @@ -0,0 +1,148 @@ + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/index.vue new file mode 100644 index 00000000..e7f6466b --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/index.vue @@ -0,0 +1,302 @@ + + + \ No newline at end of file