From f32b2aaed04b0cd1ee00c5a4757a116284933b6c Mon Sep 17 00:00:00 2001 From: Ledo Date: Wed, 4 Jun 2025 23:16:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E6=96=B0=E8=A6=81=E6=B1=82=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processbom/ProcessBomController.java | 7 +- .../ProcessDesignController.java | 8 ++ .../processdesign/vo/ProcessDesignRespVO.java | 4 +- .../dataobject/pgmaster/PgMasterLineDO.java | 3 +- .../processdesign/ProcessDesignDO.java | 2 + .../mysql/pgmaster/PgMasterLineMapper.java | 3 +- .../processbom/ProcessBomDetailMapper.java | 10 ++ .../mysql/processbom/ProcessBomMapper.java | 26 ++-- .../processdesign/ProcessDesignMapper.java | 16 ++- .../TaskDispatchDetailMapper.java | 1 + .../service/processbom/ProcessBomService.java | 2 +- .../processbom/ProcessBomServiceImpl.java | 122 +++++++++++------- .../processdesign/ProcessDesignService.java | 2 + .../ProcessDesignServiceImpl.java | 9 +- .../taskdispatch/TaskDispatchServiceImpl.java | 31 +++-- .../src/main/resources/application-pro.yaml | 2 +- .../src/main/resources/application.yaml | 1 + .../src/views/heli/processdesign/2d.vue | 26 +++- 18 files changed, 190 insertions(+), 85 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java index 32afcb9..4d5d6bd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java @@ -126,6 +126,9 @@ public class ProcessBomController { @PreAuthorize("@ss.hasPermission('heli:process-bom:query')") public CommonResult getProcessBom(@RequestParam("id") Long id) { ProcessBomDO processBom = processBomService.getProcessBom(id); + if (processBom != null){ + processBom.setBomCode(processBom.getCode() == null ? "":processBom.getCode()); + } return success(BeanUtils.toBean(processBom, ProcessBomRespVO.class)); } @@ -194,8 +197,8 @@ public class ProcessBomController { @OperateLog(type = IMPORT) public CommonResult importExcel(HttpServletRequest request,@RequestParam("file") MultipartFile file) { try { - String bomCode = request.getHeader("Bom-Code"); - processBomService.importExcel(file,bomCode); + String bomId = request.getHeader("Bom-Code"); + processBomService.importExcel(file,bomId); return success(null); } catch (Exception e) { return error(500, "文件导入失败: " + e.getMessage()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java index a31881f..b3d1c1a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java @@ -84,6 +84,14 @@ public class ProcessDesignController { return success(BeanUtils.toBean(processDesign, ProcessDesignRespVO.class)); } + @GetMapping("/over") + @Operation(summary = "更新") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process-design:query')") + public CommonResult over(@RequestParam("id") Long id) { + return success(processDesignService.over(id)); + } + @GetMapping("/page") @Operation(summary = "获得工艺设计分页") @PreAuthorize("@ss.hasPermission('heli:process-design:query')") 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 41bd0d7..6cfe0a5 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 @@ -25,7 +25,7 @@ public class ProcessDesignRespVO { @Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "87") @ExcelProperty("生产计划id") private Long planId; - + private Date overTime; @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty(value = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", converter = DictConvert.class) @DictFormat("heli_process_design_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 @@ -38,7 +38,7 @@ public class ProcessDesignRespVO { @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("状态,1表示正常,2表示禁用") private Integer status; - + private Integer isOverProcess; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/pgmaster/PgMasterLineDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/pgmaster/PgMasterLineDO.java index ca27a7a..0e559b3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/pgmaster/PgMasterLineDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/pgmaster/PgMasterLineDO.java @@ -147,7 +147,8 @@ public class PgMasterLineDO extends BaseDO { * 报工状态 */ private String active; - + @TableField(exist = false) + private String procedureName; @TableField(exist = false) private Integer amounts; 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 d4fb567..796fc2d 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 @@ -60,10 +60,12 @@ public class ProcessDesignDO extends BaseDO { private Date delayTime; private String delayReason; + private Integer isOverProcess; /** * 子项目id */ private Long projectSubId; + private Date overTime; @TableField(exist = false) private String planCode; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pgmaster/PgMasterLineMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pgmaster/PgMasterLineMapper.java index 1eb3eba..023f89e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pgmaster/PgMasterLineMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/pgmaster/PgMasterLineMapper.java @@ -77,10 +77,11 @@ public interface PgMasterLineMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(PgMasterLineDO.class) .select("d.amounts,d.workTime") + .select("pd.name as procedureName") .leftJoin("(select SUM(c.amount) as amounts ,SUM(c.work_time) as workTime,c.zj_mx_id from quality_bg_master_line c group by c.zj_mx_id) d on d.zj_mx_id = t.id") .leftJoin(ProjectOrderSubDO.class,"pos",ProjectOrderSubDO::getId,PgMasterLineDO::getProjectSubId) .leftJoin(PlanDO.class,"pl",PlanDO::getProjectId,ProjectOrderSubDO::getProjectOrderId) - + .leftJoin(ProcedureDO.class,"pd",ProcedureDO::getId,PgMasterLineDO::getProcedureId) .eq(PlanDO::getStatus,2) .disableSubLogicDel(); if (reqVO.getPgType() == 1){ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java index 4f572fe..fac345a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java @@ -68,6 +68,16 @@ public interface ProcessBomDetailMapper extends BaseMapperX ; return selectCount(query); } + default Long getBomDetailByBluePrintNoAndBomId(Long bomId,String bluePrintNo){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.leftJoin(ProcessBomDO.class,"q",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) + .leftJoin(PlanSubDO.class, "g", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId) + .eq(ProcessBomDetailDO::getBomId, bomId) + .eq(ProcessBomDetailDO::getBlueprintNo,bluePrintNo) + .eq(ProcessBomDetailDO::getDeleted,0) + ; + return selectCount(query); + } default PageResult selectPageNew(ProcessBomPageReqVO reqVO) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(ProcessBomDetailDO.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 a22a8c6..9e10a49 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 @@ -70,6 +70,8 @@ public interface ProcessBomMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(ProcessBomDO.class) .select("concat('BOM-', e.project_sub_code) as bomCode", "e.project_sub_code as projectSubCode") + // .select( "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") .select("d.name as projectSubName") .leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessBomDO::getPlanId) @@ -124,7 +126,9 @@ public interface ProcessBomMapper extends BaseMapperX { default ProcessBomDO selectById(Long id) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(ProcessBomDO.class) - .select("concat('BOM-', e.project_sub_code) as bomCode", "e.project_sub_code as projectSubCode") +// .select("concat('BOM-', e.project_sub_code) as bomCode", "e.project_sub_code as projectSubCode") + .select( "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,e.project_sub_short_name as subNameSim") .select("d.name as projectSubName") @@ -150,16 +154,16 @@ public interface ProcessBomMapper extends BaseMapperX { return selectOne(query); } - default ProcessBomDO getProcessBomByBomCode(String bomCode) { - MPJLambdaWrapper query = new MPJLambdaWrapper<>(); - query.selectAll(ProcessBomDO.class) - .select("concat('BOM-', q.project_sub_code) as bomCode") - .leftJoin(PlanSubDO.class, "q", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId) - .eq(PlanSubDO::getProjectSubCode, bomCode) - .eq(ProcessBomDO::getDeleted,0) - ; - return selectOne(query); - } +// default ProcessBomDO getProcessBomByBomCode(String bomCode,String ss) { +// MPJLambdaWrapper query = new MPJLambdaWrapper<>(); +// query.selectAll(ProcessBomDO.class) +// .select("concat('BOM-', q.project_sub_code) as bomCode") +// .leftJoin(PlanSubDO.class, "q", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId) +// .eq(PlanSubDO::getProjectSubCode, bomCode) +// .eq(ProcessBomDO::getDeleted,0) +// ; +// return selectOne(query); +// } default ProcessBomDO selectByIdbyid(Long id) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java index 0f84dc9..affecc7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.ProcessDesignPageReqVO; @@ -15,6 +16,8 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.util.StringUtils; +import java.util.Date; + /** * 工艺设计 Mapper * @@ -85,16 +88,23 @@ public interface ProcessDesignMapper extends BaseMapperX { } if(reqVO.getPgType() != null){ if(reqVO.getPgType()==0){ - query.and(QueryWrapper -> QueryWrapper.apply("z.progress < {0}" , 100).or().apply("z.progress is null")); + query.eq(ProcessDesignDO::getIsOverProcess,0); + // query.and(QueryWrapper -> QueryWrapper.apply("z.progress < {0}" , 100).or().apply("z.progress is null")); }else{ - query.and(QueryWrapper -> QueryWrapper.apply("z.progress >= {0}" , 100)); + query.eq(ProcessDesignDO::getIsOverProcess,1); + // query.and(QueryWrapper -> QueryWrapper.apply("z.progress >= {0}" , 100)); } } return selectPage(reqVO, query); } - + default int over(Long id){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("is_over_process",1).set("over_time",new Date()) + .eq("id", id); + return update(updateWrapper); + } default ProcessDesignDO selectById(Long id) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(ProcessDesignDO.class) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index ca66d87..87dfff1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -95,6 +95,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX query = new MPJLambdaWrapper<>(); query.selectAll(TaskDispatchDetailDO.class) .select("a.is_report as isReport") + .select("a.name as procedureName") .leftJoin(ProcedureDO.class,"a",ProcedureDO::getId,TaskDispatchDetailDO::getProcedureId) .lt(TaskDispatchDetailDO::getSort,taskDispatchDetailDO.getSort()) .eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java index bb835e2..80fe2c8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java @@ -60,7 +60,7 @@ public interface ProcessBomService { ProcessBomDO getProcessBom(Long id); ProcessBomDO getProcessBomId(String code); - ProcessBomDO getProcessBomByBomCode(String bomCode); + // ProcessBomDO getProcessBomByBomCode(String bomCode); /** * 获得工艺bom分页 * diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index fa25c1e..974bfa4 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -130,7 +130,7 @@ public class ProcessBomServiceImpl implements ProcessBomService { */ @Override @Transactional(rollbackFor = Exception.class) - public void importExcel(@Valid MultipartFile file,String bomCode) throws IOException { + public void importExcel(@Valid MultipartFile file,String bomId) throws IOException { // 校验文件格式 if (!file.getOriginalFilename().endsWith(".xlsx") && !file.getOriginalFilename().endsWith(".xls")) { throw exception(EXCEL_FILE_FORMAT_ERROR); @@ -138,16 +138,16 @@ public class ProcessBomServiceImpl implements ProcessBomService { // 读取Excel文件并转换为VO对象列表 List list = ExcelUtils.read(file, ProcessBomImportExcelVO.class); for (ProcessBomImportExcelVO processBomImportExcelVO : list) { - processBomImportExcelVO.setCode(bomCode); + processBomImportExcelVO.setCode(bomId); } HashSet blueprintNoList = new HashSet(); Map> groupedByCode = list.stream().collect(Collectors.groupingBy(vo -> vo.getCode() == null ? "NULL" : vo.getCode())); Map> groupedByBluePrintfNo = list.stream().collect(Collectors.groupingBy(vo -> vo.getBlueprintNo() == null ? "NULL" : vo.getBlueprintNo())); - Map> groupedByMaterialName = list.stream().collect(Collectors.groupingBy(vo -> vo.getMaterialName() == null ? "NULL" : vo.getMaterialName())); + Map> groupedByMaterialName = list.stream().filter(e -> e.getType().equals("否")).collect(Collectors.groupingBy(vo -> vo.getMaterialName() == null ? "NULL" : vo.getMaterialName())); - if (CollUtil.isNotEmpty(groupedByCode.get("NULL"))) { - throw exception(PROCESS_BOM_CODE_IS_EMPTY); - } +// if (CollUtil.isNotEmpty(groupedByCode.get("NULL"))) { +// throw exception(PROCESS_BOM_CODE_IS_EMPTY); +// } if (CollUtil.isNotEmpty(groupedByBluePrintfNo.get("NULL"))) { throw exception(PROCESS_BOM_DETAIL_BLUE_PRINT_NO_NOT_EXISTS); } @@ -164,11 +164,11 @@ public class ProcessBomServiceImpl implements ProcessBomService { Map> bluePrintNoList = listtemp.stream().collect(Collectors.groupingBy(vo -> vo.getBlueprintNo() == null ? "NULL" : vo.getBlueprintNo())); bluePrintNoList.forEach((printNo, listTemp1) -> { if (listTemp1.size() > 1) { - throw new RuntimeException("本次提交文件中,BOM编号为:" + code + "的图号:" + printNo + "重复!"); + throw new RuntimeException("图号:" + printNo + "重复!"); } else { - Long bomDetailByBluePrintNoAndBomId = processBomDetailMapper.getBomDetailByBluePrintNoAndBomId(code.substring(4, code.length()), printNo); + Long bomDetailByBluePrintNoAndBomId = processBomDetailMapper.getBomDetailByBluePrintNoAndBomId(Long.valueOf(bomId), printNo); if (bomDetailByBluePrintNoAndBomId > 0) { - throw new RuntimeException("数据库中BOM编号为:" + code + "的图号:" + printNo + "已存在,勿重复添加!"); + throw new RuntimeException("图号:" + printNo + "已存在,勿重复添加!"); } } }); @@ -179,10 +179,10 @@ public class ProcessBomServiceImpl implements ProcessBomService { Map> materialNameList = listtemp.stream() .filter(vo -> vo.getType().equals("否")).collect(Collectors.groupingBy(vo -> vo.getMaterialName() == null ? "NULL" : vo.getMaterialName())); materialNameList.forEach((materialName, listTemp2) -> { if (listTemp2.size() > 1) { - throw new RuntimeException("本次提交文件中,BOM编号为:" + code + "的非标准件物料名称:" + materialName + "重复!"); + throw new RuntimeException("非标准件物料名称:" + materialName + "重复!"); }else{ if(listTemp2.get(0).getSpec() == null){ - throw new RuntimeException("本次提交文件中,BOM编号为:" + code + "的非标准件:" + materialName + "规格为空!"); + throw new RuntimeException("非标准件:" + materialName + "规格为空!"); } } }); @@ -200,9 +200,9 @@ public class ProcessBomServiceImpl implements ProcessBomService { //遍历List集合 groupedByCode.forEach((key, listValue) -> { - ProcessBomDO processBomDO = processBomMapper.getProcessBomByBomCode(key.substring(4, key.length())); + ProcessBomDO processBomDO = processBomMapper.selectById(Long.valueOf(bomId)); if (processBomDO == null) { - throw new RuntimeException("未找到" + key + "工艺BOM"); + throw new RuntimeException("未找到工艺BOM"); }else if (processBomDO.getBomStatus() == StatusEnum.SUBMITTED.getStatus()){ //BOM状态已提交,不允许添加 throw new RuntimeException(key+"工艺BOM状态为“已提交”,不允许新增零件"); @@ -212,25 +212,31 @@ public class ProcessBomServiceImpl implements ProcessBomService { processBomDO.setBomStatus(StatusEnum.SAVED.getStatus()); Integer bomStatus = BomEditStatusEnum.NEW_ADD.getStatus(); updateProcessBomDoList.add(processBomDO); + boolean standard = false; for (ProcessBomImportExcelVO o : listValue) { Integer bomOperateCount = 0; MaterialDO materialDO = new MaterialDO(); String type = null; + standard = false; if (unitDictData.get(o.getUnit())==null){ - throw new RuntimeException("bom为"+key+"下的明细行"+o.getMaterialName()+"单位非法,请维护字典基础数据后重试"); + throw new RuntimeException("bom下的明细行"+o.getMaterialName()+"单位非法,请维护字典基础数据后重试"); }else { o.setUnit(unitDictData.get(o.getUnit())); } + if (o.getType()!=null){ if (o.getType().equals("是")){ + standard = true; type = "1"; materialDO = materialService.getMaterialId(o.getMaterialCode()); if (materialDO == null) { - throw new RuntimeException(o.getMaterialName() + "物料不存在"); + throw new RuntimeException("物料编码为:"+o.getMaterialCode() + "物料不存在"); } + } else if (o.getType().equals("否")){ type = "2"; + } else { throw new RuntimeException("是否为标准件填写不正确,只能填写“是”或“否”,请检查"); @@ -238,11 +244,22 @@ public class ProcessBomServiceImpl implements ProcessBomService { }else { throw new RuntimeException("是否为标准件项不得为空"); } - CompositionDO compositionDO = compositionService.getCompositionId(o.getComposition()); - if (compositionDO == null) { - throw new RuntimeException(o.getComposition() + "材质不存在"); - } + + ProcessBomDetailDO processBomDetailDO = new ProcessBomDetailDO(); + if (standard && o.getComposition() != null && !o.getComposition().trim().equals("")){ + CompositionDO compositionDO = compositionService.getCompositionId(o.getComposition()); + if (compositionDO == null) { + throw new RuntimeException(o.getComposition() + "材质不存在"); + } + processBomDetailDO.setCompositionId(compositionDO.getId());//材质ID + }else if (!standard){ + CompositionDO compositionDO = compositionService.getCompositionId(o.getComposition()); + if (compositionDO == null) { + throw new RuntimeException(o.getComposition() + "材质不存在"); + } + processBomDetailDO.setCompositionId(compositionDO.getId());//材质ID + } List processBomDetailDOS = null; if (!processBomDetailMap.containsKey(processBomDO.getBomId())) { processBomDetailDOS = getProcessBomDetailListByBomId(processBomDO.getId()); @@ -267,7 +284,7 @@ public class ProcessBomServiceImpl implements ProcessBomService { }else{ processBomDetailDO.setMaterialName(o.getMaterialName()); } - processBomDetailDO.setCompositionId(compositionDO.getId());//材质ID + processBomDetailDO.setSpec(o.getSpec());//规格 processBomDetailDO.setUnit(o.getUnit());//单位 @@ -371,28 +388,28 @@ public class ProcessBomServiceImpl implements ProcessBomService { if (processBomDetail.getCompositionId() == null) { throw exception(new ErrorCode(1_006_9999,processBomDetail.getMaterialName()+"材质不能为空,请确认!")); } - if(processBomDetail.getId() == null){ - if(updateReqVO.getCustomerBrief() != null && !updateReqVO.getCustomerBrief().equals("")){ - processBomDetail.setMaterialCode(updateReqVO.getCustomerBrief()+'-' ); - if(updateReqVO.getProjectNameSim() != null && !updateReqVO.getProjectNameSim().equals("")){ - processBomDetail.setMaterialCode(processBomDetail.getMaterialCode() + updateReqVO.getProjectNameSim() +'-'); - if(updateReqVO.getSubNameSim() != null && !updateReqVO.getSubNameSim().equals("")){ - processBomDetail.setMaterialCode(processBomDetail.getMaterialCode() + updateReqVO.getSubNameSim() + '-' ); - if(processBomDetail.getBlueprintNo() != null && ! processBomDetail.getBlueprintNo().equals("")){ - processBomDetail.setMaterialCode(processBomDetail.getMaterialCode()+processBomDetail.getBlueprintNo()) ; - }else{ - processBomDetail.setMaterialCode(""); - } - }else{ - processBomDetail.setMaterialCode(""); - } - }else{ - processBomDetail.setMaterialCode(""); - } - }else{ - processBomDetail.setMaterialCode(""); - } - } +// if(processBomDetail.getId() == null){ +// if(updateReqVO.getCustomerBrief() != null && !updateReqVO.getCustomerBrief().equals("")){ +// processBomDetail.setMaterialCode(updateReqVO.getCustomerBrief()+'-' ); +// if(updateReqVO.getProjectNameSim() != null && !updateReqVO.getProjectNameSim().equals("")){ +// processBomDetail.setMaterialCode(processBomDetail.getMaterialCode() + updateReqVO.getProjectNameSim() +'-'); +// if(updateReqVO.getSubNameSim() != null && !updateReqVO.getSubNameSim().equals("")){ +// processBomDetail.setMaterialCode(processBomDetail.getMaterialCode() + updateReqVO.getSubNameSim() + '-' ); +// if(processBomDetail.getBlueprintNo() != null && ! processBomDetail.getBlueprintNo().equals("")){ +// processBomDetail.setMaterialCode(processBomDetail.getMaterialCode()+processBomDetail.getBlueprintNo()) ; +// }else{ +// processBomDetail.setMaterialCode(""); +// } +// }else{ +// processBomDetail.setMaterialCode(""); +// } +// }else{ +// processBomDetail.setMaterialCode(""); +// } +// }else{ +// processBomDetail.setMaterialCode(""); +// } +// } } } @@ -695,12 +712,12 @@ public class ProcessBomServiceImpl implements ProcessBomService { return processBomMapper.selectBom(code); } - - @Override - public ProcessBomDO getProcessBomByBomCode(String bomCode){ - - return processBomMapper.getProcessBomByBomCode(bomCode); - } +// +// @Override +// public ProcessBomDO getProcessBomByBomCode(String bomCode){ +// +// return processBomMapper.getProcessBomByBomCode(bomCode); +// } @Override public PageResult getProcessBomPage(ProcessBomPageReqVO pageReqVO) { @@ -712,7 +729,14 @@ public class ProcessBomServiceImpl implements ProcessBomService { } @Override public PageResult getProcessBomPages(ProcessBomPageReqVO pageReqVO) { - return processBomMapper.selectPages(pageReqVO); + PageResult processBomDOPageResult = processBomMapper.selectPages(pageReqVO); +// if (processBomDOPageResult.getTotal() > 0l){ +// List list = processBomDOPageResult.getList(); +// for (ProcessBomDO processBomDO : list) { +// processBomDO.setBomCode(processBomDO.getCode() == null ? "":processBomDO.getCode()); +// } +// } + return processBomDOPageResult; } @Override public PageResult getProcessBomPagesall() { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java index ff939e5..cd6d51d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdesign/ProcessDesignService.java @@ -56,6 +56,8 @@ public interface ProcessDesignService { */ ProcessDesignDO getProcessDesign(Long id); + + int over(Long id); /** * 获得工艺设计分页 * 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 b128736..fe3ad8b 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 @@ -236,6 +236,11 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { return processDesignMapper.selectById(id); } + @Override + public int over(Long id) { + return processDesignMapper.over(id); + } + @Override public PageResult getProcessDesignPage(ProcessDesignPageReqVO pageReqVO) { if(pageReqVO.getIsOverview()){ @@ -243,7 +248,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { if(processDesignDOPageResult.getTotal() > 0){ processDesignDOPageResult.getList().forEach(processDesignDO -> { ProcessDesignProgressDO processDesignProgressDO = processDesignProgressMapper.selectLaster(processDesignDO.getId()); - if (processDesignProgressDO.getIsOver() == 1){ + if (processDesignProgressDO != null && processDesignProgressDO.getIsOver() == 1){ processDesignDO.setOver(true); if(processDesignProgressDO.getEndTime() != null ){ processDesignDO.setLastDate(processDesignProgressDO.getEndTime()); @@ -283,7 +288,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { if (processDesignDOPageResult.getTotal() > 0L){ for (ProcessDesignDO processDesignDO : processDesignDOPageResult.getList()) { ProcessDesignProgressDO processDesignProgressDO = processDesignProgressMapper.selectLaster(processDesignDO.getId()); - if (processDesignProgressDO.getIsOver() == 1){ + if (processDesignProgressDO != null && processDesignProgressDO.getIsOver() == 1){ processDesignDO.setOver(true); if(processDesignProgressDO.getEndTime() != null ){ processDesignDO.setLastDate(processDesignProgressDO.getEndTime()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 735faa4..a714c98 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -507,20 +507,31 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { // ); taskDispatchDetailDO.setBeforeProcedureStatus(1); List taskDispatchDetailDO2 = taskDispatchDetailMapper.selectNoReportBeforeDo(taskDispatchDetailDO); - List filteredList = taskDispatchDetailDO2.stream() - .filter(task -> task.getProcedureStatus() != 2) // 筛选product不为"2"的记录 - .collect(Collectors.toList()); - if(CollUtil.isNotEmpty(filteredList)){ - //如果他之前的数据有未完成的且是需要报工的 - for (TaskDispatchDetailDO dispatchDetailDO : filteredList) { - if (dispatchDetailDO.getIsReport() != 0){ - taskDispatchDetailDO.setBeforeProcedureStatus(0); - break; + if (CollUtil.isNotEmpty(taskDispatchDetailDO2)){ + // + for (TaskDispatchDetailDO dispatchDetailDO : taskDispatchDetailDO2) { + if (!dispatchDetailDO.getTestYn().equals("Y")){ + throw exception(new ErrorCode(102223_666,"上一道工序:"+dispatchDetailDO.getProcedureName() + "没有完成,请确认!")); + } + } + + List filteredList = taskDispatchDetailDO2.stream() + .filter(task -> task.getProcedureStatus() != 2) // 筛选product不为"2"的记录 + .collect(Collectors.toList()); + if(CollUtil.isNotEmpty(filteredList)){ + //如果他之前的数据有未完成的且是需要报工的 + for (TaskDispatchDetailDO dispatchDetailDO : filteredList) { + if (dispatchDetailDO.getIsReport() != 0){ + taskDispatchDetailDO.setBeforeProcedureStatus(0); + break; + } } } } + }else{ taskDispatchDetailDO.setBeforeProcedureStatus(1); + } return taskDispatchDetailDO; } @@ -753,7 +764,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { bdgzsomthingMapper.updateById(bdgzsomthingDO); } } - if (taskDispatchDetailDO.getDispatchType().equals("PRODUCTION")){ + if (taskDispatchDO.getDispatchType().equals("PRODUCTION")){ pgMasterService.insertPgList(planDO.getId(),planDO.getProjectId(),taskDispatchDO.getBomDetailId(),taskDispatchDetailDO.getProcedureId()); } // if (taskDispatchDO.getDispatchType().equals("PRODUCTION") && isBomDetailProductionOver){ diff --git a/mes-server/src/main/resources/application-pro.yaml b/mes-server/src/main/resources/application-pro.yaml index 552c55e..b280486 100644 --- a/mes-server/src/main/resources/application-pro.yaml +++ b/mes-server/src/main/resources/application-pro.yaml @@ -44,7 +44,7 @@ spring: datasource: master: name: mes-heli - url: jdbc:mysql://localhost:3306/mes-heli?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&socketTimeout=30000&connectTimeout=30000 + url: jdbc:mysql://218.75.46.166:3306/mes-heli?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&socketTimeout=30000&connectTimeout=30000 driver-class-name: com.mysql.jdbc.Driver username: root password: 'heli,12#$' diff --git a/mes-server/src/main/resources/application.yaml b/mes-server/src/main/resources/application.yaml index acec8c0..ffdb3d1 100644 --- a/mes-server/src/main/resources/application.yaml +++ b/mes-server/src/main/resources/application.yaml @@ -7,6 +7,7 @@ spring: profiles: active: local + main: allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 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 da7fa87..be176c9 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 @@ -81,12 +81,12 @@ @@ -184,7 +184,29 @@ const openDetail = (type: string, id?: number) => { } }) } +const getDetailMsg = (row) =>{ + if(row.isOverProcess){ + //完结的,按计划完成了还是没按计划完成 + if(row.twoDimDate != null && row.lastDate != null ){ + const start = new Date(row.twoDimDate).getTime(); + const end = new Date(row.lastDate).getTime(); + const diffTime = Math.abs(end - start); + var day = Math.floor(diffTime / (1000 * 60 * 60 * 24)); + if(row.lastDate > row.twoDimDate){ + return '延后' + day +'天'; + }else if (row.lastDate < row.twoDimDate){ + return '提前' + day +'天'; + }else{ + return '按时完成' + } + }else{ + return '实施中'; + } + + } + +} /** 删除按钮操作 */ const handleDelete = async (id: number) => { try {