【需求】初步完成设计进度一览

pull/4/head
zengchenxi 8 months ago
parent 19086b7364
commit 34e2810acf

@ -8,6 +8,7 @@ import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -72,4 +73,13 @@ public class ProcessDesignPageReqVO extends PageParam {
@Schema(description = "毛坯负责人")
private String blankOwnerName;
@Schema(description = "设计类型列表")
private List<String> processDesignTypeList;
@Schema(description = "是否总览")
private Boolean isOverview = false;
@Schema(description = "子项目id列表")
private List<Long> projectSubIdList;
}

@ -3,6 +3,8 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
@ -91,18 +93,27 @@ public class ProcessDesignRespVO {
@Schema(description = "毛坯负责人名称")
private String blankOwnerName;
@Schema(description = "毛坯最新进度")
private BigDecimal progressBlank;
@Schema(description = "2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人名称")
private String twoDimOwnerName;
@Schema(description = "2D最新进度")
private BigDecimal progress2d;
@Schema(description = "3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人名称")
private String threeDimOwnerName;
@Schema(description = "3D最新进度")
private BigDecimal progress3d;
@Schema(description = "子项目名称")
private String projectSubName;
@ -110,6 +121,6 @@ public class ProcessDesignRespVO {
private String projectSubCode;
@Schema(description = "最新进度")
private String progress;
private BigDecimal progress;
}

@ -1,6 +1,8 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
@ -96,18 +98,27 @@ public class ProcessDesignDO extends BaseDO {
@TableField(exist = false)
private String blankOwnerName;
@TableField(exist = false)
private BigDecimal progressBlank;
@TableField(exist = false)
private LocalDateTime twoDimDate;
@TableField(exist = false)
private String twoDimOwnerName;
@TableField(exist = false)
private BigDecimal progress2d;
@TableField(exist = false)
private LocalDateTime threeDimDate;
@TableField(exist = false)
private String threeDimOwnerName;
@TableField(exist = false)
private BigDecimal progress3d;
@TableField(exist = false)
private String projectSubName;
@ -115,6 +126,6 @@ public class ProcessDesignDO extends BaseDO {
private String projectSubCode;
@TableField(exist = false)
private String progress;
private BigDecimal progress;
}

@ -56,7 +56,12 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
.like(!StringUtils.isEmpty(reqVO.getTwoDimOwnerName()), "u4.nickname", reqVO.getTwoDimOwnerName())
.like(!StringUtils.isEmpty(reqVO.getBlankOwnerName()), "u3.nickname", reqVO.getBlankOwnerName())
.like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName())
.eq(!StringUtils.isEmpty(reqVO.getProcessDesignType()), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignType());
.eq(!StringUtils.isEmpty(reqVO.getProcessDesignType()), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignType())
.in(reqVO.getProcessDesignTypeList() != null && !reqVO.getProcessDesignTypeList().isEmpty(), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignTypeList())
.eq(reqVO.getProjectId() != null, ProcessDesignDO::getProjectId, reqVO.getProjectId())
.eq(reqVO.getProjectSubId() != null, ProcessDesignDO::getProjectSubId, reqVO.getProjectSubId())
.in(reqVO.getProjectSubIdList() != null && !reqVO.getProjectSubIdList().isEmpty(), ProcessDesignDO::getProjectSubId, reqVO.getProjectSubIdList())
;
return selectPage(reqVO, query);
}
@ -86,4 +91,25 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
return selectOne(query);
}
default PageResult<ProcessDesignDO> selectPageOverview(ProcessDesignPageReqVO reqVO) {
MPJLambdaWrapper<ProcessDesignDO> query = new MPJLambdaWrapper<>();
query.select(ProcessDesignDO::getProjectId, ProcessDesignDO::getProjectSubId)
.select("c.name as projectSubName")
.select("e.name as customerName")
.select("d.code as projectCode", "d.project_name as projectName", "d.business_line as businessLine", "d.property","d.is_urgency as isUrgency")
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, ProcessDesignDO::getProjectSubId)
.leftJoin(ProjectOrderDO.class, "d", ProjectOrderDO::getId, ProcessDesignDO::getProjectId)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.groupBy("d.id,c.id")
.orderByDesc(ProjectOrderDO::getId)
.disableSubLogicDel();
query.in(reqVO.getProcessDesignTypeList() != null && !reqVO.getProcessDesignTypeList().isEmpty(), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignTypeList())
.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())
;
return selectPage(reqVO, query);
}
}

@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesi
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignProgressMapper;
import com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@ -86,6 +87,36 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
@Override
public PageResult<ProcessDesignDO> getProcessDesignPage(ProcessDesignPageReqVO pageReqVO) {
if(pageReqVO.getIsOverview()){
PageResult<ProcessDesignDO> processDesignDOPageResult = processDesignMapper.selectPageOverview(pageReqVO);
if(processDesignDOPageResult.getTotal() > 0){
processDesignDOPageResult.getList().forEach(processDesignDO -> {
ProcessDesignPageReqVO reqVO = new ProcessDesignPageReqVO();
reqVO.setProjectSubId(processDesignDO.getProjectSubId())
.setProjectId(processDesignDO.getProjectId())
.setProcessDesignTypeList(pageReqVO.getProcessDesignTypeList());
PageResult<ProcessDesignDO> detailResult = processDesignMapper.selectPage(reqVO);
if(detailResult.getTotal() > 0){
detailResult.getList().forEach(processDesign -> {
if(ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name().equals(processDesign.getProcessDesignType())){
processDesignDO.setBlankDate(processDesign.getBlankDate())
.setBlankOwnerName(processDesign.getBlankOwnerName())
.setProgressBlank(processDesign.getProgress());
}else if(ProcessDesignTypeEnum.BLUEPRINT_3D.name().equals(processDesign.getProcessDesignType())){
processDesignDO.setThreeDimDate(processDesign.getThreeDimDate())
.setThreeDimOwnerName(processDesign.getThreeDimOwnerName())
.setProgress3d(processDesign.getProgress());
}else if(ProcessDesignTypeEnum.BLUEPRINT_2D.name().equals(processDesign.getProcessDesignType())){
processDesignDO.setTwoDimDate(processDesign.getTwoDimDate())
.setTwoDimOwnerName(processDesign.getTwoDimOwnerName())
.setProgress2d(processDesign.getProgress());
}
});
}
});
}
return processDesignDOPageResult;
}
return processDesignMapper.selectPage(pageReqVO);
}

