From f631d8834edad8e75e644de2c632df621c5ce212 Mon Sep 17 00:00:00 2001 From: zengchenxi Date: Wed, 17 Jan 2024 18:20:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=AE=A2=E5=8D=95=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E3=80=91=E5=AE=8C=E6=88=90=E5=9F=BA=E7=A1=80=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/heli/enums/BusinesTypeEnum.java | 2 +- .../module/heli/enums/ErrorCodeConstants.java | 5 + .../projectorder/ProjectOrderController.java | 106 +++ .../vo/ProjectOrderPageReqVO.java | 107 +++ .../projectorder/vo/ProjectOrderRespVO.java | 146 +++ .../vo/ProjectOrderSaveReqVO.java | 122 +++ .../projectorder/ProjectOrderDO.java | 165 ++++ .../projectorder/ProjectOrderSubDO.java | 63 ++ .../projectorder/ProjectOrderMapper.java | 51 + .../projectorder/ProjectOrderSubMapper.java | 28 + .../projectorder/ProjectOrderService.java | 66 ++ .../projectorder/ProjectOrderServiceImpl.java | 112 +++ .../projectorder/ProjectOrderMapper.xml | 12 + mes-server/pom.xml | 6 +- .../src/api/heli/projectorder/index.ts | 69 ++ .../src/api/infra/file/index.ts | 5 + mes-ui/mes-ui-admin-vue3/src/utils/dict.ts | 8 + .../mes-ui-admin-vue3/src/utils/download.ts | 4 + .../src/views/heli/projectorder/detail.vue | 868 ++++++++++++++++++ .../src/views/heli/projectorder/index.vue | 328 +++++++ sql/v1.1.0/heli.sql | 5 +- 21 files changed, 2275 insertions(+), 3 deletions(-) create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/projectorder/ProjectOrderMapper.xml create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/detail.vue create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/index.vue diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinesTypeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinesTypeEnum.java index dedd27b9..d8650bfb 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinesTypeEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/BusinesTypeEnum.java @@ -10,7 +10,7 @@ import lombok.Getter; @Getter public enum BusinesTypeEnum { - SALE_ORDER("销售订单"); + PROJECT_ORDER("销售订单"); private String description; 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 f3863eaf..fb1821b4 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 @@ -13,6 +13,8 @@ import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; * 000 通用 * 001 基础信息 * 002 组织架构 + * 003 库存管理 + * 004 订单管理 * 第三段,3 位,错误码 */ public interface ErrorCodeConstants { @@ -38,4 +40,7 @@ public interface ErrorCodeConstants { ErrorCode PN_NOT_EXISTS = new ErrorCode(1_003_003, "库位不存在"); ErrorCode STORAGE_NOT_EXISTS = new ErrorCode(1_003_004,"库存不存在"); + /************订单管理***********/ + ErrorCode PROJECT_ORDER_NOT_EXISTS = new ErrorCode(1_004_001, "项目订单不存在"); + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java new file mode 100644 index 00000000..7e16cd9d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java @@ -0,0 +1,106 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder; + +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.projectorder.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService; + +@Tag(name = "管理后台 - 项目订单") +@RestController +@RequestMapping("/heli/project-order") +@Validated +public class ProjectOrderController { + + @Resource + private ProjectOrderService projectOrderService; + + @PostMapping("/create") + @Operation(summary = "创建项目订单") + @PreAuthorize("@ss.hasPermission('heli:project-order:create')") + public CommonResult createProjectOrder(@Valid @RequestBody ProjectOrderSaveReqVO createReqVO) { + return success(projectOrderService.createProjectOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新项目订单") + @PreAuthorize("@ss.hasPermission('heli:project-order:update')") + public CommonResult updateProjectOrder(@Valid @RequestBody ProjectOrderSaveReqVO updateReqVO) { + projectOrderService.updateProjectOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除项目订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:project-order:delete')") + public CommonResult deleteProjectOrder(@RequestParam("id") Long id) { + projectOrderService.deleteProjectOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得项目订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:project-order:query')") + public CommonResult getProjectOrder(@RequestParam("id") Long id) { + ProjectOrderDO projectOrder = projectOrderService.getProjectOrder(id); + return success(BeanUtils.toBean(projectOrder, ProjectOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得项目订单分页") + @PreAuthorize("@ss.hasPermission('heli:project-order:query')") + public CommonResult> getProjectOrderPage(@Valid ProjectOrderPageReqVO pageReqVO) { + PageResult pageResult = projectOrderService.getProjectOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProjectOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出项目订单 Excel") + @PreAuthorize("@ss.hasPermission('heli:project-order:export')") + @OperateLog(type = EXPORT) + public void exportProjectOrderExcel(@Valid ProjectOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = projectOrderService.getProjectOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "项目订单.xls", "数据", ProjectOrderRespVO.class, + BeanUtils.toBean(list, ProjectOrderRespVO.class)); + } + + // ==================== 子表(项目订单子项目) ==================== + + @GetMapping("/project-order-sub/list-by-project-order-id") + @Operation(summary = "获得项目订单子项目列表") + @Parameter(name = "projectOrderId", description = "项目订单id") + @PreAuthorize("@ss.hasPermission('heli:project-order:query')") + public CommonResult> getProjectOrderSubListByProjectOrderId(@RequestParam("projectOrderId") Long projectOrderId) { + return success(projectOrderService.getProjectOrderSubListByProjectOrderId(projectOrderId)); + } + +} \ 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/projectorder/vo/ProjectOrderPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java new file mode 100644 index 00000000..4c1e3046 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderPageReqVO.java @@ -0,0 +1,107 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 ProjectOrderPageReqVO extends PageParam { + + @Schema(description = "项目编号,唯一") + private String code; + + @Schema(description = "单据状态 已保存/已送审/已审核/已启动/已打回/已终止", example = "1") + private Integer orderStatus; + + @Schema(description = "发货状态 未发货/部分发货/全部发货", example = "1") + private Integer deliveryStatus; + + @Schema(description = "提出部门id", example = "9959") + private Long businessDeptId; + + @Schema(description = "客户id", example = "27214") + private Long customerId; + + @Schema(description = "模具名称", example = "赵六") + private String mouldName; + + @Schema(description = "业务线") + private String businessLine; + + @Schema(description = "图号") + private String blueprintNo; + + @Schema(description = "是否有价格", example = "28491") + private Integer hasPrice; + + @Schema(description = "价格 保留四位小数", example = "24218") + private BigDecimal price; + + @Schema(description = "币种") + private String currency; + + @Schema(description = "项目开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] projectStartTime; + + @Schema(description = "项目结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] projectEndTime; + + @Schema(description = "是否紧急") + private Integer isUrgency; + + @Schema(description = "性质 新制|维修") + private Integer property; + + @Schema(description = "可引用的原有技术") + private String referenceTechnology; + + @Schema(description = "是否已变更") + private Integer hasAlter; + + @Schema(description = "上一次变更时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] lastAlterTime; + + @Schema(description = "检验要求") + private String qualityRequirement; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "有无合同") + private Integer hasContract; + + @Schema(description = "有无技术协议") + private Integer hasTechnologyProtocol; + + @Schema(description = "有无图纸/数模") + private Integer hasBlueprint; + + @Schema(description = "图纸/数模 说明", example = "你猜") + private String blueprintRemark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "1") + private Integer status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "合同编号") + private String contractNo; + + @Schema(description = "业务员") + private Long businessMan; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java new file mode 100644 index 00000000..f67965f9 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderRespVO.java @@ -0,0 +1,146 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +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 ProjectOrderRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "17481") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "项目编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目编号,唯一") + private String code; + + @Schema(description = "单据状态 已保存/已送审/已审核/已启动/已打回/已终止", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty(value = "单据状态 已保存/已送审/已审核/已启动/已打回/已终止", converter = DictConvert.class) + @DictFormat("heli_project_order_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer orderStatus; + + @Schema(description = "发货状态 未发货/部分发货/全部发货", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty(value = "发货状态 未发货/部分发货/全部发货", converter = DictConvert.class) + @DictFormat("heli_delivery_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer deliveryStatus; + + @Schema(description = "提出部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9959") + @ExcelProperty("提出部门id") + private Long businessDeptId; + + @Schema(description = "客户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27214") + @ExcelProperty("客户id") + private Long customerId; + + @Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("模具名称") + private String mouldName; + + @Schema(description = "业务线", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "业务线", converter = DictConvert.class) + @DictFormat("heli_business_line") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String businessLine; + + @Schema(description = "图号") + @ExcelProperty("图号") + private String blueprintNo; + + @Schema(description = "是否有价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "28491") + @ExcelProperty(value = "是否有价格", converter = DictConvert.class) + @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer hasPrice; + + @Schema(description = "价格 保留四位小数", example = "24218") + @ExcelProperty("价格 保留四位小数") + private BigDecimal price; + + @Schema(description = "币种") + @ExcelProperty(value = "币种", converter = DictConvert.class) + @DictFormat("heli_currency") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String currency; + + @Schema(description = "项目开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目开始时间") + private LocalDateTime projectStartTime; + + @Schema(description = "项目结束时间") + @ExcelProperty("项目结束时间") + private LocalDateTime projectEndTime; + + @Schema(description = "是否紧急", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "是否紧急", converter = DictConvert.class) + @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer isUrgency; + + @Schema(description = "性质 新制|维修", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "性质 新制|维修", converter = DictConvert.class) + @DictFormat("heli_project_property") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer property; + + @Schema(description = "可引用的原有技术") + @ExcelProperty("可引用的原有技术") + private String referenceTechnology; + + @Schema(description = "是否已变更", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "是否已变更", converter = DictConvert.class) + @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer hasAlter; + + @Schema(description = "上一次变更时间") + @ExcelProperty("上一次变更时间") + private LocalDateTime lastAlterTime; + + @Schema(description = "检验要求") + @ExcelProperty("检验要求") + private String qualityRequirement; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "有无合同", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "有无合同", converter = DictConvert.class) + @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer hasContract; + + @Schema(description = "有无技术协议", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "有无技术协议", converter = DictConvert.class) + @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer hasTechnologyProtocol; + + @Schema(description = "有无图纸/数模", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "有无图纸/数模", converter = DictConvert.class) + @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer hasBlueprint; + + @Schema(description = "图纸/数模 说明", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @ExcelProperty("图纸/数模 说明") + private String blueprintRemark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Integer status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "业务员", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("业务员") + private Long businessMan; + + @Schema(description = "合同编号") + @ExcelProperty("合同编号") + private String contractNo; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java new file mode 100644 index 00000000..87c5a761 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java @@ -0,0 +1,122 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub.ProjectOrderSubDO; + +@Schema(description = "管理后台 - 项目订单新增/修改 Request VO") +@Data +public class ProjectOrderSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "17481") + private Long id; + + @Schema(description = "项目编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目编号,唯一不能为空") + private String code; + + @Schema(description = "单据状态 已保存/已送审/已审核/已启动/已打回/已终止", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "单据状态 已保存/已送审/已审核/已启动/已打回/已终止不能为空") + private Integer orderStatus; + + @Schema(description = "发货状态 未发货/部分发货/全部发货", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "发货状态 未发货/部分发货/全部发货不能为空") + private Integer deliveryStatus; + + @Schema(description = "提出部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9959") + @NotNull(message = "提出部门id不能为空") + private Long businessDeptId; + + @Schema(description = "客户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27214") + @NotNull(message = "客户id不能为空") + private Long customerId; + + @Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "模具名称不能为空") + private String mouldName; + + @Schema(description = "业务线", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "业务线不能为空") + private String businessLine; + + @Schema(description = "图号") + private String blueprintNo; + + @Schema(description = "是否有价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "28491") + @NotNull(message = "是否有价格不能为空") + private Integer hasPrice; + + @Schema(description = "价格 保留四位小数", example = "24218") + private BigDecimal price; + + @Schema(description = "币种") + private String currency; + + @Schema(description = "项目开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "项目开始时间不能为空") + private LocalDateTime projectStartTime; + + @Schema(description = "项目结束时间") + private LocalDateTime projectEndTime; + + @Schema(description = "是否紧急", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否紧急不能为空") + private Integer isUrgency; + + @Schema(description = "性质 新制|维修", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "性质 新制|维修不能为空") + private Integer property; + + @Schema(description = "可引用的原有技术") + private String referenceTechnology; + + @Schema(description = "是否已变更", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否已变更不能为空") + private Integer hasAlter; + + @Schema(description = "上一次变更时间") + private LocalDateTime lastAlterTime; + + @Schema(description = "检验要求") + private String qualityRequirement; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "有无合同", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "有无合同不能为空") + private Integer hasContract; + + @Schema(description = "有无技术协议", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "有无技术协议不能为空") + private Integer hasTechnologyProtocol; + + @Schema(description = "有无图纸/数模", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "有无图纸/数模不能为空") + private Integer hasBlueprint; + + @Schema(description = "图纸/数模 说明", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜") + @NotEmpty(message = "图纸/数模 说明不能为空") + private String blueprintRemark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Integer status; + + @Schema(description = "业务员", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "业务员不能为空") + private Long businessMan; + + @Schema(description = "合同编号") + private String contractNo; + + @Schema(description = "项目订单子项目列表") + private List projectOrderSubs; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java new file mode 100644 index 00000000..cfe59fdb --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java @@ -0,0 +1,165 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +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_order") +@KeySequence("project_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProjectOrderDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 项目编号,唯一 + */ + private String code; + /** + * 单据状态 已保存/已送审/已审核/已启动/已打回/已终止 + * + * 枚举 {@link TODO heli_project_order_status 对应的类} + */ + private Integer orderStatus; + /** + * 发货状态 未发货/部分发货/全部发货 + * + * 枚举 {@link TODO heli_delivery_status 对应的类} + */ + private Integer deliveryStatus; + /** + * 提出部门id + */ + private Long businessDeptId; + /** + * 客户id + */ + private Long customerId; + /** + * 模具名称 + */ + private String mouldName; + /** + * 业务线 + * + * 枚举 {@link TODO heli_business_line 对应的类} + */ + private String businessLine; + /** + * 图号 + */ + private String blueprintNo; + /** + * 是否有价格 + * + * 枚举 {@link TODO heli_common_is_or_not 对应的类} + */ + private Integer hasPrice; + /** + * 价格 保留四位小数 + */ + private BigDecimal price; + /** + * 币种 + * + * 枚举 {@link TODO heli_currency 对应的类} + */ + private String currency; + /** + * 项目开始时间 + */ + private LocalDateTime projectStartTime; + /** + * 项目结束时间 + */ + private LocalDateTime projectEndTime; + /** + * 是否紧急 + * + * 枚举 {@link TODO heli_common_is_or_not 对应的类} + */ + private Integer isUrgency; + /** + * 性质 新制|维修 + * + * 枚举 {@link TODO heli_project_property 对应的类} + */ + private Integer property; + /** + * 可引用的原有技术 + */ + private String referenceTechnology; + /** + * 是否已变更 + * + * 枚举 {@link TODO heli_common_is_or_not 对应的类} + */ + private Integer hasAlter; + /** + * 上一次变更时间 + */ + private LocalDateTime lastAlterTime; + /** + * 检验要求 + */ + private String qualityRequirement; + /** + * 备注 + */ + private String remark; + /** + * 有无合同 + * + * 枚举 {@link TODO heli_common_is_or_not 对应的类} + */ + private Integer hasContract; + /** + * 有无技术协议 + * + * 枚举 {@link TODO heli_common_is_or_not 对应的类} + */ + private Integer hasTechnologyProtocol; + /** + * 有无图纸/数模 + * + * 枚举 {@link TODO heli_common_is_or_not 对应的类} + */ + private Integer hasBlueprint; + /** + * 图纸/数模 说明 + */ + private String blueprintRemark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Integer status; + /** + * 业务员 + */ + private Long businessMan; + /** + * 合同编号 + */ + private String contractNo; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java new file mode 100644 index 00000000..c744dada --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderSubDO.java @@ -0,0 +1,63 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub; + +import lombok.*; +import java.util.*; +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_order_sub") +@KeySequence("project_order_sub_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProjectOrderSubDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 项目订单id + */ + private Long projectOrderId; + /** + * 子项目名称,唯一 + */ + private String name; + /** + * 设备型号 + */ + private String deviceModel; + /** + * 数量 + */ + private Integer amount; + /** + * 材质 + */ + private Long compositionId; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Boolean status; + /** + * 单位 + */ + private String unit; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java new file mode 100644 index 00000000..07dfcc63 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java @@ -0,0 +1,51 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderPageReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 项目订单 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProjectOrderMapper extends BaseMapperX { + + default PageResult selectPage(ProjectOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProjectOrderDO::getCode, reqVO.getCode()) + .eqIfPresent(ProjectOrderDO::getOrderStatus, reqVO.getOrderStatus()) + .eqIfPresent(ProjectOrderDO::getDeliveryStatus, reqVO.getDeliveryStatus()) + .eqIfPresent(ProjectOrderDO::getBusinessDeptId, reqVO.getBusinessDeptId()) + .eqIfPresent(ProjectOrderDO::getCustomerId, reqVO.getCustomerId()) + .likeIfPresent(ProjectOrderDO::getMouldName, reqVO.getMouldName()) + .eqIfPresent(ProjectOrderDO::getBusinessLine, reqVO.getBusinessLine()) + .eqIfPresent(ProjectOrderDO::getBlueprintNo, reqVO.getBlueprintNo()) + .eqIfPresent(ProjectOrderDO::getHasPrice, reqVO.getHasPrice()) + .eqIfPresent(ProjectOrderDO::getPrice, reqVO.getPrice()) + .eqIfPresent(ProjectOrderDO::getCurrency, reqVO.getCurrency()) + .betweenIfPresent(ProjectOrderDO::getProjectStartTime, reqVO.getProjectStartTime()) + .betweenIfPresent(ProjectOrderDO::getProjectEndTime, reqVO.getProjectEndTime()) + .eqIfPresent(ProjectOrderDO::getIsUrgency, reqVO.getIsUrgency()) + .eqIfPresent(ProjectOrderDO::getProperty, reqVO.getProperty()) + .eqIfPresent(ProjectOrderDO::getReferenceTechnology, reqVO.getReferenceTechnology()) + .eqIfPresent(ProjectOrderDO::getHasAlter, reqVO.getHasAlter()) + .betweenIfPresent(ProjectOrderDO::getLastAlterTime, reqVO.getLastAlterTime()) + .eqIfPresent(ProjectOrderDO::getQualityRequirement, reqVO.getQualityRequirement()) + .eqIfPresent(ProjectOrderDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ProjectOrderDO::getHasContract, reqVO.getHasContract()) + .eqIfPresent(ProjectOrderDO::getHasTechnologyProtocol, reqVO.getHasTechnologyProtocol()) + .eqIfPresent(ProjectOrderDO::getHasBlueprint, reqVO.getHasBlueprint()) + .eqIfPresent(ProjectOrderDO::getBlueprintRemark, reqVO.getBlueprintRemark()) + .eqIfPresent(ProjectOrderDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProjectOrderDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ProjectOrderDO::getBusinessMan, reqVO.getBusinessMan()) + .eqIfPresent(ProjectOrderDO::getContractNo, reqVO.getContractNo()) + .orderByDesc(ProjectOrderDO::getId)); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java new file mode 100644 index 00000000..3ccd8cc5 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java @@ -0,0 +1,28 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +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.projectordersub.ProjectOrderSubDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 项目订单子项目 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProjectOrderSubMapper extends BaseMapperX { + + default List selectListByProjectOrderId(Long projectOrderId) { + return selectList(ProjectOrderSubDO::getProjectOrderId, projectOrderId); + } + + default int deleteByProjectOrderId(Long projectOrderId) { + return delete(ProjectOrderSubDO::getProjectOrderId, projectOrderId); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java new file mode 100644 index 00000000..04bb89e2 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderService.java @@ -0,0 +1,66 @@ +package com.chanko.yunxi.mes.module.heli.service.projectorder; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub.ProjectOrderSubDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 项目订单 Service 接口 + * + * @author 管理员 + */ +public interface ProjectOrderService { + + /** + * 创建项目订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProjectOrder(@Valid ProjectOrderSaveReqVO createReqVO); + + /** + * 更新项目订单 + * + * @param updateReqVO 更新信息 + */ + void updateProjectOrder(@Valid ProjectOrderSaveReqVO updateReqVO); + + /** + * 删除项目订单 + * + * @param id 编号 + */ + void deleteProjectOrder(Long id); + + /** + * 获得项目订单 + * + * @param id 编号 + * @return 项目订单 + */ + ProjectOrderDO getProjectOrder(Long id); + + /** + * 获得项目订单分页 + * + * @param pageReqVO 分页查询 + * @return 项目订单分页 + */ + PageResult getProjectOrderPage(ProjectOrderPageReqVO pageReqVO); + + // ==================== 子表(项目订单子项目) ==================== + + /** + * 获得项目订单子项目列表 + * + * @param projectOrderId 项目订单id + * @return 项目订单子项目列表 + */ + List getProjectOrderSubListByProjectOrderId(Long projectOrderId); + +} \ 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/projectorder/ProjectOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java new file mode 100644 index 00000000..125f9f7c --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java @@ -0,0 +1,112 @@ +package com.chanko.yunxi.mes.module.heli.service.projectorder; + +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.projectorder.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectordersub.ProjectOrderSubDO; +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.projectorder.ProjectOrderMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; + +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 ProjectOrderServiceImpl implements ProjectOrderService { + + @Resource + private ProjectOrderMapper projectOrderMapper; + @Resource + private ProjectOrderSubMapper projectOrderSubMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createProjectOrder(ProjectOrderSaveReqVO createReqVO) { + // 插入 + ProjectOrderDO projectOrder = BeanUtils.toBean(createReqVO, ProjectOrderDO.class); + projectOrderMapper.insert(projectOrder); + + // 插入子表 + createProjectOrderSubList(projectOrder.getId(), createReqVO.getProjectOrderSubs()); + // 返回 + return projectOrder.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateProjectOrder(ProjectOrderSaveReqVO updateReqVO) { + // 校验存在 + validateProjectOrderExists(updateReqVO.getId()); + // 更新 + ProjectOrderDO updateObj = BeanUtils.toBean(updateReqVO, ProjectOrderDO.class); + projectOrderMapper.updateById(updateObj); + + // 更新子表 + updateProjectOrderSubList(updateReqVO.getId(), updateReqVO.getProjectOrderSubs()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteProjectOrder(Long id) { + // 校验存在 + validateProjectOrderExists(id); + // 删除 + projectOrderMapper.deleteById(id); + + // 删除子表 + deleteProjectOrderSubByProjectOrderId(id); + } + + private void validateProjectOrderExists(Long id) { + if (projectOrderMapper.selectById(id) == null) { + throw exception(PROJECT_ORDER_NOT_EXISTS); + } + } + + @Override + public ProjectOrderDO getProjectOrder(Long id) { + return projectOrderMapper.selectById(id); + } + + @Override + public PageResult getProjectOrderPage(ProjectOrderPageReqVO pageReqVO) { + return projectOrderMapper.selectPage(pageReqVO); + } + + // ==================== 子表(项目订单子项目) ==================== + + @Override + public List getProjectOrderSubListByProjectOrderId(Long projectOrderId) { + return projectOrderSubMapper.selectListByProjectOrderId(projectOrderId); + } + + private void createProjectOrderSubList(Long projectOrderId, List list) { + list.forEach(o -> o.setProjectOrderId(projectOrderId)); + projectOrderSubMapper.insertBatch(list); + } + + private void updateProjectOrderSubList(Long projectOrderId, List list) { + deleteProjectOrderSubByProjectOrderId(projectOrderId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createProjectOrderSubList(projectOrderId, list); + } + + private void deleteProjectOrderSubByProjectOrderId(Long projectOrderId) { + projectOrderSubMapper.deleteByProjectOrderId(projectOrderId); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/projectorder/ProjectOrderMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/projectorder/ProjectOrderMapper.xml new file mode 100644 index 00000000..9ba81c8a --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/projectorder/ProjectOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-server/pom.xml b/mes-server/pom.xml index 86aa05ab..9caac39b 100644 --- a/mes-server/pom.xml +++ b/mes-server/pom.xml @@ -18,7 +18,6 @@ 从而实现提供 RESTful API 给 mes-ui-admin、mes-ui-user 等前端项目。 本质上来说,它就是个空壳(容器)! - https://github.com/YunaiV/ruoyi-vue-pro @@ -40,6 +39,11 @@ mes-module-heli-biz ${revision} + + com.github.dadiyang + equator + 1.0.4 + diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts new file mode 100644 index 00000000..a9d4fef5 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/projectorder/index.ts @@ -0,0 +1,69 @@ +import request from '@/config/axios' + +export interface ProjectOrderVO { + id: number + code: string + orderStatus: number + deliveryStatus: number + businessDeptId: number + customerId: number + mouldName: string + businessLine: string + blueprintNo: string + hasPrice: number + price: number + currency: string + projectStartTime: Date + projectEndTime: Date + isUrgency: number + property: number + referenceTechnology: string + hasAlter: number + lastAlterTime: Date + qualityRequirement: string + remark: string + hasContract: number + hasTechnologyProtocol: number + hasBlueprint: number + blueprintRemark: string + status: number + businessMan: number + contractNo: string +} + +// 查询项目订单分页 +export const getProjectOrderPage = async (params) => { + return await request.get({ url: `/heli/project-order/page`, params }) +} + +// 查询项目订单详情 +export const getProjectOrder = async (id: number) => { + return await request.get({ url: `/heli/project-order/get?id=` + id }) +} + +// 新增项目订单 +export const createProjectOrder = async (data: ProjectOrderVO) => { + return await request.post({ url: `/heli/project-order/create`, data }) +} + +// 修改项目订单 +export const updateProjectOrder = async (data: ProjectOrderVO) => { + return await request.put({ url: `/heli/project-order/update`, data }) +} + +// 删除项目订单 +export const deleteProjectOrder = async (id: number) => { + return await request.delete({ url: `/heli/project-order/delete?id=` + id }) +} + +// 导出项目订单 Excel +export const exportProjectOrder = async (params) => { + return await request.download({ url: `/heli/project-order/export-excel`, params }) +} + +// ==================== 子表(项目订单子项目) ==================== + +// 获得项目订单子项目列表 +export const getProjectOrderSubListByProjectOrderId = async (projectOrderId) => { + return await request.get({ url: `/heli/project-order/project-order-sub/list-by-project-order-id?projectOrderId=` + projectOrderId }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/infra/file/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/infra/file/index.ts index f64bc0d6..dcf306b8 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/infra/file/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/infra/file/index.ts @@ -15,3 +15,8 @@ export const getFilePage = (params: FilePageReqVO) => { export const deleteFile = (id: number) => { return request.delete({ url: '/infra/file/delete?id=' + id }) } + +// 下载文件 +export const downloadFile = async (url) => { + return await request.download({ url: url }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts index 98f5233a..bcae6ef7 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts @@ -223,4 +223,12 @@ export enum DICT_TYPE { HELI_STORAGE_OUT_TYPE = 'heli_storage_out_type',//出库类型 HELI_STORAGE_STATUS = 'heli_storage_status',//入库出库状态 + HELI_PROJECT_ORDER_STATUS = 'heli_project_order_status', //项目订单状态 + HELI_DELIVERY_STATUS = 'heli_delivery_status', // 发货状态 + HELI_CURRENCY = 'heli_currency', // 币种 + HELI_PROJECT_PROPERTY = 'heli_project_property', // 性质 + HELI_BUSINESS_LINE = 'heli_business_line', // 业务线 + HELI_BUSINESS_FILE_TYPE = 'heli_business_file_type', // 业务文件类型 + HELI_PROJECT_ORDER_SUB_UNIT = 'heli_project_order_sub_unit', // 子项目单位 + } diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/download.ts b/mes-ui/mes-ui-admin-vue3/src/utils/download.ts index ab200149..c3a5b0b2 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/download.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/download.ts @@ -32,6 +32,10 @@ const download = { // 下载 Markdown 方法 markdown: (data: Blob, fileName: string) => { download0(data, fileName, 'text/markdown') + }, + // 下载任意文件 + any: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/octet-stream') } } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/detail.vue new file mode 100644 index 00000000..0540da60 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/detail.vue @@ -0,0 +1,868 @@ + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/index.vue new file mode 100644 index 00000000..be4b10c3 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/projectorder/index.vue @@ -0,0 +1,328 @@ + + + diff --git a/sql/v1.1.0/heli.sql b/sql/v1.1.0/heli.sql index 199f5132..6f074406 100644 --- a/sql/v1.1.0/heli.sql +++ b/sql/v1.1.0/heli.sql @@ -63,7 +63,7 @@ CREATE TABLE `project_order` ( `code` VARCHAR ( 64 ) NOT NULL COMMENT '项目编号,唯一', `order_status` INT ( 11 ) NOT NULL DEFAULT '0' COMMENT '单据状态 已保存/已送审/已审核/已启动/已打回/已终止', `delivery_status` TINYINT ( 1 ) NOT NULL COMMENT '发货状态 未发货/部分发货/全部发货', - `business_man` BIGINT ( 20 ) DEFAULT NULL COMMENT '业务员', + `business_man` BIGINT ( 20 ) NOT NULL COMMENT '业务员', `business_dept_id` BIGINT ( 20 ) NOT NULL COMMENT '提出部门id', `customer_id` BIGINT ( 20 ) NOT NULL COMMENT '客户id', `mould_name` VARCHAR ( 255 ) NOT NULL COMMENT '模具名称', @@ -115,3 +115,6 @@ CREATE TABLE `project_order_sub` ( PRIMARY KEY ( `id` ) USING BTREE, UNIQUE KEY `idx_name` ( `name` ) USING BTREE ) ENGINE = InnoDB COMMENT = '项目订单子项目表'; + +ALTER TABLE project_order ADD COLUMN `contract_no` VARCHAR ( 128 ) COMMENT '模具名称' AFTER customer_id; +ALTER TABLE project_order_sub ADD COLUMN `unit` CHAR ( 1 ) NOT NULL COMMENT '单位' AFTER amount;