零件采购

This commit is contained in:
wb_zhanghaoyuan 2025-06-26 20:38:25 +08:00
parent 9c4a1f5e3d
commit 1a14def1db
8 changed files with 99 additions and 46 deletions

View File

@ -199,4 +199,18 @@ public class MaterialPlanController {
public CommonResult<Boolean> delMaterial(@RequestParam("id") Long id) {
return materialPlanService.delMaterial(id);
}
// @PostMapping("/getPartPurchasePages")
// @Operation(summary = "获得零件采购分页")
// public CommonResult<PageResult<MaterialPlanBoomDO>> getPartPurchasePages(@Valid @RequestBody MaterialPlanPageReqVO pageReqVO) {
// PageResult<MaterialPlanBoomDO> pageResult = materialPlanService.getPartPurchasePages(pageReqVO);
// return success(pageResult);
// }
@GetMapping("/getPartPurchasePages")
@Operation(summary = "获得零件采购分页")
public CommonResult<PageResult<MaterialPlanBoomDO>> getPartPurchasePages() {
String a ="asdij";
return null;
}
}

View File

@ -69,5 +69,11 @@ public class MaterialPlanPageReqVO extends PageParam {
@Schema(description = "制单日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] matPlanDate;
@Schema(description = "物料名称")
private String matName;
@Schema(description = "零件采购需求状态(0-待送审 1 -已送审 2-已批准 3-已打回)")
private Integer mplanStatus;
@Schema(description = "责任人")
private String duEmpName;
}

View File

@ -162,4 +162,15 @@ public class MaterialPlanBoomDO extends BaseDO {
private String customerBriefName;
@TableField(exist = false)
private String boomArriveDates;
/**
* 单位
*/
@TableField(exist = false)
private String unit;
/**
* 责任人姓名
*/
@TableField(exist = false)
private String duEmpName;
}

View File

@ -192,6 +192,35 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
return selectPage(pageReqVO, query);
}
default PageResult<MaterialPlanBoomDO> getPartsPages(MaterialPlanPageReqVO pageReqVO){
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
query.selectAll(MaterialPlanBoomDO.class)
.select("p.project_name as projectName","p.name as projectSubName")
.select("d.blueprint_no as blueprintNo","d.unit as unit")
.select("a.nickname as duEmpName","c.name as procedureName","e.name as compositionName")
.select(MaterialPlanDO::getBrief)
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
.leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId)
.leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
.leftJoin(ProcedureDO.class, "c", ProcedureDO::getId, MaterialPlanBoomDO::getProcedureId)
.leftJoin(CompositionDO.class, "e", CompositionDO::getId, ProcessBomDetailDO::getCompositionId)
.disableSubLogicDel();
query
.like(!StringUtils.isEmpty(pageReqVO.getProjectName()),MaterialPlanDO::getProjectName, pageReqVO.getProjectName())
.like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), MaterialPlanDO::getName, pageReqVO.getProjectSubName())
.like(!StringUtils.isEmpty(pageReqVO.getMaterialName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMaterialName())
.like(!StringUtils.isEmpty(pageReqVO.getMatName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMatName())
.like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
.like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName())
.eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType())
.eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus())
.eq(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus())
.eq(Objects.nonNull(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo());
return selectPage(pageReqVO, query);
}
// default PageResult<MaterialPlanBoomDO> selectPage(MaterialPlanBoomPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanBoomDO>()
// .eqIfPresent(MaterialPlanBoomDO::getId, reqVO.getId())

View File

@ -80,4 +80,6 @@ public interface MaterialPlanService {
Boolean supplement(List<StorageLogNowDO> list);
CommonResult<Boolean> delMaterial(Long id);
PageResult<MaterialPlanBoomDO> getPartPurchasePages(MaterialPlanPageReqVO pageReqVO);
}

View File

@ -425,4 +425,9 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
return null;
}
@Override
public PageResult<MaterialPlanBoomDO> getPartPurchasePages(MaterialPlanPageReqVO pageReqVO) {
return materialPlanBoomMapper.getPartsPages(pageReqVO);
}
}

View File