@ -1,4 +1,8 @@
<template>
<el-card class="hl-card">
<template #header>
<span>2D图纸进度上报</span>
</template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
@ -133,6 +137,7 @@
@pagination="getList"
/>
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">

@ -1,4 +1,8 @@
<template>
<el-card class="hl-card">
<template #header>
<span>3D图纸进度上报</span>
</template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
@ -133,6 +137,7 @@
@pagination="getList"
/>
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">

@ -1,4 +1,8 @@
<template>
<el-card class="hl-card">
<template #header>
<span>铸造工艺进度上报</span>
</template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
@ -127,6 +131,7 @@
@pagination="getList"
/>
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">

@ -0,0 +1,212 @@
<template>
<el-card class="hl-card">
<template #header>
<span>设计进度一览</span>
</template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="110px"
>
<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="customerName">
<el-input
v-model="queryParams.customerName"
placeholder="请输入客户名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<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>
<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-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column fixed label="序号" type="index" width="60" />
<el-table-column fixed label="项目编号" align="center" prop="projectCode" width="220" />
<el-table-column fixed label="客户名称" align="center" prop="customerName" width="240" />
<el-table-column fixed label="项目名称" align="center" prop="projectName" width="180" />
<el-table-column fixed label="子项目名称" align="center" prop="projectSubName" width="180" />
<el-table-column label="毛坯负责人" align="center" prop="blankOwnerName" width="120"/>
<el-table-column label="毛坯最新进度" align="center" prop="progressBlank" width="140" >
<template #default="scope">
{{!scope.row.progressBlank ? '' : (parseFloat(scope.row.progressBlank) + '%')}}
</template>
</el-table-column>
<el-table-column label="毛坯计划截止日期" align="center" prop="blankDate" :formatter="dateFormatter2" width="180"/>
<el-table-column label="毛坯是否延期" align="center" prop="blankDeferred" width="140">
<template #default="scope">
<span v-if="(new Date().getTime() - scope.row.blankDate >= 0 && (!scope.row.progressBlank || parseFloat(scope.row.progressBlank) < 100))" style="color: red;"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="3D负责人" align="center" prop="threeDimOwnerName" width="120"/>
<el-table-column label="3D最新进度" align="center" prop="progress3d" width="140" >
<template #default="scope">
{{!scope.row.progress3d ? '' : (parseFloat(scope.row.progress3d) + '%')}}
</template>
</el-table-column>
<el-table-column label="3D计划截止日期" align="center" prop="threeDimDate" :formatter="dateFormatter2" width="180"/>
<el-table-column label="3D是否延期" align="center" prop="3dDeferred" width="140">
<template #default="scope">
<span v-if="(new Date().getTime() - scope.row.threeDimDate >= 0 && (!scope.row.progress3d || parseFloat(scope.row.progress3d) < 100))" style="color: red;"></span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="2D负责人" align="center" prop="twoDimOwnerName" width="120"/>
<el-table-column label="2D最新进度" align="center" prop="progress2d" width="140" >
<template #default="scope">
{{!scope.row.progress2d ? '' : (parseFloat(scope.row.progress2d) + '%')}}
</template>
</el-table-column>
<el-table-column label="2D计划截止日期" align="center" prop="twoDimDate" :formatter="dateFormatter2" width="180"/>
<el-table-column label="2D是否延期" align="center" prop="2dDeferred" width="140">
<template #default="scope">
<span v-if="(new Date().getTime() - scope.row.twoDimDate >= 0 && (!scope.row.progress2d || parseFloat(scope.row.progress2d) < 100))" style="color: red;"></span>
<span v-else></span>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">
import {dateFormatter, dateFormatter2, formatDate} from '@/utils/formatTime'
import download from '@/utils/download'
import * as ProcessDesignApi from '@/api/heli/processdesign'
import {useCommonStateWithOut} from "@/store/modules/common";
defineOptions({ name: 'ProcessDesign3D' })
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter()
const commonStore = useCommonStateWithOut()
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
planCode: undefined,
projectCode: undefined,
processDesignTypeList: ['BLUEPRINT_3D','BLUEPRINT_2D','BLUEPRINT_WORKBLANK'],
customerName: undefined,
projectName: undefined,
businessLine: undefined,
property: undefined,
projectSubName: undefined,
threeDimOwnerName: undefined,
isOverview: true
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await ProcessDesignApi.getProcessDesignPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await ProcessDesignApi.deleteProcessDesign(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await ProcessDesignApi.exportProcessDesign(queryParams)
download.excel(data, '工艺设计.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
getList()
})
</script>

@ -1,4 +1,8 @@
<template>
<el-card class="hl-card">
<template #header>
<span>毛坯图纸进度上报</span>
</template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
@ -133,6 +137,7 @@
@pagination="getList"
/>
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">

Loading…
Cancel
Save