From 3b06253c4f6c3dab06c868d67d50afa01523c93a Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Fri, 17 May 2024 10:41:12 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-ui/mes-ui-admin-vue3/src/views/biz/plan/detail.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/plan/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/plan/detail.vue index 1952b3c5..f1fd1286 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/plan/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/plan/detail.vue @@ -374,12 +374,12 @@ onMounted(async () => { var projectInit = await ProjectOrderApi.getProjectOrder(formData.value.projectId) customerInit.value = await CustomerApi.getCustomer(projectInit.customerId) - var businessManInit = await UserApi.getUser(projectInit.businessMan) + // var businessManInit = await UserApi.getUser(projectInit.businessMan) formData.value.projectCode = projectInit.code formData.value.projectStatus = projectInit.orderStatus formData.value.customerName = customerInit?.value.name formData.value.projectName = projectInit.projectName - formData.value.businessMan = businessManInit?.nickname + // formData.value.businessMan = businessManInit?.nickname formData.value.projectStartTime = projectInit.projectStartTime formData.value.projectEndTime = projectInit.projectEndTime formData.value.businessLine = projectInit.businessLine From c39269ed26c896b7347aff56f38ce75b6a42eef9 Mon Sep 17 00:00:00 2001 From: siontion Date: Fri, 17 May 2024 15:38:15 +0800 Subject: [PATCH 02/35] =?UTF-8?q?=E3=80=90=E5=A4=A7=E5=B1=8F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E3=80=91=20=E5=A4=84=E7=90=86=E5=8F=8C=E7=B2=BE?= =?UTF-8?q?=E5=BA=A6=E5=B0=8F=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunxi/mes/module/biz/service/screen/ScreenServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/screen/ScreenServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/screen/ScreenServiceImpl.java index d5981e74..35cf37b9 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/screen/ScreenServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/screen/ScreenServiceImpl.java @@ -228,8 +228,7 @@ public class ScreenServiceImpl implements ScreenService { for (ProjectOrderSubDO subDO : doList) { productList.add(subDO.getProjectSubName()); rateList.add(new BigDecimal(100) - .subtract(new BigDecimal(subDO.getUnqualifiedQuantity()*100).divide(new BigDecimal(subDO.getAmount()))) - .setScale(2, BigDecimal.ROUND_CEILING)); + .subtract(new BigDecimal(subDO.getUnqualifiedQuantity()*100).divide(new BigDecimal(subDO.getAmount()),2,BigDecimal.ROUND_CEILING))); } screenDO.setData(JSON.toJSONString(resultData)); From 26169c77ca67ddd4c70ad41e10c4747d93d4222e Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Wed, 22 May 2024 10:54:14 +0800 Subject: [PATCH 03/35] =?UTF-8?q?=E6=B4=BE=E5=B7=A5=E5=8D=95=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=96=B0=E5=A2=9E=E8=A7=84=E6=A0=BC=E5=9E=8B=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/biz/taskdispatch/detail.vue | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/taskdispatch/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/taskdispatch/detail.vue index a779bf14..fd10cd10 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/taskdispatch/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/taskdispatch/detail.vue @@ -99,6 +99,12 @@ + + + + + + @@ -253,7 +259,7 @@ import UserSelect from '@/views/biz/hlvuestyle/userSelect.vue' import EquipSelect from '@/views/biz/hlvuestyle/equipSelect.vue' import EquipmentSelect from '@/views/biz/hlvuestyle/equipmentSelect.vue' import ProductProcessPrint from './ProductProcessPrint.vue' - +import * as MaterialApi from '@/api/biz/material' defineOptions({ name: 'TaskDispatchDetail' }) const reload = inject('reload') @@ -287,7 +293,8 @@ const formData = ref({ taskDispatchDetails: [], operateLogs: [], active: undefined, - activeOpinion: '' + activeOpinion: '', + spec:undefined }) const formRef = ref() // 表单 Ref @@ -333,7 +340,8 @@ const resetForm = () => { taskDispatchDetails: [], operateLogs: [], active: undefined, - activeOpinion: '' + activeOpinion: '', + spec:undefined } formRef.value?.resetFields() } @@ -348,14 +356,17 @@ const subFormRules = reactive({ }) const queryData = async (id?: number) => { - console.log(dispatchType) - + // console.log(dispatchType) resetForm() // 修改时,设置数据 if (id) { formLoading.value = true try { formData.value = await TaskDispatchApi.getTaskDispatch(id) + // console.log(formData.value.projectSubId); + + // formData.value.spec=await MaterialApi.getMaterial(formData.value.projectSubId) + formData.value.taskDispatchDetails = await TaskDispatchApi.getTaskDispatchDetailListByDispatchId(id) // formData.value.bomCode = 'BOM-' + formData.value.projectSubCode From 912a6e60dc6e95361831c382ad739d938278995f Mon Sep 17 00:00:00 2001 From: siontion Date: Wed, 22 May 2024 14:19:02 +0800 Subject: [PATCH 04/35] =?UTF-8?q?=E3=80=90=E6=B4=BE=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E3=80=91=20=E5=A2=9E=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E6=96=99=E8=A7=84=E6=A0=BC=E4=BF=A1=E6=81=AF(=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=9Aspec)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/biz/dal/mysql/taskdispatch/TaskDispatchMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskdispatch/TaskDispatchMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskdispatch/TaskDispatchMapper.java index 470c5a4b..006451e0 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskdispatch/TaskDispatchMapper.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskdispatch/TaskDispatchMapper.java @@ -67,7 +67,7 @@ public interface TaskDispatchMapper extends BaseMapperX { .select("c.code as projectCode", "c.project_end_time as projectEndTime") .select("f.name workshopName", "g.end_time requiredCompletedDate", "u1.nickname as ownerName") .select("d.name as projectSubName", "d.code as projectSubCode", "d.id as materialId") - .select("b.amount", "d.unit", "b.warehouse_id") + .select("b.amount", "d.unit", "b.warehouse_id", "d.spec") .leftJoin(PlanDO.class, "a", PlanDO::getId, TaskDispatchDO::getPlanId) .leftJoin(ProjectOrderSubDO.class, "b", ProjectOrderSubDO::getId, TaskDispatchDO::getProjectSubId) .leftJoin(ProjectOrderDO.class, "c", ProjectOrderDO::getId, ProcessDesignDO::getProjectId) From 9200bb16765d03b863d6533166aa48a9c238f508 Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Wed, 22 May 2024 15:53:41 +0800 Subject: [PATCH 05/35] =?UTF-8?q?=E7=89=A9=E6=96=99=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E7=BC=96=E8=BE=91=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/biz/material/MaterialForm.vue | 12 ++++++++++-- .../src/views/biz/material/index.vue | 10 +++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/material/MaterialForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/material/MaterialForm.vue index 5279945d..b7ebe536 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/material/MaterialForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/material/MaterialForm.vue @@ -86,7 +86,8 @@ - + + @@ -104,7 +105,7 @@ @@ -176,7 +177,14 @@ const remoteSupplierSearch = (query: string) => { } } /** 打开弹窗 */ +const openupdata =ref(false) + const open = async (type: string, id?: number) => { + if (type=='update') { + openupdata.value=true + }else{ + openupdata.value=false + } dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/material/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/material/index.vue index 468fff7c..a8e2f98e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/material/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/material/index.vue @@ -120,8 +120,16 @@ - + - + From a11b6e8b362e43c8ba532c6a5d7be0b90d4a7983 Mon Sep 17 00:00:00 2001 From: siontion Date: Fri, 24 May 2024 10:18:05 +0800 Subject: [PATCH 11/35] =?UTF-8?q?=E3=80=90=E7=B3=BB=E7=BB=9F=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E3=80=91=20=E5=AD=97=E6=AE=B5=EF=BC=9Arange=20->=20sc?= =?UTF-8?q?ope?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/SystemParametersPageReqVO.java | 2 +- .../vo/SystemParametersRespVO.java | 2 +- .../vo/SystemParametersSaveReqVO.java | 62 +++++++++---------- .../systemparameters/SystemParametersDO.java | 2 +- .../SystemParametersMapper.java | 2 +- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersPageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersPageReqVO.java index e45b3e6e..67cd9b32 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersPageReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersPageReqVO.java @@ -29,7 +29,7 @@ public class SystemParametersPageReqVO extends PageParam { private String name; @Schema(description = "值范围") - private String range; + private String scope; @Schema(description = "当前值") private String currentValue; diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersRespVO.java index 8196620b..66f37571 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersRespVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersRespVO.java @@ -31,7 +31,7 @@ public class SystemParametersRespVO { @Schema(description = "值范围") @ExcelProperty("值范围") - private String range; + private String scope; @Schema(description = "当前值") @ExcelProperty("当前值") diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersSaveReqVO.java index 55c07dee..4bfabc27 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersSaveReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/systemparameters/vo/SystemParametersSaveReqVO.java @@ -1,31 +1,31 @@ -package com.chanko.yunxi.mes.module.biz.controller.admin.systemparameters.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; - -@Schema(description = "管理后台 - 系统参数设置新增/修改 Request VO") -@Data -public class SystemParametersSaveReqVO { - - @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) - private Long id; - - @Schema(description = "参数编码") - private String code; - - @Schema(description = "参数名称") - private String name; - - @Schema(description = "值范围") - private String range; - - @Schema(description = "当前值") - private String currentValue; - - @Schema(description = "备注") - private String description; - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.biz.controller.admin.systemparameters.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 系统参数设置新增/修改 Request VO") +@Data +public class SystemParametersSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "参数编码") + private String code; + + @Schema(description = "参数名称") + private String name; + + @Schema(description = "值范围") + private String scope; + + @Schema(description = "当前值") + private String currentValue; + + @Schema(description = "备注") + private String description; + +} diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/systemparameters/SystemParametersDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/systemparameters/SystemParametersDO.java index cbf01804..8529188b 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/systemparameters/SystemParametersDO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/systemparameters/SystemParametersDO.java @@ -38,7 +38,7 @@ public class SystemParametersDO extends BaseDO { /** * 值范围 */ - private String range; + private String scope; /** * 当前值 */ diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/systemparameters/SystemParametersMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/systemparameters/SystemParametersMapper.java index d6f65944..c14e55cc 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/systemparameters/SystemParametersMapper.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/systemparameters/SystemParametersMapper.java @@ -23,7 +23,7 @@ public interface SystemParametersMapper extends BaseMapperX .betweenIfPresent(SystemParametersDO::getCreateTime, reqVO.getCreateTime()) .likeIfPresent(SystemParametersDO::getCode, reqVO.getCode()) .likeIfPresent(SystemParametersDO::getName, reqVO.getName()) - .eqIfPresent(SystemParametersDO::getRange, reqVO.getRange()) + .eqIfPresent(SystemParametersDO::getScope, reqVO.getScope()) .eqIfPresent(SystemParametersDO::getCurrentValue, reqVO.getCurrentValue()) .eqIfPresent(SystemParametersDO::getDescription, reqVO.getDescription()) .orderByDesc(SystemParametersDO::getId)); From c2ae2f799b031f35a01bfd91818c2ce297f95610 Mon Sep 17 00:00:00 2001 From: siontion Date: Fri, 24 May 2024 10:21:22 +0800 Subject: [PATCH 12/35] =?UTF-8?q?base=5Fsystem=5Fparameters=20=E8=A1=A8?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/v1.0.0/2.business/1.structure.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index 12bf5dd1..dbeac7f8 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -186,7 +186,7 @@ CREATE TABLE `base_system_parameters` ( `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', `code` varchar(255) COLLATE DEFAULT NULL COMMENT '参数编码', `name` varchar(255) COLLATE DEFAULT NULL COMMENT '参数名称', - `range` varchar(255) COLLATE DEFAULT NULL COMMENT '值范围', + `scope` varchar(255) COLLATE DEFAULT NULL COMMENT '值范围', `current_value` varchar(255) COLLATE DEFAULT NULL COMMENT '当前值', `description` varchar(255) COLLATE DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) From ba5f7c691fa28570457b344299a92236f2728053 Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Fri, 24 May 2024 10:25:40 +0800 Subject: [PATCH 13/35] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/biz/systemparameters/index.ts | 80 +++++++++---------- .../views/biz/parameter/ParamenterForm.vue | 39 ++++----- .../src/views/biz/parameter/index.vue | 8 +- 3 files changed, 65 insertions(+), 62 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/systemparameters/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/systemparameters/index.ts index 9bedf48b..90838691 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/systemparameters/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/systemparameters/index.ts @@ -1,40 +1,40 @@ -import request from '@/config/axios' - -export interface SystemParametersVO { - id: number - code: string - name: string - range: string - currentValue: string - description: string -} - -// 查询系统参数设置分页 -export const getSystemParametersPage = async (params) => { - return await request.get({ url: `/biz/system-parameters/page`, params }) -} - -// 查询系统参数设置详情 -export const getSystemParameters = async (id: number) => { - return await request.get({ url: `/biz/system-parameters/get?id=` + id }) -} - -// 新增系统参数设置 -export const createSystemParameters = async (data: SystemParametersVO) => { - return await request.post({ url: `/biz/system-parameters/create`, data }) -} - -// 修改系统参数设置 -export const updateSystemParameters = async (data: SystemParametersVO) => { - return await request.put({ url: `/biz/system-parameters/update`, data }) -} - -// 删除系统参数设置 -export const deleteSystemParameters = async (id: number) => { - return await request.delete({ url: `/biz/system-parameters/delete?id=` + id }) -} - -// 导出系统参数设置 Excel -export const exportSystemParameters = async (params) => { - return await request.download({ url: `/biz/system-parameters/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface SystemParametersVO { + id: number + code: string + name: string + scope: string + currentValue: string + description: string +} + +// 查询系统参数设置分页 +export const getSystemParametersPage = async (params) => { + return await request.get({ url: `/biz/system-parameters/page`, params }) +} + +// 查询系统参数设置详情 +export const getSystemParameters = async (id: number) => { + return await request.get({ url: `/biz/system-parameters/get?id=` + id }) +} + +// 新增系统参数设置 +export const createSystemParameters = async (data: SystemParametersVO) => { + return await request.post({ url: `/biz/system-parameters/create`, data }) +} + +// 修改系统参数设置 +export const updateSystemParameters = async (data: SystemParametersVO) => { + return await request.put({ url: `/biz/system-parameters/update`, data }) +} + +// 删除系统参数设置 +export const deleteSystemParameters = async (id: number) => { + return await request.delete({ url: `/biz/system-parameters/delete?id=` + id }) +} + +// 导出系统参数设置 Excel +export const exportSystemParameters = async (params) => { + return await request.download({ url: `/biz/system-parameters/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/parameter/ParamenterForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/parameter/ParamenterForm.vue index dd6868a8..dc620519 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/parameter/ParamenterForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/parameter/ParamenterForm.vue @@ -8,19 +8,25 @@ v-loading="formLoading" > - + - - + + - + - + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/material/userForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/material/userForm.vue new file mode 100644 index 00000000..350a9ad7 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/material/userForm.vue @@ -0,0 +1,109 @@ + + + From fa34f4f4f1ede3be78aaaf9f6ce0ae88496c2f67 Mon Sep 17 00:00:00 2001 From: siontion Date: Fri, 24 May 2024 15:00:02 +0800 Subject: [PATCH 15/35] =?UTF-8?q?tplus=20=E6=8E=A5=E5=8F=A3=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/biz/enums/SystemParmetersEnum.java | 22 ++ .../module/biz/manager/ChanjetManager.java | 202 ++++++++++++------ 2 files changed, 157 insertions(+), 67 deletions(-) create mode 100644 mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java diff --git a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java new file mode 100644 index 00000000..680b2c03 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java @@ -0,0 +1,22 @@ +package com.chanko.yunxi.mes.module.biz.enums; + +import lombok.Getter; + +/** + * 发货单状态枚举 + * @author chenxi + * @date 2024-01-26 12:38 + */ +@Getter +public enum SystemParmetersEnum { + + TPLUS_INTERFACE_SWITCH("tplus_interface_switch"), + NEGATIVE_INVENTORY_SWITCH( "negative_inventory_switch"), + OVERTASK_CENTER_LIST("overtask_center_list"); + + private String description; + + SystemParmetersEnum(String description) { + this.description = description; + } +} diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java index 03afa12e..f65fcd44 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.chanjet.openapi.sdk.java.exception.ChanjetApiException; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import com.chanko.yunxi.mes.framework.common.util.object.ObjectUtils; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.ChanjetSpi; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.*; @@ -24,6 +25,7 @@ import com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder.ProjectOrderS import com.chanko.yunxi.mes.module.biz.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.supplier.SupplierDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.systemparameters.SystemParametersDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.warehouse.WarehouseDO; @@ -34,6 +36,7 @@ import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderMapper import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.supplier.SupplierMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParametersMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.taskreport.TaskReportMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.warehouse.WarehouseMapper; @@ -114,12 +117,29 @@ public class ChanjetManager { @Resource private WarehouseMapper warehouseMapper; + @Resource + private SystemParametersMapper systemParametersMapper; + + private Boolean getSystemParameters(){ + Boolean chanjet_switch = true; + SystemParametersDO systemParametersDO = systemParametersMapper.selectOne("code",SystemParmetersEnum.TPLUS_INTERFACE_SWITCH.getDescription()); + + if(systemParametersDO != null){ + chanjet_switch = systemParametersDO.getCurrentValue().equals("1")?true:false; + } + + return chanjet_switch; + } + /** * 查询部门 * @throws ChanjetApiException */ @Transactional(rollbackFor = Exception.class) public void queryDept() throws ChanjetApiException { + + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return; CommonResult> result = chanjetSpi.invokeRetList(QUERY_DEPARTMENT_OR_WORKSHOP, new QueryDepartmentReqVO(new QueryDepartmentDTO()), QueryDepartmentResVO.class); if(!result.isSuccess()){ throw exception(CALL_API_ERROR); @@ -181,6 +201,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryWorkshop() throws ChanjetApiException { + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return; CommonResult> result = chanjetSpi.invokeRetList(QUERY_DEPARTMENT_OR_WORKSHOP, new QueryDepartmentReqVO(new QueryDepartmentDTO()), QueryDepartmentResVO.class); if(!result.isSuccess()){ throw exception(CALL_API_ERROR); @@ -242,7 +264,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryCustomer() throws ChanjetApiException { - + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return; String maxTs = null; do { QueryPartnerReqVO.QueryPartnerParamVO paramVO = new QueryPartnerReqVO.QueryPartnerParamVO(maxTs); @@ -316,7 +339,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void querySupplier() throws ChanjetApiException { - + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return; String maxTs = null; do { QueryPartnerReqVO.QueryPartnerParamVO paramVO = new QueryPartnerReqVO.QueryPartnerParamVO(maxTs); @@ -392,6 +416,7 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public Long createProcedure(ProcedureSaveReqVO createReqVO) throws ChanjetApiException { + Long procedureId = procedureService.createProcedure(createReqVO); ProcedureDO procedure = procedureService.getProcedure(procedureId); @@ -414,9 +439,12 @@ public class ChanjetManager { .setName(procedure.getName()) .setCode(procedure.getCode()); - CommonResult result = chanjetSpi.invoke(CREATE_PROCEDURE, new CreateProcedureReqVO(dto), Long.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult result = chanjetSpi.invoke(CREATE_PROCEDURE, new CreateProcedureReqVO(dto), Long.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } } return procedureId; } @@ -429,6 +457,7 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public Long createUser(UserSaveReqVO reqVO) throws ChanjetApiException { + Long id = adminUserService.createUser(reqVO); AdminUserDO aDO = adminUserService.getUser(id); @@ -448,9 +477,12 @@ public class ChanjetManager { if(!StringUtils.isEmpty(deptCode)){ dto.setDepartment(new Department(deptCode)); } - CommonResult result = chanjetSpi.invoke(CREATE_EMPLOYEE, new CreateOrUpdateEmployeeReqVO(dto), Long.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult result = chanjetSpi.invoke(CREATE_EMPLOYEE, new CreateOrUpdateEmployeeReqVO(dto), Long.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } } return id; } @@ -462,6 +494,7 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void updateUser(UserSaveReqVO reqVO) throws ChanjetApiException { + adminUserService.updateUser(reqVO); AdminUserDO aDO = adminUserService.getUser(reqVO.getId()); @@ -482,9 +515,12 @@ public class ChanjetManager { if(!StringUtils.isEmpty(deptCode)){ dto.setDepartment(new Department(deptCode)); } - CommonResult result = chanjetSpi.invoke(UPDATE_EMPLOYEE, new CreateOrUpdateEmployeeReqVO(dto), Boolean.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult result = chanjetSpi.invoke(UPDATE_EMPLOYEE, new CreateOrUpdateEmployeeReqVO(dto), Boolean.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } } } @@ -494,7 +530,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryMaterial() throws ChanjetApiException { - + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return ; String maxTs = null; HashSet materialIds = new HashSet<>(); do { @@ -703,7 +740,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryProjectOrder() throws ChanjetApiException { - + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(!getSystemParameters()) return ; int pageIndex = 0; boolean hasMore = false; List resulDataList = new ArrayList<>(32); @@ -796,22 +834,26 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public List queryProcessBom(String materialCode, Long warehouseId) throws ChanjetApiException { + List resultData = new ArrayList<>(16); List bomDataList = null; - CommonResult> result = chanjetSpi.invokeRetList(QUERY_BOM, new QueryBomReqVO(new QueryBomReqVO.QueryBomDTO(materialCode)), QueryBomResVO.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); - } - if(CollUtil.isNotEmpty(result.getData())){ - QueryBomResVO topLayer = result.getData().get(0); - bomDataList = topLayer.getBOMChildDTOs(); - if(CollUtil.isNotEmpty(bomDataList)){ - for (BOMChildDTOs dto : bomDataList) { - ChildBOM childBOM = dto.getChildBOM(); - if(childBOM != null){ - dto.setVersion(childBOM.getVersion()) - .setBOMChildDTOs(queryProcessBomById(childBOM.getID())); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult> result = chanjetSpi.invokeRetList(QUERY_BOM, new QueryBomReqVO(new QueryBomReqVO.QueryBomDTO(materialCode)), QueryBomResVO.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } + if (CollUtil.isNotEmpty(result.getData())) { + QueryBomResVO topLayer = result.getData().get(0); + bomDataList = topLayer.getBOMChildDTOs(); + if (CollUtil.isNotEmpty(bomDataList)) { + for (BOMChildDTOs dto : bomDataList) { + ChildBOM childBOM = dto.getChildBOM(); + if (childBOM != null) { + dto.setVersion(childBOM.getVersion()) + .setBOMChildDTOs(queryProcessBomById(childBOM.getID())); + } } } } @@ -868,11 +910,16 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public List queryStock(List materialCodeList, Long warehouseId) throws ChanjetApiException { - CommonResult> result = chanjetSpi.invokeRetList(QUERY_CURRENT_STOCK, new QueryCurrentStockReqVO(new QueryCurrentStockReqVO.QueryCurrentStockParamVO(materialCodeList)), QueryCurrentStockResVO.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + List dataList = null; + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult> result = chanjetSpi.invokeRetList(QUERY_CURRENT_STOCK, new QueryCurrentStockReqVO(new QueryCurrentStockReqVO.QueryCurrentStockParamVO(materialCodeList)), QueryCurrentStockResVO.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } + dataList = result.getData(); } - List dataList = result.getData(); + if(dataList == null) dataList = new ArrayList<>(16); List materialDOList = materialMapper.selectList(MaterialDO::getCode, materialCodeList); @@ -917,7 +964,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryStockAndInject(List materialDOList, Long warehouseId) throws ChanjetApiException { - + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return ; CommonResult> result = chanjetSpi.invokeRetList(QUERY_CURRENT_STOCK, new QueryCurrentStockReqVO(new QueryCurrentStockReqVO.QueryCurrentStockParamVO(materialDOList.stream().map(MaterialDO::getCode).collect(Collectors.toList()))), QueryCurrentStockResVO.class); @@ -951,7 +999,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryStockAndInject2(List doList, Long warehouseId) throws ChanjetApiException { - + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return; CommonResult> result = chanjetSpi.invokeRetList(QUERY_CURRENT_STOCK, new QueryCurrentStockReqVO(new QueryCurrentStockReqVO.QueryCurrentStockParamVO(doList.stream().map(StorageMatDO::getProjectSubCode).collect(Collectors.toList()))), QueryCurrentStockResVO.class); @@ -983,6 +1032,8 @@ public class ChanjetManager { * @throws ChanjetApiException */ private List queryProcessBomById(String bomId) throws ChanjetApiException { + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return null; List resultData = null; QueryBomReqVO.QueryBomDTO queryBomDTO = new QueryBomReqVO.QueryBomDTO(); queryBomDTO.setID(bomId); @@ -1015,6 +1066,7 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void createTaskReport(Long id) throws ChanjetApiException { + TaskReportDO aDO = taskReportMapper.selectOne(id); TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.getTaskDispatchDetail(aDO.getDispatchDetailId()); @@ -1041,9 +1093,12 @@ public class ChanjetManager { reportTeamDetails.add(reportTeamDetail); reportTeamDetail.setPerson(new Person(aDO.getOwnerUsername())); - CommonResult result = chanjetSpi.invoke(CREATE_REPORT, new CreateReportReqVO(dto), ResultResVO.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult result = chanjetSpi.invoke(CREATE_REPORT, new CreateReportReqVO(dto), ResultResVO.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } } } @@ -1054,6 +1109,7 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void deleteTaskReport(Long id) throws ChanjetApiException { + taskReportService.deleteTaskReport(id); // do nothing } @@ -1066,6 +1122,7 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void createStockOutOrder(Long id) throws ChanjetApiException { + StorageDO storage = storageMapper.selectById(id); List matList = storageMatService.getStorageMatListByStockId(id); if(matList.isEmpty()) return; @@ -1088,9 +1145,12 @@ public class ChanjetManager { detailList.add(detail); }); - CommonResult result = chanjetSpi.invoke(CREATE_STOCK_OUT_ORDER, new CreateStockOutOrderReqVO(dto), ResultResVO.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult result = chanjetSpi.invoke(CREATE_STOCK_OUT_ORDER, new CreateStockOutOrderReqVO(dto), ResultResVO.class); + if (!result.isSuccess()) { + throw exception(CALL_API_ERROR); + } } } @@ -1123,10 +1183,14 @@ public class ChanjetManager { detailList.add(detail); }); - CommonResult result = chanjetSpi.invoke(CREATE_STOCK_IN_ORDER, new CreateStorageReqVO(dto), ResultResVO.class); - if(!result.isSuccess()){ - throw exception(CALL_API_ERROR); + // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 + if(getSystemParameters()){ + CommonResult result = chanjetSpi.invoke(CREATE_STOCK_IN_ORDER, new CreateStorageReqVO(dto), ResultResVO.class); + if(!result.isSuccess()){ + throw exception(CALL_API_ERROR); + } } + } /** @@ -1172,36 +1236,38 @@ public class ChanjetManager { ; detailList.add(detail); }); + // 设置为“是”,打开所有与用友通信的接口 + if(getSystemParameters()) { + CommonResult result = chanjetSpi.invoke(CREATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); + if (!result.isSuccess() || !result.getData().isSuccess()) { + throw exception(CALL_API_ERROR); + } - CommonResult result = chanjetSpi.invoke(CREATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); - if(!result.isSuccess() || !result.getData().isSuccess()){ - throw exception(CALL_API_ERROR); - } - - // 暂不考虑失败场景 TODO 重试接口 - CommonResult result2 = chanjetSpi.invoke(AUDIT_PRODUCTION_ORDER, new AuditProductionOrderReqVO(new AuditProductionOrderReqVO.AuditProductionOrderParamVO(externalCode)), ResultResVO.class); - if(!result2.isSuccess()|| !result2.getData().isSuccess()){ - throw new RuntimeException(result2.getMsg()); - } + // 暂不考虑失败场景 TODO 重试接口 + CommonResult result2 = chanjetSpi.invoke(AUDIT_PRODUCTION_ORDER, new AuditProductionOrderReqVO(new AuditProductionOrderReqVO.AuditProductionOrderParamVO(externalCode)), ResultResVO.class); + if (!result2.isSuccess() || !result2.getData().isSuccess()) { + throw new RuntimeException(result2.getMsg()); + } - Map rMap = JSON.parseObject(JSON.toJSONString(result.getData().getData()), new TypeReference>(){{}}); - // 查询报工单数据 将id回写至子项目表 - Map> subGroupByProjectSubCode = subDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getProjectSubCode)); - CommonResult listResult = chanjetSpi.invoke(QUERY_PRODUCTION_ORDER_LIST, new ListProductionOrderReqVO(rMap.get("Code")), ListResultResVO.class); - if(!listResult.isSuccess() || listResult.getData() == null || listResult.getData().getData() == null || listResult.getData().getData().getTotalCount() == 0){ - throw new RuntimeException("queryProductionOrder exception: "+JSON.toJSONString(listResult)); - } + Map rMap = JSON.parseObject(JSON.toJSONString(result.getData().getData()), new TypeReference>() {{ + }}); + // 查询报工单数据 将id回写至子项目表 + Map> subGroupByProjectSubCode = subDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getProjectSubCode)); + CommonResult listResult = chanjetSpi.invoke(QUERY_PRODUCTION_ORDER_LIST, new ListProductionOrderReqVO(rMap.get("Code")), ListResultResVO.class); + if (!listResult.isSuccess() || listResult.getData() == null || listResult.getData().getData() == null || listResult.getData().getData().getTotalCount() == 0) { + throw new RuntimeException("queryProductionOrder exception: " + JSON.toJSONString(listResult)); + } - List> listDataList = listResult.getData().getData().getRows(); - for (int i = 0; i < listDataList.size(); i++) { - // orderId projectSubCode detailId - List item = listDataList.get(i); - ProjectOrderSubDO subDO = subGroupByProjectSubCode.get(item.get(1)).get(0); - subDO.setProductionId(item.get(0)) - .setProductionDetailId(item.get(2)); + List> listDataList = listResult.getData().getData().getRows(); + for (int i = 0; i < listDataList.size(); i++) { + // orderId projectSubCode detailId + List item = listDataList.get(i); + ProjectOrderSubDO subDO = subGroupByProjectSubCode.get(item.get(1)).get(0); + subDO.setProductionId(item.get(0)) + .setProductionDetailId(item.get(2)); + } + projectOrderSubMapper.updateBatch(subDOList); } - - projectOrderSubMapper.updateBatch(subDOList); } /** @@ -1211,6 +1277,8 @@ public class ChanjetManager { */ @Transactional(rollbackFor = Exception.class) public void queryWarehouse() throws ChanjetApiException { + // 设置为“否”,关闭所有与用友通信的接口 + if(!getSystemParameters()) return ; CommonResult> result = chanjetSpi.invokeRetList(QUERY_WAREHOUSE, new QueryWarehouseReqVO(), QueryWarehouseResVO.class); if(!result.isSuccess()){ throw exception(CALL_API_ERROR); From d291428c35562d766699427ccabd0c2e2962229a Mon Sep 17 00:00:00 2001 From: siontion Date: Fri, 24 May 2024 15:49:02 +0800 Subject: [PATCH 16/35] =?UTF-8?q?=E3=80=90allowOverTask=E3=80=91=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=85=81=E8=AE=B8=E8=B6=85=E5=BA=93=E5=AD=98=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=EF=BC=8C=E3=80=90allowOverStock=E3=80=91=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=85=81=E8=AE=B8=E8=B6=85=E9=87=8F=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/app/AdminAppController.java | 23 +++++++++++++++++++ .../controller/admin/app/vo/OverTaskVO.java | 23 +++++++++++++++++++ .../admin/storage/StorageController.java | 19 +++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/vo/OverTaskVO.java diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/AdminAppController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/AdminAppController.java index 9bd0daba..e79f797a 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/AdminAppController.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/AdminAppController.java @@ -2,21 +2,26 @@ package com.chanko.yunxi.mes.module.biz.controller.admin.app; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import com.chanko.yunxi.mes.module.biz.controller.admin.app.vo.OverTaskVO; import com.chanko.yunxi.mes.module.biz.controller.admin.procedure.vo.ProcedureRespVO; import com.chanko.yunxi.mes.module.biz.controller.admin.workshop.vo.WorkshopRespVO; import com.chanko.yunxi.mes.module.biz.controller.admin.app.vo.AppVersionVO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.plan.PlanWorkshopDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.procedure.ProcedureDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.systemparameters.SystemParametersDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.workshop.WorkshopDO; import com.chanko.yunxi.mes.module.biz.dal.mysql.procedure.ProcedureMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParametersMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.workshop.WorkshopMapper; +import com.chanko.yunxi.mes.module.biz.enums.SystemParmetersEnum; import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; import com.chanko.yunxi.mes.module.infra.service.file.FileService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -51,6 +56,9 @@ public class AdminAppController { @Resource private ProcedureMapper procedureMapper; + @Resource + private SystemParametersMapper systemParametersMapper; + @GetMapping("/latest") @Operation(summary = "获取最新app版本") @@ -94,4 +102,19 @@ public class AdminAppController { ; return success(BeanUtils.toBean(procedureMapper.selectList(query), ProcedureRespVO.class)); } + + @GetMapping("/allow-over-task") + @Operation(summary = "是否允许超量报工") + public CommonResult allowOverTask(){ + SystemParametersDO systemParametersDO = systemParametersMapper.selectOne("code", SystemParmetersEnum.OVERTASK_CENTER_LIST.getDescription()); + OverTaskVO overTaskVO = new OverTaskVO(); + if(systemParametersDO == null){ + overTaskVO.setIsAllow("0"); + overTaskVO.setWorkShops(""); + }else{ + overTaskVO.setIsAllow(StringUtil.isNotEmpty(systemParametersDO.getCurrentValue())?"1":"0"); + overTaskVO.setWorkShops(systemParametersDO.getCurrentValue()); + } + return success(overTaskVO); + } } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/vo/OverTaskVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/vo/OverTaskVO.java new file mode 100644 index 00000000..6ac427ff --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/app/vo/OverTaskVO.java @@ -0,0 +1,23 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.app.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * app 版本信息 + * @author chenxi + * @date 2024-04-25 09:56 + */ +@Data +public class OverTaskVO { + + @Schema(description = "") + private String isAllow; + + @Schema(description = "允许的车间列表") + private String workShops; + + +} diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java index 8b74b47e..3dc9d5c2 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java @@ -6,20 +6,25 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import com.chanko.yunxi.mes.module.biz.controller.admin.app.vo.OverTaskVO; import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StoragePageReqVO; import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StorageRespVO; import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StorageSaveReqVO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagelog.StorageLogDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagemat.StorageMatDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.systemparameters.SystemParametersDO; +import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParametersMapper; import com.chanko.yunxi.mes.module.biz.enums.StockTypeEnum; import com.chanko.yunxi.mes.module.biz.enums.StorageStatusEnum; +import com.chanko.yunxi.mes.module.biz.enums.SystemParmetersEnum; import com.chanko.yunxi.mes.module.biz.service.storage.StorageService; import com.chanko.yunxi.mes.module.biz.service.storagelog.StorageLogService; import com.chanko.yunxi.mes.module.biz.service.storagemat.StorageMatService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jodd.util.StringUtil; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -142,4 +147,18 @@ public class StorageController { BeanUtils.toBean(list, StorageRespVO.class)); } + @Resource + private SystemParametersMapper systemParametersMapper; + @GetMapping("/allow-over-stock") + @Operation(summary = "是否出库允许超库存发货") + public CommonResult allowOverStock(){ + SystemParametersDO systemParametersDO = systemParametersMapper.selectOne("code", SystemParmetersEnum.NEGATIVE_INVENTORY_SWITCH.getDescription()); + + boolean isAllow = false; + if(systemParametersDO != null && systemParametersDO.getCurrentValue().equals("1")){ + isAllow = true; + } + return success(isAllow); + } + } From 1cacd87a985a13a087ebd7c8b67634244f15f6ae Mon Sep 17 00:00:00 2001 From: siontion Date: Fri, 24 May 2024 15:52:29 +0800 Subject: [PATCH 17/35] =?UTF-8?q?=E3=80=90allowOverTask=E3=80=91=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=85=81=E8=AE=B8=E8=B6=85=E5=BA=93=E5=AD=98=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=EF=BC=8C=E3=80=90allowOverStock=E3=80=91=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=85=81=E8=AE=B8=E8=B6=85=E9=87=8F=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/controller/admin/storage/StorageController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java index 3dc9d5c2..d33afd28 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/storage/StorageController.java @@ -48,6 +48,9 @@ public class StorageController { @Resource private StorageService storageService; + @Resource + private SystemParametersMapper systemParametersMapper; + @Resource private StorageMatService storageMatService; @@ -147,8 +150,7 @@ public class StorageController { BeanUtils.toBean(list, StorageRespVO.class)); } - @Resource - private SystemParametersMapper systemParametersMapper; + @GetMapping("/allow-over-stock") @Operation(summary = "是否出库允许超库存发货") public CommonResult allowOverStock(){ From 969a6edfee46e6e81bcb6d3e27c3701661ec9caf Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Fri, 24 May 2024 16:19:22 +0800 Subject: [PATCH 18/35] =?UTF-8?q?=E3=80=90=E5=B7=A5=E8=89=BA=E8=B7=AF?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E5=88=97=E8=A1=A8=E9=A1=B5=20=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E8=AF=A6=E6=83=85=20=E9=9D=99=E6=80=81=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/biz/productcraftpath/index.vue | 260 ++++++++++++ .../views/biz/productcraftpath/pathdetail.vue | 388 ++++++++++++++++++ 2 files changed, 648 insertions(+) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/index.vue create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/pathdetail.vue diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/index.vue new file mode 100644 index 00000000..749a227b --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/index.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/pathdetail.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/pathdetail.vue new file mode 100644 index 00000000..3e1a897e --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/productcraftpath/pathdetail.vue @@ -0,0 +1,388 @@ + + + From 9c10ca4695d334c8a3911ac8922baceac68669b7 Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Fri, 24 May 2024 17:34:21 +0800 Subject: [PATCH 19/35] =?UTF-8?q?=E3=80=90=E5=BA=93=E5=AD=98=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=80=91=E6=96=B0=E5=A2=9E=20=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=20=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/biz/storage/StorageOut.vue | 22 +- .../src/views/biz/storage/outdexAudit.vue | 300 ++++++++++++++++++ 2 files changed, 317 insertions(+), 5 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/biz/storage/outdexAudit.vue diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue index ad2caeee..478aa8ee 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue @@ -584,20 +584,27 @@ + + From ca11f6c8bf39ba264078af6c2eeb41bace01de49 Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 27 May 2024 13:20:15 +0800 Subject: [PATCH 22/35] =?UTF-8?q?=E3=80=90=E7=B3=BB=E7=BB=9F=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E3=80=91=20=E6=9E=9A=E4=B8=BE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunxi/mes/module/biz/enums/SystemParmetersEnum.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java index 680b2c03..13230078 100644 --- a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java +++ b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/SystemParmetersEnum.java @@ -10,8 +10,8 @@ import lombok.Getter; @Getter public enum SystemParmetersEnum { - TPLUS_INTERFACE_SWITCH("tplus_interface_switch"), - NEGATIVE_INVENTORY_SWITCH( "negative_inventory_switch"), + TPLUS_INTERFACE_SWITCH("TPlus_interface_whether"), + NEGATIVE_INVENTORY_SWITCH( "negative_inventory_whether"), OVERTASK_CENTER_LIST("overtask_center_list"); private String description; From acaa14b6a19aaf76562dd512456e4f6cc7f7e0d0 Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 27 May 2024 14:48:39 +0800 Subject: [PATCH 23/35] =?UTF-8?q?=E3=80=90=E5=87=BA=E5=BA=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=80=91=20=E9=80=BB=E8=BE=91=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=EF=BC=9A=E7=94=B1=E6=8F=90=E4=BA=A4=E7=8A=B6=E6=80=81=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=AE=A1=E6=A0=B8=E7=8A=B6=E6=80=81=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=94=A8=E5=8F=8B=E6=8E=A5=E5=8F=A3=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=87=BA=E5=BA=93=E5=8D=95=E5=88=B0TPlus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/module/biz/service/storage/StorageServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java index 1c8f5a55..10931ca6 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java @@ -95,7 +95,8 @@ public class StorageServiceImpl implements StorageService { // 如为提交同步生成出库单 if(updateObj.getStockType() == StockTypeEnum.OUT.getCode()){ - if(OperateTypeEnum.SUBMIT.name().equals(updateReqVO.getActive())){ + // 逻辑变更:由提交状态改为审核状态时,通过用友接口推送出库单到TPlus + if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive())){ // 数据校验 StorageMatPageReqVO reqVO = new StorageMatPageReqVO(); From 2aed6b216f33ec04b556e7295b64de89bcee6720 Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 27 May 2024 16:30:03 +0800 Subject: [PATCH 24/35] =?UTF-8?q?=E3=80=90=E5=B7=A5=E8=89=BA=E8=B7=AF?= =?UTF-8?q?=E7=BA=BF=E3=80=91=20DB=E8=84=9A=E6=9C=AC=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/biz/enums/ErrorCodeConstants.java | 2 + .../admin/process/ProcessController.java | 95 +++++++++++++++++++ .../admin/process/vo/ProcessPageReqVO.java | 34 +++++++ .../admin/process/vo/ProcessRespVO.java | 39 ++++++++ .../admin/process/vo/ProcessSaveReqVO.java | 27 ++++++ .../ProcessDetailController.java | 95 +++++++++++++++++++ .../vo/ProcessDetailPageReqVO.java | 40 ++++++++ .../processdetail/vo/ProcessDetailRespVO.java | 44 +++++++++ .../vo/ProcessDetailSaveReqVO.java | 31 ++++++ .../biz/dal/dataobject/process/ProcessDO.java | 45 +++++++++ .../processdetail/ProcessDetailDO.java | 51 ++++++++++ .../biz/dal/mysql/process/ProcessMapper.java | 30 ++++++ .../processdetail/ProcessDetailMapper.java | 32 +++++++ .../biz/service/process/ProcessService.java | 55 +++++++++++ .../service/process/ProcessServiceImpl.java | 74 +++++++++++++++ .../processdetail/ProcessDetailService.java | 55 +++++++++++ .../ProcessDetailServiceImpl.java | 74 +++++++++++++++ .../mapper/process/ProcessMapper.xml | 12 +++ .../processdetail/ProcessDetailMapper.xml | 12 +++ mes-server/src/api/biz/process/index.ts | 38 ++++++++ sql/v1.0.0/2.business/1.structure.sql | 32 +++++++ 21 files changed, 917 insertions(+) create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml create mode 100644 mes-server/src/api/biz/process/index.ts diff --git a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java index 81767415..871fba13 100644 --- a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java +++ b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java @@ -51,6 +51,8 @@ public interface ErrorCodeConstants { ErrorCode EQUIP_MAINTENANCE_RECORD_NOT_EXISTS = new ErrorCode(1_001_014, "设备维保记录不存在"); ErrorCode SC_EQUIPMENT_NOT_EXISTS = new ErrorCode(1_001_015, "数采设备表不存在"); ErrorCode SYSTEM_PARAMETERS_NOT_EXISTS = new ErrorCode(1_001_016, "系统参数设置不存在"); + ErrorCode PROCESS_NOT_EXISTS = new ErrorCode(1_001_017, "工艺路线不存在"); + ErrorCode PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_001_018, "工艺路线明细不存在"); /*********组织架构************/ ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_002_001, "车间不存在"); diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java new file mode 100644 index 00000000..9941e24a --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process; + +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.biz.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.module.biz.service.process.ProcessService; + +@Tag(name = "管理后台 - 工艺路线") +@RestController +@RequestMapping("/biz/process") +@Validated +public class ProcessController { + + @Resource + private ProcessService processService; + + @PostMapping("/create") + @Operation(summary = "创建工艺路线") + @PreAuthorize("@ss.hasPermission('biz:process:create')") + public CommonResult createProcess(@Valid @RequestBody ProcessSaveReqVO createReqVO) { + return success(processService.createProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺路线") + @PreAuthorize("@ss.hasPermission('biz:process:update')") + public CommonResult updateProcess(@Valid @RequestBody ProcessSaveReqVO updateReqVO) { + processService.updateProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺路线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('biz:process:delete')") + public CommonResult deleteProcess(@RequestParam("id") Long id) { + processService.deleteProcess(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺路线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('biz:process:query')") + public CommonResult getProcess(@RequestParam("id") Long id) { + ProcessDO process = processService.getProcess(id); + return success(BeanUtils.toBean(process, ProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺路线分页") + @PreAuthorize("@ss.hasPermission('biz:process:query')") + public CommonResult> getProcessPage(@Valid ProcessPageReqVO pageReqVO) { + PageResult pageResult = processService.getProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺路线 Excel") + @PreAuthorize("@ss.hasPermission('biz:process:export')") + @OperateLog(type = EXPORT) + public void exportProcessExcel(@Valid ProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processService.getProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺路线.xls", "数据", ProcessRespVO.class, + BeanUtils.toBean(list, ProcessRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java new file mode 100644 index 00000000..3a8ef499 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java @@ -0,0 +1,34 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process.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 ProcessPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "工艺路线编号") + private String code; + + @Schema(description = "工艺路线名称,唯一") + private String name; + + @Schema(description = "状态,1表示正常,2表示禁用") + private Integer status; + + @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-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java new file mode 100644 index 00000000..abb3655f --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java @@ -0,0 +1,39 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process.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 ProcessRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "工艺路线编号") + @ExcelProperty("工艺路线编号") + private String code; + + @Schema(description = "工艺路线名称,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线名称,唯一") + private String name; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "状态,1表示正常,2表示禁用", converter = DictConvert.class) + @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java new file mode 100644 index 00000000..9edeb81e --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java @@ -0,0 +1,27 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 工艺路线新增/修改 Request VO") +@Data +public class ProcessSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "工艺路线编号") + private String code; + + @Schema(description = "工艺路线名称,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线名称,唯一不能为空") + private String name; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java new file mode 100644 index 00000000..0f479513 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail; + +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.biz.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.module.biz.service.processdetail.ProcessDetailService; + +@Tag(name = "管理后台 - 工艺路线明细") +@RestController +@RequestMapping("/biz/process-detail") +@Validated +public class ProcessDetailController { + + @Resource + private ProcessDetailService processDetailService; + + @PostMapping("/create") + @Operation(summary = "创建工艺路线明细") + @PreAuthorize("@ss.hasPermission('biz:process-detail:create')") + public CommonResult createProcessDetail(@Valid @RequestBody ProcessDetailSaveReqVO createReqVO) { + return success(processDetailService.createProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺路线明细") + @PreAuthorize("@ss.hasPermission('biz:process-detail:update')") + public CommonResult updateProcessDetail(@Valid @RequestBody ProcessDetailSaveReqVO updateReqVO) { + processDetailService.updateProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺路线明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('biz:process-detail:delete')") + public CommonResult deleteProcessDetail(@RequestParam("id") Long id) { + processDetailService.deleteProcessDetail(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺路线明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('biz:process-detail:query')") + public CommonResult getProcessDetail(@RequestParam("id") Long id) { + ProcessDetailDO processDetail = processDetailService.getProcessDetail(id); + return success(BeanUtils.toBean(processDetail, ProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺路线明细分页") + @PreAuthorize("@ss.hasPermission('biz:process-detail:query')") + public CommonResult> getProcessDetailPage(@Valid ProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = processDetailService.getProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺路线明细 Excel") + @PreAuthorize("@ss.hasPermission('biz:process-detail:export')") + @OperateLog(type = EXPORT) + public void exportProcessDetailExcel(@Valid ProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processDetailService.getProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺路线明细.xls", "数据", ProcessDetailRespVO.class, + BeanUtils.toBean(list, ProcessDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java new file mode 100644 index 00000000..c9ed1607 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java @@ -0,0 +1,40 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.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 ProcessDetailPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "工序id") + private Long procedureId; + + @Schema(description = "工序顺序号") + private Integer procedureSort; + + @Schema(description = "生产设备id") + private Long procedureEquipId; + + @Schema(description = "明细类型:1为工序,2为产品") + private Integer type; + + @Schema(description = "产品id(物料)") + private Long materialId; + + @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-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java new file mode 100644 index 00000000..fdeaee9d --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.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 ProcessDetailRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "工序id") + @ExcelProperty("工序id") + private Long procedureId; + + @Schema(description = "工序顺序号") + @ExcelProperty("工序顺序号") + private Integer procedureSort; + + @Schema(description = "生产设备id") + @ExcelProperty("生产设备id") + private Long procedureEquipId; + + @Schema(description = "明细类型:1为工序,2为产品") + @ExcelProperty("明细类型:1为工序,2为产品") + private Integer type; + + @Schema(description = "产品id(物料)") + @ExcelProperty("产品id(物料)") + private Long materialId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java new file mode 100644 index 00000000..bbd4b241 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java @@ -0,0 +1,31 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 工艺路线明细新增/修改 Request VO") +@Data +public class ProcessDetailSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "工序id") + private Long procedureId; + + @Schema(description = "工序顺序号") + private Integer procedureSort; + + @Schema(description = "生产设备id") + private Long procedureEquipId; + + @Schema(description = "明细类型:1为工序,2为产品") + private Integer type; + + @Schema(description = "产品id(物料)") + private Long materialId; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java new file mode 100644 index 00000000..dbf96874 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java @@ -0,0 +1,45 @@ +package com.chanko.yunxi.mes.module.biz.dal.dataobject.process; + +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("base_process") +@KeySequence("base_process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 工艺路线编号 + */ + private String code; + /** + * 工艺路线名称,唯一 + */ + private String name; + /** + * 状态,1表示正常,2表示禁用 + * + * 枚举 {@link TODO infra_boolean_string 对应的类} + */ + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java new file mode 100644 index 00000000..ca965766 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java @@ -0,0 +1,51 @@ +package com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail; + +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("base_process_detail") +@KeySequence("base_process_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDetailDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 工序id + */ + private Long procedureId; + /** + * 工序顺序号 + */ + private Integer procedureSort; + /** + * 生产设备id + */ + private Long procedureEquipId; + /** + * 明细类型:1为工序,2为产品 + */ + private Integer type; + /** + * 产品id(物料) + */ + private Long materialId; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java new file mode 100644 index 00000000..7b8cf04e --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java @@ -0,0 +1,30 @@ +package com.chanko.yunxi.mes.module.biz.dal.mysql.process; + +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.biz.dal.dataobject.process.ProcessDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.biz.controller.admin.process.vo.*; + +/** + * 工艺路线 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessMapper extends BaseMapperX { + + default PageResult selectPage(ProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessDO::getId, reqVO.getId()) + .eqIfPresent(ProcessDO::getCode, reqVO.getCode()) + .likeIfPresent(ProcessDO::getName, reqVO.getName()) + .eqIfPresent(ProcessDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProcessDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java new file mode 100644 index 00000000..6e85d4cb --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java @@ -0,0 +1,32 @@ +package com.chanko.yunxi.mes.module.biz.dal.mysql.processdetail; + +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.biz.dal.dataobject.processdetail.ProcessDetailDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo.*; + +/** + * 工艺路线明细 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessDetailDO::getId, reqVO.getId()) + .eqIfPresent(ProcessDetailDO::getProcedureId, reqVO.getProcedureId()) + .eqIfPresent(ProcessDetailDO::getProcedureSort, reqVO.getProcedureSort()) + .eqIfPresent(ProcessDetailDO::getProcedureEquipId, reqVO.getProcedureEquipId()) + .eqIfPresent(ProcessDetailDO::getType, reqVO.getType()) + .eqIfPresent(ProcessDetailDO::getMaterialId, reqVO.getMaterialId()) + .betweenIfPresent(ProcessDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java new file mode 100644 index 00000000..75302642 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.biz.service.process; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 工艺路线 Service 接口 + * + * @author 管理员 + */ +public interface ProcessService { + + /** + * 创建工艺路线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcess(@Valid ProcessSaveReqVO createReqVO); + + /** + * 更新工艺路线 + * + * @param updateReqVO 更新信息 + */ + void updateProcess(@Valid ProcessSaveReqVO updateReqVO); + + /** + * 删除工艺路线 + * + * @param id 编号 + */ + void deleteProcess(Long id); + + /** + * 获得工艺路线 + * + * @param id 编号 + * @return 工艺路线 + */ + ProcessDO getProcess(Long id); + + /** + * 获得工艺路线分页 + * + * @param pageReqVO 分页查询 + * @return 工艺路线分页 + */ + PageResult getProcessPage(ProcessPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java new file mode 100644 index 00000000..3ae33c7c --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.biz.service.process; + +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.biz.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +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.biz.dal.mysql.process.ProcessMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*; + +/** + * 工艺路线 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessServiceImpl implements ProcessService { + + @Resource + private ProcessMapper processMapper; + + @Override + public Long createProcess(ProcessSaveReqVO createReqVO) { + // 插入 + ProcessDO process = BeanUtils.toBean(createReqVO, ProcessDO.class); + processMapper.insert(process); + // 返回 + return process.getId(); + } + + @Override + public void updateProcess(ProcessSaveReqVO updateReqVO) { + // 校验存在 + validateProcessExists(updateReqVO.getId()); + // 更新 + ProcessDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDO.class); + processMapper.updateById(updateObj); + } + + @Override + public void deleteProcess(Long id) { + // 校验存在 + validateProcessExists(id); + // 删除 + processMapper.deleteById(id); + } + + private void validateProcessExists(Long id) { + if (processMapper.selectById(id) == null) { + throw exception(PROCESS_NOT_EXISTS); + } + } + + @Override + public ProcessDO getProcess(Long id) { + return processMapper.selectById(id); + } + + @Override + public PageResult getProcessPage(ProcessPageReqVO pageReqVO) { + return processMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java new file mode 100644 index 00000000..1ee86729 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.biz.service.processdetail; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 工艺路线明细 Service 接口 + * + * @author 管理员 + */ +public interface ProcessDetailService { + + /** + * 创建工艺路线明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcessDetail(@Valid ProcessDetailSaveReqVO createReqVO); + + /** + * 更新工艺路线明细 + * + * @param updateReqVO 更新信息 + */ + void updateProcessDetail(@Valid ProcessDetailSaveReqVO updateReqVO); + + /** + * 删除工艺路线明细 + * + * @param id 编号 + */ + void deleteProcessDetail(Long id); + + /** + * 获得工艺路线明细 + * + * @param id 编号 + * @return 工艺路线明细 + */ + ProcessDetailDO getProcessDetail(Long id); + + /** + * 获得工艺路线明细分页 + * + * @param pageReqVO 分页查询 + * @return 工艺路线明细分页 + */ + PageResult getProcessDetailPage(ProcessDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java new file mode 100644 index 00000000..053c0b8e --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.biz.service.processdetail; + +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.biz.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +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.biz.dal.mysql.processdetail.ProcessDetailMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*; + +/** + * 工艺路线明细 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessDetailServiceImpl implements ProcessDetailService { + + @Resource + private ProcessDetailMapper processDetailMapper; + + @Override + public Long createProcessDetail(ProcessDetailSaveReqVO createReqVO) { + // 插入 + ProcessDetailDO processDetail = BeanUtils.toBean(createReqVO, ProcessDetailDO.class); + processDetailMapper.insert(processDetail); + // 返回 + return processDetail.getId(); + } + + @Override + public void updateProcessDetail(ProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateProcessDetailExists(updateReqVO.getId()); + // 更新 + ProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDetailDO.class); + processDetailMapper.updateById(updateObj); + } + + @Override + public void deleteProcessDetail(Long id) { + // 校验存在 + validateProcessDetailExists(id); + // 删除 + processDetailMapper.deleteById(id); + } + + private void validateProcessDetailExists(Long id) { + if (processDetailMapper.selectById(id) == null) { + throw exception(PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ProcessDetailDO getProcessDetail(Long id) { + return processDetailMapper.selectById(id); + } + + @Override + public PageResult getProcessDetailPage(ProcessDetailPageReqVO pageReqVO) { + return processDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml new file mode 100644 index 00000000..f1121840 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml new file mode 100644 index 00000000..bedf7fea --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-server/src/api/biz/process/index.ts b/mes-server/src/api/biz/process/index.ts new file mode 100644 index 00000000..52ae50e3 --- /dev/null +++ b/mes-server/src/api/biz/process/index.ts @@ -0,0 +1,38 @@ +import request from '@/config/axios' + +export interface ProcessVO { + id: number + code: string + name: string + status: number +} + +// 查询工艺路线分页 +export const getProcessPage = async (params) => { + return await request.get({ url: `/biz/process/page`, params }) +} + +// 查询工艺路线详情 +export const getProcess = async (id: number) => { + return await request.get({ url: `/biz/process/get?id=` + id }) +} + +// 新增工艺路线 +export const createProcess = async (data: ProcessVO) => { + return await request.post({ url: `/biz/process/create`, data }) +} + +// 修改工艺路线 +export const updateProcess = async (data: ProcessVO) => { + return await request.put({ url: `/biz/process/update`, data }) +} + +// 删除工艺路线 +export const deleteProcess = async (id: number) => { + return await request.delete({ url: `/biz/process/delete?id=` + id }) +} + +// 导出工艺路线 Excel +export const exportProcess = async (params) => { + return await request.download({ url: `/biz/process/export-excel`, params }) +} \ No newline at end of file diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index dbeac7f8..7cb36e89 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -192,3 +192,35 @@ CREATE TABLE `base_system_parameters` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT='系统参数设置表'; +drop table if exists `base_process`; +CREATE TABLE `base_process` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一', + `code` varchar(64) COLLATE DEFAULT NULL COMMENT '工艺路线编号', + `name` varchar(64) COLLATE NOT NULL COMMENT '工艺路线名称,唯一', + `status` tinyint(1) NOT NULL COMMENT '状态,1表示正常,2表示禁用', + `creator` varchar(64) COLLATE DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) COLLATE DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB COMMENT='工艺路线表'; + +drop table if exists `base_process_detail`; +CREATE TABLE `base_process_detail` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一', + `procedure_id` bigint(20) DEFAULT NULL COMMENT '工序id', + `procedure_sort` int(11) DEFAULT NULL COMMENT '工序顺序号', + `procedure_equip_id` bigint(20) DEFAULT NULL COMMENT '生产设备id', + `type` int(11) DEFAULT NULL COMMENT '明细类型:1为工序,2为产品', + `material_id` bigint(20) DEFAULT NULL COMMENT '产品id(物料)', + `creator` varchar(64) COLLATE DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) COLLATE DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB COMMENT='工艺路线明细表'; + From 5cde58429d3a17746123a2bebcc2189d902ea51b Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 27 May 2024 17:00:26 +0800 Subject: [PATCH 25/35] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BFapi?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/biz/process/index.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts new file mode 100644 index 00000000..05e41401 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +export interface ProcessVO { + id: number + code: string + name: string + status: number + matItemDOList:[] + procedureItemDOList:[] +} + +// 查询工艺路线分页 +export const getProcessPage = async (params) => { + return await request.get({ url: `/biz/process/page`, params }) +} + +// 查询工艺路线详情 +export const getProcess = async (id: number) => { + return await request.get({ url: `/biz/process/get?id=` + id }) +} + +// 新增工艺路线 +export const createProcess = async (data: ProcessVO) => { + return await request.post({ url: `/biz/process/create`, data }) +} + +// 修改工艺路线 +export const updateProcess = async (data: ProcessVO) => { + return await request.put({ url: `/biz/process/update`, data }) +} + +// 删除工艺路线 +export const deleteProcess = async (id: number) => { + return await request.delete({ url: `/biz/process/delete?id=` + id }) +} + +// 导出工艺路线 Excel +export const exportProcess = async (params) => { + return await request.download({ url: `/biz/process/export-excel`, params }) +} From 2a197667841bb01624c59c157355188dfbf09b04 Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 27 May 2024 17:01:23 +0800 Subject: [PATCH 26/35] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=20ap?= =?UTF-8?q?i=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts index 05e41401..b274be31 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts @@ -5,8 +5,8 @@ export interface ProcessVO { code: string name: string status: number - matItemDOList:[] - procedureItemDOList:[] + matList:[] + procedureList:[] } // 查询工艺路线分页 From 73ada3e5a316e2dc55003059244569df7b276bd1 Mon Sep 17 00:00:00 2001 From: siontion Date: Mon, 27 May 2024 17:03:40 +0800 Subject: [PATCH 27/35] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=20ap?= =?UTF-8?q?i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/biz/process/index.ts | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts index b274be31..a4fe345d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/process/index.ts @@ -38,3 +38,42 @@ export const deleteProcess = async (id: number) => { export const exportProcess = async (params) => { return await request.download({ url: `/biz/process/export-excel`, params }) } + +// 查询工艺路线明细分页 +export const getProcessDetailPage = async (params) => { + return await request.get({ url: `/biz/process-detail/page`, params }) +} + +// 查询工艺路线明细详情 +export const getProcessDetail = async (id: number) => { + return await request.get({ url: `/biz/process-detail/get?id=` + id }) +} +//=========================================================== + +export interface ProcessDetailVO { + id: number + procedureId: number + procedureSort: number + procedureEquipId: number + type: number + materialId: number +} +// 新增工艺路线明细 +export const createProcessDetail = async (data: ProcessDetailVO) => { + return await request.post({ url: `/biz/process-detail/create`, data }) +} + +// 修改工艺路线明细 +export const updateProcessDetail = async (data: ProcessDetailVO) => { + return await request.put({ url: `/biz/process-detail/update`, data }) +} + +// 删除工艺路线明细 +export const deleteProcessDetail = async (id: number) => { + return await request.delete({ url: `/biz/process-detail/delete?id=` + id }) +} + +// 导出工艺路线明细 Excel +export const exportProcessDetail = async (params) => { + return await request.download({ url: `/biz/process-detail/export-excel`, params }) +} From 5465605098a54e2fe0c33c011bdc2459dd183ec8 Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Mon, 27 May 2024 17:33:15 +0800 Subject: [PATCH 28/35] =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=AE=A1=E6=A0=B8=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/biz/storage/StorageOut.vue | 60 +++++++++++++++---- .../src/views/biz/storage/outdex.vue | 2 +- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue index 8d937546..394f9dfe 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageOut.vue @@ -5,8 +5,8 @@
- - + +
- + {{ userList.find((user) => user.id == formData.outbound)?.nickname }} - + {{ formatDate(formData.outboundTime, 'YYYY-MM-DD HH:mm') }} - + + {{ userList.find((user) => user.id == formData.cancel)?.nickname }} @@ -580,18 +583,42 @@ + + + + {{ userList.find((user) => user.id == formData.cancel)?.nickname }} + + + + + {{ formatDate(formData.cancelTime, 'YYYY-MM-DD HH:mm') }} + + + @@ -903,6 +903,13 @@ const deleteFormData = async () => { const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 const saveFormData = async (active, status, type) => { + if(active === 'SUBMIT'){ + //提示 + if (formData.value.matItemDOList.length === 0) { + message.alertWarning('请添加物料信息!') + return + } + } await formRef.value.validate() formData.value.active = active formData.value.status = status @@ -917,12 +924,11 @@ const saveFormData = async (active, status, type) => { commonStore.setStore('active', 'update') commonStore.setStore('id', formData.value.id) reload() - } else if (formData.value.active === 'SAVE' && formData.value.status == 4) { + } else if (formData.value.active === 'SUBMIT' && formData.value.status == 2) { data.outbound = useUserStore().getUser.id data.outboundTime = new Date() - await StorageApi.updateStorage(data) - } else if (formData.value.active === 'CANCEL') { + } else if (formData.value.active === 'INVALID') { data.cancel = useUserStore().getUser.id data.cancelTime = new Date() await StorageApi.updateStorage(data) @@ -968,14 +974,6 @@ const saveFormData = async (active, status, type) => { } const saveFormDataSUBMIT = (active, status) => { - //执行保存 - saveFormData('SAVE', 1, 'war') - //提示 - if (formData.value.matItemDOList.length === 0) { - message.alertWarning('请添加物料信息!') - return - } - setTimeout(async () => { //提交 formData.value.active = active @@ -987,6 +985,7 @@ const saveFormDataSUBMIT = (active, status) => { await initStatus(formData.value.status) commonResult = '审核成功' message.success(t(commonResult)) + reload() }, 1000) } //删除新增物料信息 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/outdexAudit.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/outdexAudit.vue index 2c92f29b..6df73285 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/outdexAudit.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/outdexAudit.vue @@ -225,7 +225,7 @@ const queryParams = reactive({ stockNo: undefined, headerNo: undefined, description: undefined, - status: 4, + status: 2, whId: undefined, creator: undefined, createTime: [], From 02732a17d591990818585c8d8a22c32f2191ec56 Mon Sep 17 00:00:00 2001 From: siontion Date: Tue, 28 May 2024 10:44:43 +0800 Subject: [PATCH 31/35] =?UTF-8?q?=E3=80=90=E5=87=BA=E5=BA=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E3=80=91=20=E8=8E=B7=E5=8F=96=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=8F=82=E6=95=B0=EF=BC=8C=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E8=B6=85=E9=87=8F=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/storage/StorageServiceImpl.java | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java index 10931ca6..be8def23 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java @@ -10,9 +10,12 @@ import com.chanko.yunxi.mes.module.biz.controller.admin.storagemat.vo.StorageMat import com.chanko.yunxi.mes.module.biz.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagemat.StorageMatDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.systemparameters.SystemParametersDO; import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParametersMapper; import com.chanko.yunxi.mes.module.biz.enums.CodeEnum; import com.chanko.yunxi.mes.module.biz.enums.StockTypeEnum; +import com.chanko.yunxi.mes.module.biz.enums.SystemParmetersEnum; import com.chanko.yunxi.mes.module.biz.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.biz.service.serialnumber.SerialNumberService; import com.chanko.yunxi.mes.module.biz.service.storagemat.StorageMatService; @@ -52,6 +55,9 @@ public class StorageServiceImpl implements StorageService { @Resource private StorageMatService storageMatService; + @Resource + private SystemParametersMapper systemParametersMapper; + @Override @Transactional(rollbackFor = Exception.class) public Long createStorage(StorageSaveReqVO createReqVO) { @@ -92,28 +98,38 @@ public class StorageServiceImpl implements StorageService { StorageDO updateObj = BeanUtils.toBean(updateReqVO, StorageDO.class); storageMapper.updateById(updateObj); + // 数据校验 + StorageMatPageReqVO reqVO = new StorageMatPageReqVO(); + reqVO.setStockId(updateReqVO.getId()) + .setWhId(updateReqVO.getWhId()); + List storageMatList = storageMatService.getStorageMatPage(reqVO); + if(CollUtil.isEmpty(storageMatList)) { + throw exception(STORAGE_MAT_NOT_EXISTS); + } + + // 获取系统参数,判断是否允许超量出库 + SystemParametersDO systemParametersDO = systemParametersMapper.selectOne("code", SystemParmetersEnum.NEGATIVE_INVENTORY_SWITCH.getDescription()); + + boolean isAllow = false; + if(systemParametersDO != null && systemParametersDO.getCurrentValue().equals("1")){ + isAllow = true; + } + + if(isAllow) { + for (StorageMatDO storageMatDO : storageMatList) { + if (storageMatDO.getStorageOkQty().compareTo(new BigDecimal(0)) == 0 + || storageMatDO.getStockQuantity().compareTo(storageMatDO.getStorageOkQty()) < 0) { + throw exception(STORAGE_STOCK_QUANTITY_LACK); + } + } + } + // 如为提交同步生成出库单 if(updateObj.getStockType() == StockTypeEnum.OUT.getCode()){ // 逻辑变更:由提交状态改为审核状态时,通过用友接口推送出库单到TPlus if(OperateTypeEnum.AUDIT.name().equals(updateReqVO.getActive())){ - // 数据校验 - StorageMatPageReqVO reqVO = new StorageMatPageReqVO(); - reqVO.setStockId(updateReqVO.getId()) - .setWhId(updateReqVO.getWhId()); - List storageMatList = storageMatService.getStorageMatPage(reqVO); - if(CollUtil.isEmpty(storageMatList)) { - throw exception(STORAGE_MAT_NOT_EXISTS); - } - - for (StorageMatDO storageMatDO : storageMatList) { - if(storageMatDO.getStorageOkQty().compareTo(new BigDecimal(0)) == 0 - || storageMatDO.getStockQuantity().compareTo(storageMatDO.getStorageOkQty()) < 0){ - throw exception(STORAGE_STOCK_QUANTITY_LACK); - } - } - try { crossOrderManager.createStockOutOrder(updateObj.getId()); } catch (Exception e) { From 49ed1e6d148d361bb7aa3493664b6a9a6577f462 Mon Sep 17 00:00:00 2001 From: siontion Date: Tue, 28 May 2024 13:48:40 +0800 Subject: [PATCH 32/35] =?UTF-8?q?=E3=80=90=E5=93=81=E8=B4=A8=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E9=80=9A=E7=9F=A5=E5=8D=95=E3=80=91=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/UnqualifiedNotificationFileReqVO.java | 22 +++++++++++++++++++ .../vo/UnqualifiedNotificationSaveReqVO.java | 3 +++ .../UnqualifiedNotificationServiceImpl.java | 14 ++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationFileReqVO.java diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationFileReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationFileReqVO.java new file mode 100644 index 00000000..23d5bcc0 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationFileReqVO.java @@ -0,0 +1,22 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.unqualifiednotification.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 品质异常通知单附件信息 Request VO") +@Data +public class UnqualifiedNotificationFileReqVO { + + @Schema(description = "时间戳") + private String k; + + @Schema(description = "文件地址url") + private String v; + + + +} diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationSaveReqVO.java index 4578f0d7..33fdd3bb 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationSaveReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/unqualifiednotification/vo/UnqualifiedNotificationSaveReqVO.java @@ -70,4 +70,7 @@ public class UnqualifiedNotificationSaveReqVO { @Schema(description = "操作") private String active; + @Schema(description = "附件列表") + private List mediaList; + } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java index c9123b21..59968054 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/unqualifiednotification/UnqualifiedNotificationServiceImpl.java @@ -4,6 +4,7 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; +import com.chanko.yunxi.mes.module.biz.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationFileReqVO; import com.chanko.yunxi.mes.module.biz.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationPageReqVO; import com.chanko.yunxi.mes.module.biz.controller.admin.unqualifiednotification.vo.UnqualifiedNotificationSaveReqVO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.serialnumber.SerialNumberDO; @@ -13,6 +14,8 @@ import com.chanko.yunxi.mes.module.biz.enums.BusinessTypeEnum; import com.chanko.yunxi.mes.module.biz.enums.CodeEnum; import com.chanko.yunxi.mes.module.biz.enums.UnqualifiedNotificationStatusEnum; import com.chanko.yunxi.mes.module.biz.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; +import com.chanko.yunxi.mes.module.infra.dal.mysql.file.FileMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -40,6 +43,9 @@ public class UnqualifiedNotificationServiceImpl implements UnqualifiedNotificati @Resource private SerialNumberService serialNumberService; + @Resource + private FileMapper fileMapper; + @Override @Transactional(rollbackFor = Exception.class) public Long createUnqualifiedNotification(UnqualifiedNotificationSaveReqVO createReqVO) { @@ -52,6 +58,14 @@ public class UnqualifiedNotificationServiceImpl implements UnqualifiedNotificati unqualifiedNotificationMapper.insert(unqualifiedNotification); + if(createReqVO.getMediaList().stream().count()>0){ + for(UnqualifiedNotificationFileReqVO item : createReqVO.getMediaList()){ + FileDO fileDO = fileMapper.selectOne("business_id",item.getK()); + item.setK(unqualifiedNotification.getId().toString()); + fileMapper.updateById(fileDO); + } + } + // 回写序列记录 serialNumberService.updateSerialNumber(serialNumberDO); // 返回 From d50100d000a23c547166ce09faea55e562ee3d77 Mon Sep 17 00:00:00 2001 From: siontion Date: Tue, 28 May 2024 15:05:33 +0800 Subject: [PATCH 33/35] =?UTF-8?q?=E3=80=90=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E3=80=91uploadWatch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infra/controller/admin/file/FileController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java index 911fc3ae..bf36cc84 100644 --- a/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java +++ b/mes-module-infra/mes-module-infra-biz/src/main/java/com/chanko/yunxi/mes/module/infra/controller/admin/file/FileController.java @@ -61,6 +61,17 @@ public class FileController { } return success(null); } + @PostMapping("/uploadWatch") + @Operation(summary = "上传文件(批量)") + @OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要 + public CommonResult uploadFileWatch(FileUploadBatchReqVO uploadReqVO) throws Exception { + MultipartFile[] files = uploadReqVO.getFiles(); + String url = ""; + for (MultipartFile file : files) { + url = fileService.createFile(file.getOriginalFilename(), null, IoUtil.readBytes(file.getInputStream()), uploadReqVO.getBusinessType(), uploadReqVO.getBusinessId(), uploadReqVO.getBusinessFileType(), uploadReqVO.getBusinessFileRemark()); + } + return success(url); + } @DeleteMapping("/delete") @Operation(summary = "删除文件") From dca6ad63d11a15aa93904540cf6bd3e59a66bf8f Mon Sep 17 00:00:00 2001 From: siontion Date: Tue, 28 May 2024 15:36:42 +0800 Subject: [PATCH 34/35] =?UTF-8?q?=E3=80=90=E6=AF=8F=E6=97=A5=E6=8A=A5?= =?UTF-8?q?=E5=B7=A5=E8=AE=B0=E5=BD=95=E3=80=91=E5=A2=9E=E5=8A=A0=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=E6=90=9C=E7=B4=A2getAssembleCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java index f4bc6f15..d4a0a58a 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java @@ -55,6 +55,7 @@ public interface TaskReportMapper extends BaseMapperX { .and(!StringUtils.isEmpty(reqVO.getProjectSubName()), Wrapper -> Wrapper.like(MaterialDO::getName, reqVO.getProjectSubName()).or().like(MaterialDO::getCode, reqVO.getProjectSubName())) .like(!StringUtils.isEmpty(reqVO.getPlanCode()), PlanDO::getPlanNo, reqVO.getPlanCode()) .like(!StringUtils.isEmpty(reqVO.getDispatchCode()), TaskDispatchDO::getCode, reqVO.getDispatchCode()) + .like(!StringUtils.isEmpty(reqVO.getAssembleCode()), TaskReportDO::getAssembleCode, reqVO.getAssembleCode()) ; From 02c3c780a11e59683fc029539aa4672ec61e7cfd Mon Sep 17 00:00:00 2001 From: qiuhongwu Date: Tue, 28 May 2024 16:05:13 +0800 Subject: [PATCH 35/35] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=20=20=E7=94=9F=E4=BA=A7=E6=B4=BE=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=8F=B7=E6=A0=B9=E6=8D=AEtype=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes-ui-admin-vue3/src/views/biz/taskreport/index.vue | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/taskreport/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/taskreport/index.vue index 5befd07e..3a38fdb6 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/taskreport/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/taskreport/index.vue @@ -42,7 +42,14 @@ - + + +