@ -94,3 +94,13 @@ export const supplement = async (data) => {
export const delMaterial = async (id: number) => {
return await request.delete({ url: `/heli/material-plan/delMaterial?id=` + id })
}
// // 查询零件采购分页
// export const getPartPurchasePages = async (params) => {
// return await request.post({ url: `/heli/material-plan/getPartPurchasePages`, params })
// }
// 更新采购单主驳回
export const getPartPurchasePages = async () => {
return await request.get({ url: `/heli/material-plan/getPartPurchasePage` })
}

View File

@ -12,17 +12,17 @@
<el-form-item label="子项目名称" prop="projectSubName">
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="零件名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
<el-form-item label="零件名称" prop="matName">
<el-input v-model="queryParams.matName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="项目编码" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="责任人" prop="ownerName">
<el-input v-model="queryParams.ownerName" placeholder="请输入责任人" clearable @keyup.enter="handleQuery" class="!w-240px"/>
<el-form-item label="责任人" prop="duEmpName">
<el-input v-model="queryParams.duEmpName" placeholder="请输入责任人" clearable @keyup.enter="handleQuery" class="!w-240px"/>
</el-form-item>
<el-form-item label="采购状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择采购状态" clearable class="!w-240px">
<el-form-item label="采购状态" prop="mplanStatus">
<el-select v-model="queryParams.mplanStatus" placeholder="请选择采购状态" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.MATERIAL_PLAN_BOOM_MPLAN_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
@ -71,25 +71,14 @@
</el-table-column>
<el-table-column label="客户简称" align="center" prop="brief" min-width="180" />
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" />
<el-table-column label="零件名称" align="center" prop="boomName" min-width="180" />
<el-table-column label="材质" align="center" prop="composition" min-width="120" />
<el-table-column label="采购数量" align="center" prop="purchaseAmount" min-width="120" />
<el-table-column label="计划到货日期" align="center" prop="arriveTime" :formatter="dateFormatter1" min-width="120" />
<el-table-column label="供应商" align="center" prop="supplierName" min-width="180" />
<el-table-column label="技术要求" align="center" prop="description" min-width="180" />
<el-table-column label="理论重量" align="center" prop="theWeight" min-width="100" />
<el-table-column label="价格" align="center" prop="estimatedPrice" min-width="100" />
<el-table-column label="订单状态" align="center" prop="orderStatus" min-width="100" >
<template #default="scope">
{{
getIntDictOptions(DICT_TYPE.PART_PURCHASE_STATUS).find(
(dict) => dict.value === scope.row.orderStatus
)?.label || '未知状态'
}}
</template>
</el-table-column>
<el-table-column label="采购订单号" align="center" prop="purchaseNo" min-width="180" />
<el-table-column label="责任人" align="center" prop="duEmpName" min-width="100" />
<el-table-column label="零件名称" align="center" prop="matName" min-width="180" />
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="120" />
<el-table-column label="单位" align="center" prop="unit" min-width="120" />
<el-table-column label="责任人" align="center" prop="duEmpName" min-width="120" />
<el-table-column label="状态" align="center" prop="mplanStatus" min-width="120" />
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="120" />
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
@ -112,6 +101,7 @@ import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
import {ElTable} from "element-plus";
import {useUserStore} from "@/store/modules/user";
import {dateFormatter1} from "@/utils/formatTime";
import {getPartPurchasePages} from "@/api/heli/materialplan";
const formLoading = ref(false) // 12
defineOptions({ name: 'standard' })
@ -140,10 +130,11 @@ const queryParams = reactive({
version: undefined,
bomStatus: undefined,
remark: undefined,
status: 1,
mplanStatus: 0,
createTime: [],
ownerName:username,
duEmpName:username,
materialName:undefined,
matName:undefined,
projectMaterialPlanNo:undefined,
})
const queryFormRef = ref() //
@ -153,9 +144,10 @@ const exportLoading = ref(false) // 导出的加载中
const getList = async () => {
loading.value = true
try {
const data = await PartPurchaseOrderApi.getPartPage(queryParams)
list.value = data.list
total.value = data.total
// const data = await MaterialPlanApi.getPartPurchasePages(queryParams)
// list.value = data.list
// total.value = data.total
await MaterialPlanApi.getPartPurchasePages()
} finally {
loading.value = false
}
@ -219,22 +211,6 @@ const submitForm = async () => {
return;
}
// // 3.
// for (const item of list) {
// if (item.projectMaterialPlanNo) {
// message.error(`${item.procedureName} ${item.materialName} ,`);
// return;
// }
// if (!item.boomArriveDate) { // boomArriveDate
// message.error(`${item.procedureName} ${item.materialName} ,`);
// return;
// }
// if (!item.duEmpId) {
// message.error(`${item.procedureName} ${item.materialName} ,`);
// return;
// }
// }
// 4. Element Plus
formLoading.value = true;