BOM名称补充

This commit is contained in:
Ledo 2025-06-04 09:31:29 +08:00
parent c90d1036fb
commit ff71134a24
14 changed files with 260 additions and 13 deletions

View File

@ -46,6 +46,9 @@ public class PlanSubRespVO {
@ExcelProperty("设备id")
private Long equipId;
private String projectNameSim;
private String customerName;
@Schema(description = "毛坯开始日期")
@ExcelProperty("毛坯开始日期")
private LocalDateTime startBlankDate;

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -33,6 +34,11 @@ public class PlanSubSaveReqVO {
@Schema(description = "子项目编号")
private String projectSubCode;
private String projectNameSim;
private String customerName;
@Schema(description = "模具类型id")
private Long mouldId;

View File

@ -51,6 +51,7 @@ public class ProcessDesignRespVO {
@ExcelProperty("子项目id")
private Long projectSubId;
private Date lastDate;
@Schema(description = "计划单号")
private String planCode;
@ -93,7 +94,7 @@ public class ProcessDesignRespVO {
private LocalDateTime startBlankDate;
@Schema(description = "毛坯负责人名称")
private String blankOwnerName;
private boolean isOver;
@Schema(description = "是否延期", example = "0")
private Integer isDelay;
@Schema(description = "延期时间戳", example = "2023-01-02")

View File

@ -141,6 +141,11 @@ public class PlanSubDO extends BaseDO {
*/
@TableField(exist = false)
private LocalDateTime startThreeDimDates;
@TableField(exist = false)
private String projectNameSim;
@TableField(exist = false)
private String customerName;
/**
* 3D结束日期

View File

@ -106,6 +106,8 @@ public class ProcessDesignDO extends BaseDO {
@TableField(exist = false)
private LocalDateTime startBlankDate;
@TableField(exist = false)
private Date lastDate;
@TableField(exist = false)
private String blankOwnerName;
@TableField(exist = false)
@ -130,7 +132,8 @@ public class ProcessDesignDO extends BaseDO {
@TableField(exist = false)
private BigDecimal progress3d;
@TableField(exist = false)
private boolean isOver;
@TableField(exist = false)
private String projectSubName;

View File

@ -7,11 +7,13 @@ 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.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
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;
@ -28,8 +30,12 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
default PageResult<PlanSubDO> selectPage(PlanSubPageReqVO reqVO) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
.select("a.name as projectSubName")
.leftJoin(ProjectOrderSubDO.class, "a", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
.select("c.name as projectSubName")
.select("b.project_name_sim as projectNameSim")
.select("a.brief as customerName")
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, PlanSubDO::getProjectId)
.leftJoin(CustomerDO.class,"a",CustomerDO::getId,ProjectOrderDO::getCustomerId)
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
.disableSubLogicDel()
.orderByAsc(PlanSubDO::getId)
;
@ -37,6 +43,17 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
query.eq(reqVO.getProjectPlanId() != null, PlanSubDO::getProjectPlanId, reqVO.getProjectPlanId());
return selectPage(reqVO, query);
}
default PlanSubDO selectById(Long id) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
.select("b.project_name_sim as projectNameSim")
.select("a.brief as customerName")
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, PlanSubDO::getProjectId)
.leftJoin(CustomerDO.class,"a",CustomerDO::getId,ProjectOrderDO::getCustomerId)
.eq(PlanSubDO::getId, id);
return selectOne(query);
}
default List<PlanSubDO> searchOwnerThrees(Long planId,String name,String dateOne,String dateTwo,String id,long projectPlanid) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)

View File

@ -126,7 +126,7 @@ public interface ProcessBomMapper extends BaseMapperX<ProcessBomDO> {
query.selectAll(ProcessBomDO.class)
.select("concat('BOM-', e.project_sub_code) as bomCode", "e.project_sub_code as projectSubCode")
.select("a.plan_no as planCode", "b.code as projectCode", "c.name as customerName", "b.project_name as projectName","b.property as property")
.select("c.brief as customerBrief,b.project_name_sim as projectNameSim,d.name_sim as subNameSim")
.select("c.brief as customerBrief,b.project_name_sim as projectNameSim,e.project_sub_short_name as subNameSim")
.select("d.name as projectSubName")
.leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessBomDO::getPlanId)
.leftJoin(PlanSubDO.class, "e", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId)

View File

@ -32,7 +32,16 @@ public interface ProcessDesignProgressMapper extends BaseMapperX<ProcessDesignPr
}
default ProcessDesignProgressDO selectLaster(Long processId) {
MPJLambdaWrapper<ProcessDesignProgressDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessDesignProgressDO.class)
.eq(ProcessDesignProgressDO::getProcessDesignId, processId)
.orderByDesc(ProcessDesignProgressDO::getId)
.last("LIMIT 1")
;
return selectOne(query);
}
default ProcessDesignProgressDO selectSumJinDu(Long processDesignId) {
MPJLambdaWrapper<ProcessDesignProgressDO> query = new MPJLambdaWrapper<>();
query.select("progress as progress")

View File

@ -1,8 +1,12 @@
package com.chanko.yunxi.mes.module.heli.service.plansub;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.shopCalendar.vo.ShopCalendarPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.shopCalendar.ShopCalendarDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.shopCalendar.ShopCalendarMapper;
import jodd.util.StringUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -35,7 +39,8 @@ public class PlanSubServiceImpl implements PlanSubService {
private PlanSubMapper planSubMapper;
@Resource
private ShopCalendarMapper shopCalendarMapper;
@Resource
private ProcessBomMapper bomMapper;
@Override
public Long createPlanSub(PlanSubSaveReqVO createReqVO) {
// 插入
@ -52,6 +57,22 @@ public class PlanSubServiceImpl implements PlanSubService {
validatePlanSubExists(updateReqVO.getId());
// 更新
PlanSubDO updateObj = BeanUtils.toBean(updateReqVO, PlanSubDO.class);
if (updateReqVO.getProjectSubShortName() != null && !updateObj.getProjectSubShortName().equals("")){
ProcessBomDO processBomDO = bomMapper.selectOne(new LambdaQueryWrapperX<ProcessBomDO>().eq(ProcessBomDO::getProjectSubId, updateObj.getProjectSubId())
.eq(ProcessBomDO::getProjectId, updateObj.getProjectId()));
//
String code = "";
if(updateObj.getCustomerName()!= null && !updateObj.getCustomerName().equals("")){
code = updateObj.getCustomerName() + "-";
}
if (updateObj.getProjectNameSim() != null && !updateObj.getProjectNameSim().equals("")){
code = code + updateObj.getProjectNameSim() + "-";
}
code = code + updateObj.getProjectSubShortName();
processBomDO.setCode(code);
bomMapper.updateById(processBomDO);
}
planSubMapper.updateById(updateObj);
}

View File

@ -242,6 +242,14 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
PageResult<ProcessDesignDO> processDesignDOPageResult = processDesignMapper.selectPageOverview(pageReqVO);
if(processDesignDOPageResult.getTotal() > 0){
processDesignDOPageResult.getList().forEach(processDesignDO -> {
ProcessDesignProgressDO processDesignProgressDO = processDesignProgressMapper.selectLaster(processDesignDO.getId());
if (processDesignProgressDO.getIsOver() == 1){
processDesignDO.setOver(true);
if(processDesignProgressDO.getEndTime() != null ){
processDesignDO.setLastDate(processDesignProgressDO.getEndTime());
}
}
ProcessDesignPageReqVO reqVO = new ProcessDesignPageReqVO();
reqVO.setProjectSubId(processDesignDO.getProjectSubId())
.setProjectId(processDesignDO.getProjectId())
@ -271,7 +279,19 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
}
return processDesignDOPageResult;
}
return processDesignMapper.selectPage(pageReqVO);
PageResult<ProcessDesignDO> processDesignDOPageResult = processDesignMapper.selectPage(pageReqVO);
if (processDesignDOPageResult.getTotal() > 0L){
for (ProcessDesignDO processDesignDO : processDesignDOPageResult.getList()) {
ProcessDesignProgressDO processDesignProgressDO = processDesignProgressMapper.selectLaster(processDesignDO.getId());
if (processDesignProgressDO.getIsOver() == 1){
processDesignDO.setOver(true);
if(processDesignProgressDO.getEndTime() != null ){
processDesignDO.setLastDate(processDesignProgressDO.getEndTime());
}
}
}
}
return processDesignDOPageResult;
}
// ==================== 子表工艺设计进度 ====================

View File

@ -79,11 +79,16 @@
</el-table-column>
<el-table-column fixed="right" label="2D负责人" align="center" prop="twoDimOwnerName" width="120" />
<el-table-column fixed="right" label="2D截止日期" align="center" prop="twoDimDate" :formatter="dateFormatter2" min-width="140" />
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120">
<el-table-column fixed="right" label="完成情况" align="center" prop="progress" min-width="120">
<template #default="scope">
{{!scope.row.progress ? '' : (parseFloat(scope.row.progress) + '%')}}
</template>
</el-table-column>
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120">
<template #default="scope">
{{scope.row.isOver ? '已完成':'实施中'}}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="160">
<template #default="scope">
<el-button link type="primary" @click="openDetail('update', scope.row.id)">

View File

@ -116,9 +116,14 @@
</el-table-column>
<el-table-column fixed="right" label="3D负责人" align="center" prop="threeDimOwnerName" min-width="120"/>
<el-table-column fixed="right" label="3D截止日期" align="center" prop="threeDimDate" :formatter="dateFormatter2" min-width="140"/>
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120" >
<el-table-column fixed="right" label="完成情况" align="center" prop="progress" min-width="120">
<template #default="scope">
{{!scope.row.progress ? '' : (parseFloat(scope.row.progress) + '%')}}
{{getDetailMsg(scope.row)}}
</template>
</el-table-column>
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120">
<template #default="scope">
{{scope.row.isOver ? '已完成':'实施中'}}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="160">
@ -229,7 +234,54 @@ const openDetail = (type: string, id?: number) => {
}
})
}
const getDetailMsg = (row) =>{
if(row.isDelay == true){
//
if(row.threeDimDate != null ){
//
if(row.lastDate != null){
if(row.lastDate > row.threeDimDate){
const start = new Date(row.threeDimDate).getTime();
const end = new Date(row.lastDate).getTime();
const diffTime = Math.abs(end - start);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '延期' + day +'天';
}else{
return '延期'
}
}else{
return '延期';
}
}else{
return '已延期';
}
}else{
if(row.threeDimDate != null){
if(row.lastDate != null){
const start = new Date(row.threeDimDate).getTime();
const end = new Date(row.lastDate).getTime();
if(row.threeDimDate > row.lastDate){
const diffTime = Math.abs(start - end);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '提前'+day +'天完成';
} else if ( Math.floor((start) / (1000 * 60 * 60 * 24)) == Math.floor(end / (1000 * 60 * 60 * 24))){
return '按计划时间完成'
}else{
const diffTime = Math.abs(end - start);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '滞后'+day +'完成';
}
}else{
return '按计划实施中';
}
}else{
return '按计划实施中';
}
}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {

View File

@ -110,9 +110,14 @@
{{formatDate(scope.row.craftStartDate, 'YYYY-MM-DD') + '~' + formatDate(scope.row.craftEndDate, 'YYYY-MM-DD')}}
</template>
</el-table-column>
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120" >
<el-table-column fixed="right" label="完成情况" align="center" prop="progress" min-width="120">
<template #default="scope">
{{!scope.row.progress ? '' : (parseFloat(scope.row.progress) + '%')}}
{{getDetailMsg(scope.row)}}
</template>
</el-table-column>
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120">
<template #default="scope">
{{scope.row.isOver ? '已完成':'实施中'}}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="160">
@ -197,7 +202,55 @@ const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
const getDetailMsg = (row) =>{
if(row.isDelay == true){
//
if(row.craftEndDate != null ){
//
if(row.lastDate != null){
if(row.lastDate > row.craftEndDate){
const start = new Date(row.craftEndDate).getTime();
const end = new Date(row.lastDate).getTime();
const diffTime = Math.abs(end - start);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '延期' + day +'天';
}else{
return '延期'
}
}else{
console.log('ss')
return '延期';
}
}else{
return '已延期';
}
}else{
if(row.craftEndDate != null){
if(row.lastDate != null){
const start = new Date(row.craftEndDate).getTime();
const end = new Date(row.lastDate).getTime();
if(row.craftEndDate > row.lastDate){
const diffTime = Math.abs(start - end);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '提前'+day +'天完成';
} else if ( Math.floor((start) / (1000 * 60 * 60 * 24)) == Math.floor(end / (1000 * 60 * 60 * 24))){
return '按计划时间完成'
}else{
const diffTime = Math.abs(end - start);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '滞后'+day +'完成';
}
}else{
return '按计划实施中';
}
}else{
return '按计划实施中';
}
}
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()

View File

@ -78,9 +78,14 @@
</el-table-column>
<el-table-column fixed="right" label="毛坯负责人" align="center" prop="blankOwnerName" min-width="120" />
<el-table-column fixed="right" label="毛坯截止日期" align="center" prop="blankDate" :formatter="dateFormatter2" min-width="140" />
<el-table-column fixed="right" label="完成情况" align="center" prop="progress" min-width="120">
<template #default="scope">
{{getDetailMsg(scope.row)}}
</template>
</el-table-column>
<el-table-column fixed="right" label="最新进度" align="center" prop="progress" min-width="120">
<template #default="scope">
{{!scope.row.progress ? '' : (parseFloat(scope.row.progress) + '%')}}
{{scope.row.isOver ? '已完成':'实施中'}}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="160">
@ -178,7 +183,54 @@ const openDetail = (type: string, id?: number) => {
}
})
}
const getDetailMsg = (row) =>{
if(row.isDelay == true){
//
if(row.blankDate != null ){
//
if(row.lastDate != null){
if(row.lastDate > row.blankDate){
const start = new Date(row.blankDate).getTime();
const end = new Date(row.lastDate).getTime();
const diffTime = Math.abs(end - start);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '延期' + day +'天';
}else{
return '延期'
}
}else{
return '延期';
}
}else{
return '已延期';
}
}else{
if(row.blankDate != null){
if(row.lastDate != null){
const start = new Date(row.blankDate).getTime();
const end = new Date(row.lastDate).getTime();
if(row.blankDate > row.lastDate){
const diffTime = Math.abs(start - end);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '提前'+day +'天完成';
} else if ( Math.floor((start) / (1000 * 60 * 60 * 24)) == Math.floor(end / (1000 * 60 * 60 * 24))){
return '按计划时间完成'
}else{
const diffTime = Math.abs(end - start);
var day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
return '滞后'+day +'完成';
}
}else{
return '按计划实施中';
}
}else{
return '按计划实施中';
}
}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {