From ff71134a24b34095b9da7a5ba8f8f7dc6d7d20da Mon Sep 17 00:00:00 2001 From: Ledo Date: Wed, 4 Jun 2025 09:31:29 +0800 Subject: [PATCH] =?UTF-8?q?BOM=E5=90=8D=E7=A7=B0=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/plansub/vo/PlanSubRespVO.java | 3 + .../admin/plansub/vo/PlanSubSaveReqVO.java | 6 ++ .../processdesign/vo/ProcessDesignRespVO.java | 3 +- .../dal/dataobject/plansub/PlanSubDO.java | 5 ++ .../processdesign/ProcessDesignDO.java | 5 +- .../heli/dal/mysql/plansub/PlanSubMapper.java | 21 ++++++- .../mysql/processbom/ProcessBomMapper.java | 2 +- .../ProcessDesignProgressMapper.java | 9 +++ .../service/plansub/PlanSubServiceImpl.java | 23 +++++++- .../ProcessDesignServiceImpl.java | 22 ++++++- .../src/views/heli/processdesign/2d.vue | 7 ++- .../src/views/heli/processdesign/3d.vue | 56 +++++++++++++++++- .../src/views/heli/processdesign/index.vue | 57 ++++++++++++++++++- .../views/heli/processdesign/workblank.vue | 54 +++++++++++++++++- 14 files changed, 260 insertions(+), 13 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubRespVO.java index 63f83c8..27e7838 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubRespVO.java @@ -46,6 +46,9 @@ public class PlanSubRespVO { @ExcelProperty("设备id") private Long equipId; + private String projectNameSim; + + private String customerName; @Schema(description = "毛坯开始日期") @ExcelProperty("毛坯开始日期") private LocalDateTime startBlankDate; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubSaveReqVO.java index 3098f19..4b160f8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/plansub/vo/PlanSubSaveReqVO.java @@ -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; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java index 322aba9..41bd0d7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/vo/ProcessDesignRespVO.java @@ -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") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/plansub/PlanSubDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/plansub/PlanSubDO.java index 5d90a8d..63698d8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/plansub/PlanSubDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/plansub/PlanSubDO.java @@ -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结束日期 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java index 1881204..d4fb567 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdesign/ProcessDesignDO.java @@ -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; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java index e36c57a..a82bdb0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java @@ -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 { default PageResult selectPage(PlanSubPageReqVO reqVO) { MPJLambdaWrapper 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 { query.eq(reqVO.getProjectPlanId() != null, PlanSubDO::getProjectPlanId, reqVO.getProjectPlanId()); return selectPage(reqVO, query); } + default PlanSubDO selectById(Long id) { + MPJLambdaWrapper 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 searchOwnerThrees(Long planId,String name,String dateOne,String dateTwo,String id,long projectPlanid) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(PlanSubDO.class) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java index 3f7e082..a22a8c6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomMapper.java @@ -126,7 +126,7 @@ public interface ProcessBomMapper extends BaseMapperX { 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) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java index 22d77a7..e903e70 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignProgressMapper.java @@ -32,7 +32,16 @@ public interface ProcessDesignProgressMapper extends BaseMapperX 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 query = new MPJLambdaWrapper<>(); query.select("progress as progress") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java index e40a8fd..d856d32 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java @@ -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().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); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java index 18e2541..b128736 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignServiceImpl.java @@ -242,6 +242,14 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { PageResult 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 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; } // ==================== 子表(工艺设计进度) ==================== diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/2d.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/2d.vue index 689fa0b..da7fa87 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/2d.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/2d.vue @@ -79,11 +79,16 @@ - + + + + - + + + + @@ -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() diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/workblank.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/workblank.vue index 27d9c5f..4f9bdb5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/workblank.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/workblank.vue @@ -78,9 +78,14 @@ + + + @@ -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 {