【需求】完成bom清单列表

pull/4/head
zengchenxi 8 months ago
parent 236510d24e
commit a20ebfddff

@ -49,4 +49,16 @@ public class ProcessBomPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "生产计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
} }

@ -64,4 +64,16 @@ public class ProcessBomRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
} }

@ -43,14 +43,6 @@ public class ProcessBomDO extends BaseDO {
* id * id
*/ */
private Long projectSubId; private Long projectSubId;
/**
*
*/
private String projectSubName;
/**
*
*/
private String projectSubCode;
/** /**
* bom * bom
*/ */
@ -69,5 +61,21 @@ public class ProcessBomDO extends BaseDO {
* ,12 * ,12
*/ */
private Integer status; private Integer status;
/**
*
*/
@TableField(exist = false)
private String projectSubName;
@TableField(exist = false)
private String planCode;
@TableField(exist = false)
private String projectCode;
@TableField(exist = false)
private String customerName;
@TableField(exist = false)
private String projectName;
} }

@ -1,13 +1,16 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.processbom; package com.chanko.yunxi.mes.module.heli.dal.mysql.processbom;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; 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.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.*; import org.springframework.util.StringUtils;
/** /**
* bom Mapper * bom Mapper
@ -18,19 +21,28 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.*;
public interface ProcessBomMapper extends BaseMapperX<ProcessBomDO> { public interface ProcessBomMapper extends BaseMapperX<ProcessBomDO> {
default PageResult<ProcessBomDO> selectPage(ProcessBomPageReqVO reqVO) { default PageResult<ProcessBomDO> selectPage(ProcessBomPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProcessBomDO>() MPJLambdaWrapper<ProcessBomDO> query = new MPJLambdaWrapper<>();
.eqIfPresent(ProcessBomDO::getCode, reqVO.getCode()) query.selectAll(ProcessBomDO.class)
.eqIfPresent(ProcessBomDO::getPlanId, reqVO.getPlanId()) .select("a.plan_no as planCode", "b.code as projectCode", "c.name as customerName", "b.project_name as projectName")
.eqIfPresent(ProcessBomDO::getProjectId, reqVO.getProjectId()) .select("d.name as projectSubName")
.eqIfPresent(ProcessBomDO::getProjectSubId, reqVO.getProjectSubId()) .leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessBomDO::getPlanId)
.likeIfPresent(ProcessBomDO::getProjectSubName, reqVO.getProjectSubName()) .leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId)
.eqIfPresent(ProcessBomDO::getProjectSubCode, reqVO.getProjectSubCode()) .leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.eqIfPresent(ProcessBomDO::getVersion, reqVO.getVersion()) .leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId)
.eqIfPresent(ProcessBomDO::getBomStatus, reqVO.getBomStatus()) .orderByDesc(ProcessBomDO::getId)
.eqIfPresent(ProcessBomDO::getRemark, reqVO.getRemark()) .disableSubLogicDel()
.eqIfPresent(ProcessBomDO::getStatus, reqVO.getStatus()) ;
.betweenIfPresent(ProcessBomDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ProcessBomDO::getId)); query.like(!StringUtils.isEmpty(reqVO.getCode()), ProcessBomDO::getCode, reqVO.getCode())
.like(!StringUtils.isEmpty(reqVO.getPlanCode()), PlanDO::getPlanNo, reqVO.getPlanCode())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()), CustomerDO::getName, reqVO.getCustomerName())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName())
.eq(reqVO.getBomStatus() != null, ProcessBomDO::getBomStatus, reqVO.getBomStatus())
;
return selectPage(reqVO, query);
} }
} }

@ -243,4 +243,5 @@ export enum DICT_TYPE {
HELI_PROJECT_PLAN_STATUS = 'heli_project_plan_status',//生产计划状态 HELI_PROJECT_PLAN_STATUS = 'heli_project_plan_status',//生产计划状态
HELI_CRAFT = 'heli_craft',//工艺流程 HELI_CRAFT = 'heli_craft',//工艺流程
HELI_PROJECT_MATERIAL_PLAN_STATUS = 'heli_project_material_plan_status',//物料需求计划状态 HELI_PROJECT_MATERIAL_PLAN_STATUS = 'heli_project_material_plan_status',//物料需求计划状态
HELI_BOM_STATUS = 'heli_bom_status', //bom状态
} }

@ -1,4 +1,8 @@
<template> <template>
<el-card class="hl-card">
<template #header>
<span>BOM清单维护</span>
</template>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form
@ -6,75 +10,66 @@
:model="queryParams" :model="queryParams"
ref="queryFormRef" ref="queryFormRef"
:inline="true" :inline="true"
label-width="68px" label-width="120px"
> >
<el-form-item label="编号,唯一" prop="code"> <el-form-item label="BOM编号" prop="code">
<el-input <el-input
v-model="queryParams.code" v-model="queryParams.code"
placeholder="请输入编号,唯一" placeholder="请输入BOM编号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="生产计划id" prop="planId"> <el-form-item label="生产计划单号" prop="planCode">
<el-input <el-input
v-model="queryParams.planId" v-model="queryParams.planCode"
placeholder="请输入生产计划id" placeholder="请输入生产计划单号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目id" prop="projectId"> <el-form-item label="项目编号" prop="projectCode">
<el-input <el-input
v-model="queryParams.projectId" v-model="queryParams.projectCode"
placeholder="请输入项目id" placeholder="请输入项目编号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="子项目id" prop="projectSubId"> <el-form-item label="客户名称" prop="customerName">
<el-input <el-input
v-model="queryParams.projectSubId" v-model="queryParams.customerName"
placeholder="请输入子项目id" placeholder="请输入客户名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="projectSubName"> <el-form-item label="项目名称" prop="projectName">
<el-input <el-input
v-model="queryParams.projectSubName" v-model="queryParams.projectName"
placeholder="请输入项目名称" placeholder="请输入项目名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="子项目编号" prop="projectSubCode"> <el-form-item label="子项目名称" prop="projectSubName">
<el-input
v-model="queryParams.projectSubCode"
placeholder="请输入子项目编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="bom版本号" prop="version">
<el-input <el-input
v-model="queryParams.version" v-model="queryParams.projectSubName"
placeholder="请输入bom版本号" placeholder="请输入子项目名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="bom状态 已保存|已提交 1|2" prop="bomStatus"> <el-form-item label="单据状态" prop="bomStatus">
<el-select <el-select
v-model="queryParams.bomStatus" v-model="queryParams.bomStatus"
placeholder="请选择bom状态 已保存|已提交 1|2" placeholder="请选择单据状态"
clearable clearable
class="!w-240px" class="!w-240px"
> >
@ -86,56 +81,9 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="状态,1表示正常2表示禁用" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态,1表示正常2表示禁用"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['heli:process-bom:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['heli:process-bom:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</ContentWrap> </ContentWrap>
@ -143,45 +91,41 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="自增字段,唯一" align="center" prop="id" /> <el-table-column fixed label="序号" type="index" width="60" />
<el-table-column label="编号,唯一" align="center" prop="code" /> <el-table-column label="BOM编号" align="center" prop="code" width="220" />
<el-table-column label="生产计划id" align="center" prop="planId" /> <el-table-column label="生产计划单号" align="center" prop="planCode" width="180" />
<el-table-column label="项目id" align="center" prop="projectId" /> <el-table-column label="项目编号" align="center" prop="projectCode" width="220" />
<el-table-column label="子项目id" align="center" prop="projectSubId" /> <el-table-column label="客户名称" align="center" prop="customerName" width="240" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" /> <el-table-column label="项目名称" align="center" prop="projectName" width="180" />
<el-table-column label="子项目编号" align="center" prop="projectSubCode" /> <el-table-column label="子项目名称" align="center" prop="projectSubName" width="180" />
<el-table-column label="bom版本号" align="center" prop="version" />
<el-table-column label="bom状态 已保存|已提交 1|2" align="center" prop="bomStatus">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_BOM_STATUS" :value="scope.row.bomStatus" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="状态,1表示正常2表示禁用" align="center" prop="status" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
prop="createTime" prop="createTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="220"
/> />
<el-table-column label="操作" align="center"> <el-table-column label="BOM版本号" align="center" prop="version" width="140" />
<el-table-column label="单据状态" align="center" prop="bomStatus" width="140">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_BOM_STATUS" :value="scope.row.bomStatus" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="160">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
type="primary" type="primary"
@click="openForm('update', scope.row.id)" @click="openDetail('update', scope.row.id)"
v-hasPermi="['heli:process-bom:update']"
> >
编辑 编辑
</el-button> </el-button>
<el-button <el-button
link link
type="danger" type="primary"
@click="handleDelete(scope.row.id)" @click="openDetail('detail', scope.row.id)"
v-hasPermi="['heli:process-bom:delete']"
> >
删除 查看详情
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -194,9 +138,7 @@
@pagination="getList" @pagination="getList"
/> />
</ContentWrap> </ContentWrap>
</el-card>
<!-- 表单弹窗添加/修改 -->
<ProcessBomForm ref="formRef" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -204,13 +146,14 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import * as ProcessBomApi from '@/api/heli/processbom' import * as ProcessBomApi from '@/api/heli/processbom'
import ProcessBomForm from './ProcessBomForm.vue' import {useCommonStateWithOut} from "@/store/modules/common";
defineOptions({ name: 'ProcessBom' }) defineOptions({ name: 'ProcessBom' })
const commonStore = useCommonStateWithOut()
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
const router = useRouter()
const loading = ref(true) // const loading = ref(true) //
const list = ref([]) // const list = ref([]) //
const total = ref(0) // const total = ref(0) //
@ -218,11 +161,11 @@ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
code: undefined, code: undefined,
planId: undefined, planCode: undefined,
projectId: undefined, projectCode: undefined,
projectSubId: undefined, customerName: undefined,
projectSubName: undefined,
projectSubName: undefined, projectSubName: undefined,
projectSubCode: undefined,
version: undefined, version: undefined,
bomStatus: undefined, bomStatus: undefined,
remark: undefined, remark: undefined,
@ -290,6 +233,18 @@ const handleExport = async () => {
} }
} }
/** 添加/修改操作 */
const openDetail = (type: string, id?: number) => {
commonStore.setStore("active", type);
commonStore.setStore("id", id);
router.push({
name: 'ProcessBomDetail',
query: {
operateId: Math.random()
}
})
}
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
getList() getList()

@ -197,8 +197,6 @@ CREATE TABLE `pro_process_bom` (
`plan_id` BIGINT(20) NOT NULL COMMENT '生产计划id', `plan_id` BIGINT(20) NOT NULL COMMENT '生产计划id',
`project_id` BIGINT(20) NOT NULL COMMENT '项目id', `project_id` BIGINT(20) NOT NULL COMMENT '项目id',
`project_sub_id` bigint(20) NOT NULL COMMENT '子项目id', `project_sub_id` bigint(20) NOT NULL COMMENT '子项目id',
`project_sub_name` varchar(128) NOT NULL comment '子项目名称',
`project_sub_code` varchar(128) NOT NULL comment '子项目编号',
`version` int(11) not null DEFAULT '0' COMMENT 'bom版本号', `version` int(11) not null DEFAULT '0' COMMENT 'bom版本号',
`bom_status` TINYINT(1) not null comment 'bom状态 已保存|已提交 1|2', `bom_status` TINYINT(1) not null comment 'bom状态 已保存|已提交 1|2',
`remark` varchar(255) DEFAULT NULL COMMENT '备注', `remark` varchar(255) DEFAULT NULL COMMENT '备注',

Loading…
Cancel
Save