From 5e6c3ac5d7c7a2702a0bad5195e954c9e95d2306 Mon Sep 17 00:00:00 2001 From: Houjie <714924425@qq.com> Date: 星期日, 15 六月 2025 17:55:35 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentAlarmServiceImpl.java | 6 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java | 4 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java | 13 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentAlarmMapper.xml | 16 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/PreparationOrderDetail.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java | 53 ++++++++ lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 39 ++++-- lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java | 6 + lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java | 25 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentAlarmMapper.java | 4 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml | 14 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml | 19 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java | 7 + lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAndon.java | 20 +++ lxzn-module-dnc/pom.xml | 6 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentAlarmService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java | 37 ++++++ lxzn-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java | 18 +++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java | 6 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/PreparationOrderController.java | 9 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IPreparationOrderService.java | 2 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java | 18 ++ 26 files changed, 315 insertions(+), 26 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java b/lxzn-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java index 1fb1a97..3bb8a8c 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java @@ -178,6 +178,24 @@ .groupName("eam"); } + @Bean(value = "defaultApiBoard") + public Docket activitiApiBoard() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + //姝ゅ寘璺緞涓嬬殑绫伙紝鎵嶇敓鎴愭帴鍙f枃妗� + .apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.board")) + //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。 + .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) + .paths(PathSelectors.any()) + .build() + .securitySchemes(Collections.singletonList(securityScheme())) + .securityContexts(securityContexts()) + .globalOperationParameters(setHeaderToken()) + .groupName("鏁板瓧瀛敓鐪嬫澘"); + } + /*** * oauth2閰嶇疆 * 闇�瑕佸鍔爏wagger鎺堟潈鍥炶皟鍦板潃 diff --git a/lxzn-module-dnc/pom.xml b/lxzn-module-dnc/pom.xml index 2c815f4..47f1a8f 100644 --- a/lxzn-module-dnc/pom.xml +++ b/lxzn-module-dnc/pom.xml @@ -58,6 +58,12 @@ <artifactId>fastutil</artifactId> <version>8.5.6</version> </dependency> + <dependency> + <groupId>org.jeecgframework.boot</groupId> + <artifactId>lxzn-module-tms</artifactId> + <version>3.4.3</version> + <scope>compile</scope> + </dependency> </dependencies> </project> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java index 3d85d1a..0c59cb5 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java @@ -110,4 +110,17 @@ return service.extractAndSaveFromContent(docId,attributionId,attributionType); } + /** + * 鍙戦�佸垁鍏风郴缁� + * @param docId 鏂囨。Id + * @return + */ + @AutoLog(value = "鍒�鍏蜂俊鎭�-鍙戦�佸垁鍏风郴缁�") + @ApiOperation(value = "鍒�鍏蜂俊鎭�-鍙戦�佸垁鍏风郴缁�", notes = "鍒�鍏蜂俊鎭�-鍙戦�佸垁鍏风郴缁�") + @GetMapping("/sendCutterInfo/{docId}/{attributionType}/{attributionId}") + public Result<?> sendCutterInfo(@PathVariable("docId") String docId + ,@PathVariable("attributionType") Integer attributionType + ,@PathVariable("attributionId") String attributionId) { + return service.sendToCutterSystem(docId,attributionId,attributionType); + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java index ad99cbf..45cb630 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java @@ -40,5 +40,9 @@ */ Result<?> extractAndSaveFromContent(String docId,String attributionId,Integer attributionType); - + /** + * 鍙戦�佸垁鍏峰垪琛ㄥ埌鍒�鍏风郴缁� + * @param docId + */ + Result<?> sendToCutterSystem(String docId,String attributionId,Integer attributionType); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java index 2d1c271..9dbdaec 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java @@ -10,15 +10,19 @@ import org.jeecg.modules.dnc.entity.Cutter; import org.jeecg.modules.dnc.entity.DocFile; import org.jeecg.modules.dnc.entity.DocInfo; +import org.jeecg.modules.dnc.entity.GuideCardBatch; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.CutterMapper; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.service.ICutterService; import org.jeecg.modules.dnc.service.IDocFileService; import org.jeecg.modules.dnc.service.IDocInfoService; +import org.jeecg.modules.dnc.service.IGuideCardBatchService; import org.jeecg.modules.dnc.utils.ValidateUtil; import org.jeecg.modules.dnc.utils.file.FileUtilS; -import org.jeecg.modules.system.service.ISysDictService; +import org.jeecg.modules.tms.entity.PreparationOrderDetail; +import org.jeecg.modules.tms.entity.dto.PreparationOrderAndDetailDto; +import org.jeecg.modules.tms.service.IPreparationOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,8 +44,10 @@ private IDocFileService docFileService; @Autowired - private ISysDictService sysDictService; + private IGuideCardBatchService guideCardBatchService; + @Autowired + private IPreparationOrderService preparationOrderService; /** * 鏂板鍒�鍏蜂俊鎭� * @param cutter @@ -194,13 +200,54 @@ return Result.error("鏈彂鐜板垁鍏风殑鍙傛暟淇℃伅娉ㄩ噴锛屾棤娉曟彁鍙栧垁鍏蜂俊鎭�"); } this.saveBatch(newCutterList); - //TODO鍙戦�佸垁鍏风鐞嗘暟鎹� return Result.OK("鎻愬彇鍒�鍏蜂俊鎭垚鍔�"); }else { return Result.error("鏈彂鐜板垁鍏风殑鍙傛暟淇℃伅娉ㄩ噴锛屾棤娉曟彁鍙栧垁鍏蜂俊鎭�"); } } + @Override + public Result<?> sendToCutterSystem(String docId,String attributionId,Integer attributionType){ + List<Cutter> cutterList = this.list(new QueryWrapper<Cutter>() + .eq("doc_id", docId) + .eq(StrUtil.isNotEmpty(attributionId),"attribution_id",attributionId) + .eq("attribution_type",attributionType)); + if (cutterList == null || cutterList.isEmpty()) { + return Result.error("鏈彂鐜板垁鍏蜂俊鎭紝鏃犳硶鍙戦�佸埌鍒�鍏风郴缁�"); + } + if (cutterList.stream().anyMatch(item -> item.getCutterCode() == null)) { + return Result.error("鏈彂鐜板垁鍏风紪鍙蜂俊鎭紝鏃犳硶鍙戦�佸埌鍒�鍏风郴缁�"); + } + //鑾峰彇鏈�鏂版暟鎺х▼搴忓姞宸ョ‘璁よ〃 + List<GuideCardBatch> guideCardBatchList = guideCardBatchService.list(new QueryWrapper<GuideCardBatch>() + .eq("doc_id", docId) + .isNotNull("serial_number") + .orderByDesc("SUBSTRING(serial_number, LEN(serial_number)-3, 4)")); + if (guideCardBatchList == null || guideCardBatchList.isEmpty()) { + return Result.error("鏈彂鐜扮▼搴忓姞宸ョ‘璁よ〃淇℃伅锛屾棤娉曞彂閫佸埌鍒�鍏风郴缁�"); + } + GuideCardBatch guideCardBatch = guideCardBatchList.get(0); + PreparationOrderAndDetailDto dto = new PreparationOrderAndDetailDto(); + dto.setPartDrawingNo(guideCardBatch.getPartsCode()); + dto.setPartName(guideCardBatch.getPartsName()); + dto.setPartMaterial(guideCardBatch.getMaterielDesp()); + dto.setProductionProcessesNo(guideCardBatch.getProcessWorkCode()); + dto.setBatchCode(guideCardBatch.getProcessingBatch()); + dto.setMachiningCount(guideCardBatch.getProcessingQuantity()); + dto.setEquipmentCode(guideCardBatch.getProcessingEquipment()); + dto.setNcName(guideCardBatch.getDocName()); + List<PreparationOrderDetail> detailList = new ArrayList<>(); + cutterList.forEach(item -> { + PreparationOrderDetail detail = new PreparationOrderDetail(); + detail.setToolCode(item.getCutterCode()); + detail.setToolId(item.getToolsId()); + detailList.add(detail); + }); + dto.setPreparationOrderDetailList(detailList); + preparationOrderService.addPreparationOrderFromDnc(dto); + return Result.OK("鍙戦�佸埌鍒�鍏风郴缁熸垚鍔�"); + } + public List<Cutter> extractToolAfterM6(DocInfo docInfo, List<String> ncLines) { List<Cutter> cutterList = new ArrayList<>(); String currentToolCode = null; // 鐢ㄤ簬杩借釜褰撳墠鎹㈠垁鎸囦护鐨勫垁鍏峰彿 diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java index f7873d5..b2e6977 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipment.java @@ -164,6 +164,12 @@ @ApiModelProperty(value = "鏄惁MDC璁惧") private String deviceTypeMdc; + /** + * 璁惧鍥剧墖 + */ + @ApiModelProperty(value = "璁惧鍥剧墖") + private String equipmentImage; + /**閮ㄩ棬鍚嶇О*/ @Excel(name = "閮ㄩ棬鍚嶇О", width = 15) private transient String orgCodeTxt; diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 3d0755f..4e876b7 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -106,19 +106,34 @@ <!--鏌ヨ璁惧鐩戞帶淇℃伅--> <select id="checkStatusFromEquipmentIds" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentMonitor"> SELECT - t1.equipment_id, - t2.CollectTime, - t1.equipment_name, - t2.Oporation, - t1.id, - t1.equipment_status, - t1.equipment_type equipmentType, - t3.equipment_type_pictures + t1.equipment_id, + t2.CollectTime, + t1.equipment_name, + CASE + + WHEN repair.count > 0 THEN + '5' ELSE t2.Oporation + END AS Oporation, + t1.id, + t1.equipment_status, + t1.equipment_type equipmentType, + t1.equipment_image equipmentTypePictures + FROM - mdc_equipment t1 - LEFT JOIN Equipment t2 ON t1.equipment_id = t2.EquipmentID - LEFT JOIN mdc_equipment_type t3 ON t1.equipment_type = t3.equipment_type_name - WHERE equipment_id IN + mdc_equipment t1 + LEFT JOIN Equipment t2 ON t1.equipment_id = t2.EquipmentID + LEFT JOIN ( + SELECT + e1.equipment_code, + COUNT(1) COUNT + FROM + eam_report_repair r1 + INNER JOIN eam_equipment e1 ON e1.id = r1.equipment_id + WHERE + r1.report_status NOT IN ('COMPLETE', 'ABOLISH') + GROUP BY + e1.equipment_code) repair ON repair.equipment_code = t1.equipment_id + WHERE t1.equipment_id IN <foreach collection="equipmentIds" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 9fa5fb6..49944e5 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -430,6 +430,9 @@ case 22: mdcEquipmentMonitor.setOporationDict("鎶ヨ"); break; + case 5: + mdcEquipmentMonitor.setOporationDict("鏁呴殰"); + break; default: mdcEquipmentMonitor.setOporationDict("鍏虫満"); break; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java index f238759..61d23bc 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java @@ -92,5 +92,12 @@ return Result.OK(result); } + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧瀹夌伅淇℃伅", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧瀹夌伅淇℃伅") + @GetMapping("/equAndonList") + public Result<?> equAndonList(@ApiParam(value = "productionId", required = true) String productionId) { + List<EquAndon> result = dtBoardService.equAndonList(productionId); + return Result.OK(result); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java index be4172a..8133429 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java @@ -29,4 +29,7 @@ List<EquAlarm> equAlarmList(String productionId); List<EquRepair> equRepairList(String productionId); + + List<EquAndon> equAndonList(String productionId); + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java index ebea97e..f6fc360 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java @@ -16,6 +16,7 @@ import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysDictService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -70,6 +71,9 @@ @Resource private DtBoardMapper dtBoardMapper; + + @Resource + private IAndonOrderService andonOrderService; /** * 杞﹂棿淇℃伅 @@ -326,7 +330,7 @@ if (equipmentIdList == null || equipmentIdList.isEmpty()) { return null; } - List<EquipmentAlarm> equipmentAlarmList = equipmentAlarmService.list(new LambdaQueryWrapper<EquipmentAlarm>().in(EquipmentAlarm::getEquipmentid, equipmentIdList).orderByDesc(EquipmentAlarm::getCollecttime).isNotNull(EquipmentAlarm::getAlarmNo).last("TOP 15")); + List<EquipmentAlarm> equipmentAlarmList = equipmentAlarmService.equAlarmList(equipmentIdList); if (equipmentAlarmList == null || equipmentAlarmList.isEmpty()) { return null; } @@ -346,8 +350,6 @@ /** * 璁惧鏁呴殰 - * @param productionId - * @return */ @Override public List<EquRepair> equRepairList(String productionId) { @@ -365,4 +367,21 @@ return result; } + /** + * 璁惧瀹夌伅闂 + */ + @Override + public List<EquAndon> equAndonList(String productionId) { + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return null; + } + List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return null; + } + List<EquAndon> result = andonOrderService.equAndonList(equipmentIdList); + return result; + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAndon.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAndon.java new file mode 100644 index 0000000..78eb963 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAndon.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +/** + * @Author: Lius + * @CreateTime: 2025-06-12 + * @Description: 瀹夌伅淇℃伅 + */ +@Data +public class EquAndon { + /** + * 璁惧缂栧彿 + */ + private String equipmentId; + /** + * 瀹夌伅闂 + */ + private String andonInfo; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java index c624816..6224509 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java @@ -1,7 +1,10 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.AndonOrder; + +import java.util.List; /** * @Description: andon_order @@ -11,4 +14,5 @@ */ public interface AndonOrderMapper extends BaseMapper<AndonOrder> { + List<AndonOrder> equAndonList(@Param("equipmentIdList") List<String> equipmentIdList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentAlarmMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentAlarmMapper.java index 4bbcd26..629c89b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentAlarmMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentAlarmMapper.java @@ -1,11 +1,15 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.EquipmentAlarm; + +import java.util.List; /** * @author: LiuS * @create: 2023-04-12 16:39 */ public interface EquipmentAlarmMapper extends BaseMapper<EquipmentAlarm> { + List<EquipmentAlarm> equAlarmList(@Param("equipmentIdList") List<String> equipmentIdList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml index cd37885..36ecafa 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml @@ -2,4 +2,18 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.AndonOrderMapper"> + <select id="equAndonList" resultType="org.jeecg.modules.mdc.entity.AndonOrder"> + SELECT + * + FROM + andon_order + WHERE + CONVERT ( DATE, create_time ) = CONVERT ( DATE, GETDATE( ) ) + AND equipment_id IN + <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + ORDER BY + create_time + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentAlarmMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentAlarmMapper.xml new file mode 100644 index 0000000..07a9412 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentAlarmMapper.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.mdc.mapper.EquipmentAlarmMapper"> + + <select id="equAlarmList" resultType="org.jeecg.modules.mdc.entity.EquipmentAlarm"> + SELECT TOP 15 * + FROM + EquipmentAlarm + WHERE EquipmentID IN + <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + AND alarmNo != '' + ORDER BY collecttime DESC + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml index 898cd96..0917a40 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml @@ -44,7 +44,7 @@ <select id="equDowntimeStatistics" resultType="org.jeecg.modules.board.vo.EquDowntimeInfo"> SELECT t2.downtime_description AS shutdown_info, - SUM ( DATEDIFF( SECOND, t1.start_date, t1.end_date ) ) / 3600.0 AS duration_hours + SUM ( DATEDIFF( SECOND, t1.start_date, t1.end_date ) ) / 3600.0 AS duration FROM mdc_downtime t1 LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id @@ -57,7 +57,5 @@ </foreach> GROUP BY t2.downtime_description - ORDER BY - duration_hours DESC </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml index e286929..b3a2f9a 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcWorkshopInfoMapper.xml @@ -9,8 +9,12 @@ a.EquipmentID equipmentId, me.equipment_name equipmentName, me.equipment_type equipmentType, - met.equipment_type_pictures equipmentImage, - a.Oporation equipmentStatus, + me.equipment_image equipmentImage, + CASE + + WHEN repair.count > 0 THEN + '5' ELSE a.Oporation + END AS equipmentStatus, mew.coordinate_left coordinateLeft, mew.coordinate_top coordinateTop, mew.vw vw, @@ -24,6 +28,17 @@ INNER JOIN mdc_equipment_type met ON me.equipment_type = met.equipment_type_name AND a.CollectTime= b.maxgdtime AND mew.workshop_id = #{ workshopId } + LEFT JOIN ( + SELECT + e1.equipment_code, + COUNT(1) COUNT + FROM + eam_report_repair r1 + INNER JOIN eam_equipment e1 ON e1.id = r1.equipment_id + WHERE + r1.report_status NOT IN ('COMPLETE', 'ABOLISH') + GROUP BY + e1.equipment_code) repair ON repair.equipment_code = me.equipment_id </select> <select id="listByUser" resultType="org.jeecg.modules.mdc.entity.MdcWorkshopInfo"> diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java index c0ae7dd..d392a52 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java @@ -1,7 +1,10 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.board.vo.EquAndon; import org.jeecg.modules.mdc.entity.AndonOrder; + +import java.util.List; /** * @Description: andon_order @@ -12,4 +15,6 @@ public interface IAndonOrderService extends IService<AndonOrder> { void procedureCall(AndonOrder andonOrder); + + List<EquAndon> equAndonList(List<String> equipmentIdList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentAlarmService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentAlarmService.java index 1b072fe..56b6113 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentAlarmService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentAlarmService.java @@ -12,4 +12,6 @@ */ public interface IEquipmentAlarmService extends IService<EquipmentAlarm> { List<EquipmentAlarm> findEquipmentAlarmByDate(String equipmentId, Date startTime, Date endTime); + + List<EquipmentAlarm> equAlarmList(List<String> equipmentIdList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java index 93d0b4d..499e343 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java @@ -2,14 +2,19 @@ import cn.hutool.core.date.DatePattern; import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.Feature; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.WebsocketConst; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.TranslateDictTextUtils; +import org.jeecg.modules.board.vo.EquAndon; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.entity.AndonOrder; import org.jeecg.modules.mdc.mapper.AndonOrderMapper; @@ -18,7 +23,9 @@ import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.vo.AndonOrderWebSocketVo; import org.jeecg.modules.message.websocket.WebSocket; +import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -28,7 +35,7 @@ /** * @Description: andon_order * @Author: jeecg-boot - * @Date: 2025-06-11 + * @Date: 2025-06-11 * @Version: V1.0 */ @Service @@ -40,6 +47,9 @@ private WebSocket webSocket; @Resource private ISysUserService userService; + @Resource + private ISysDictService sysDictService; + @Override public void procedureCall(AndonOrder andonOrder) { if (StringUtils.isBlank(andonOrder.getEquipmentId())) { @@ -76,6 +86,8 @@ andonOrderWebSocketVo.setCallReason(order.getCallReason()); andonOrderWebSocketVo.setAndonType("绋嬪簭鍛煎彨"); andonOrderWebSocketVo.setPersonResponsible(user.getRealname()); + andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY); + andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY); andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(order.getEquipmentId()) ? equipmentIdToProductionIdMap.get(order.getEquipmentId()).getProductionName() : null); andonOrderWebSocketVoList.add(andonOrderWebSocketVo); } @@ -87,4 +99,27 @@ webSocket.sendMessage(jsonObject.toJSONString()); } } + + /** + * 瀹夌伅闂鍒楄〃 + */ + @Override + public List<EquAndon> equAndonList(List<String> equipmentIdList) { + List<EquAndon> result = new ArrayList<>(); + List<AndonOrder> andonOrderList = this.baseMapper.equAndonList(equipmentIdList); + if (andonOrderList != null && !andonOrderList.isEmpty()) { + andonOrderList.forEach(andonOrder -> { + EquAndon equAndon = new EquAndon(); + equAndon.setEquipmentId(andonOrder.getEquipmentId()); + StringBuilder infoBuilder = new StringBuilder(); + infoBuilder.append("瀹夌伅绫诲瀷: ").append(sysDictService.queryDictTextByKey("andon_type",andonOrder.getAndonType())).append("\n"); + infoBuilder.append("瀹夌伅浜�: ").append(sysDictService.queryTableDictTextByKey("sys_user", "realname", "id", andonOrder.getOperator())).append("\n"); + infoBuilder.append("瀹夌伅鏃堕棿: ").append(DateUtils.format(andonOrder.getOperateTime(), DateUtils.STR_DATE_TIME_SMALL)).append("\n"); + infoBuilder.append("瀹夌伅鐘舵��: ").append(sysDictService.queryDictTextByKey("order_status",andonOrder.getOrderStatus())).append("\n"); + equAndon.setAndonInfo(infoBuilder.toString()); + result.add(equAndon); + }); + } + return result; + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentAlarmServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentAlarmServiceImpl.java index aa11e2d..b8a2565 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentAlarmServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentAlarmServiceImpl.java @@ -7,6 +7,7 @@ import org.jeecg.modules.mdc.service.IEquipmentAlarmService; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -22,4 +23,9 @@ .ge(EquipmentAlarm::getCollecttime, startTime).le(EquipmentAlarm::getCollecttime, endTime) .eq(EquipmentAlarm::getEquipmentid, equipmentId).orderByDesc(EquipmentAlarm::getCollecttime)); } + + @Override + public List<EquipmentAlarm> equAlarmList(List<String> equipmentIdList) { + return this.baseMapper.equAlarmList(equipmentIdList); + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/PreparationOrderController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/PreparationOrderController.java index 0a84ad8..b4b0f7c 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/PreparationOrderController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/PreparationOrderController.java @@ -94,6 +94,15 @@ return Result.OK("娣诲姞鎴愬姛锛�"); } + @AutoLog(value = "鍒�鍏峰噯澶囧崟-浠嶥NC绯荤粺鍐欏叆鍒�鍏峰噯澶囧崟鍙婃槑缁�") + @ApiOperation(value="鍒�鍏峰噯澶囧崟-浠嶥NC绯荤粺鍐欏叆鍒�鍏峰噯澶囧崟鍙婃槑缁�", notes="鍒�鍏峰噯澶囧崟-浠嶥NC绯荤粺鍐欏叆鍒�鍏峰噯澶囧崟鍙婃槑缁�") + //@RequiresPermissions("org.jeecg.modules:tms_preparation_order:add") + @PostMapping(value = "/addPreparationOrderFromDnc") + public Result<String> addPreparationOrderFromDnc(@RequestBody PreparationOrderAndDetailDto preparationOrderAndDetailDto) { + preparationOrderService.addPreparationOrderFromDnc(preparationOrderAndDetailDto); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + /** * 缂栬緫 * @param preparationOrder diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/PreparationOrderDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/PreparationOrderDetail.java index 99f9164..b8f107d 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/PreparationOrderDetail.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/PreparationOrderDetail.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; @@ -21,6 +22,7 @@ * @Version: V1.0 */ @Data +@Accessors(chain = true) @TableName("tms_preparation_order_detail") @ApiModel(value="tms_preparation_order_detail瀵硅薄", description="鍒�鍏峰噯澶囧崟鏄庣粏") public class PreparationOrderDetail implements Serializable { diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IPreparationOrderService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IPreparationOrderService.java index 3c2026c..9621ba9 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IPreparationOrderService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IPreparationOrderService.java @@ -40,4 +40,6 @@ List<String> convertToOutboundOrder(List<String> preparationOrderIds); IPage<PreparationOrder> queryPageList(Page<PreparationOrder> page, Map<String, String[]> parameterMap); + + void addPreparationOrderFromDnc(PreparationOrderAndDetailDto preparationOrderAndDetailDto); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java index 6bb0dfc..f696caf 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/PreparationOrderServiceImpl.java @@ -220,7 +220,23 @@ return this.baseMapper.queryPageList(page, queryWrapper); } - private LoginUser getCurrentUser() { + @Override + @Transactional(rollbackFor = Exception.class) + public void addPreparationOrderFromDnc(PreparationOrderAndDetailDto preparationOrderAndDetailDto) { + PreparationOrder preparationOrder = preparationOrderConvert.convert(preparationOrderAndDetailDto); + preparationOrder + .setId(null) + .setPreparationOrderNum(businessCodeRuleService.generateBusinessCodeSeq("ToolPreparationOrder")) + .setOrderStatus(PreparationOrderStatus.PENDING_AUDIT.getValue()); + save(preparationOrder); + List<PreparationOrderDetail> preparationOrderDetailList = preparationOrderAndDetailDto.getPreparationOrderDetailList(); + preparationOrderDetailList.forEach(item -> { + item.setId(null).setPreparationOrderId(preparationOrder.getId()); + }); + preparationOrderDetailService.saveBatch(preparationOrderDetailList); + } + + private LoginUser getCurrentUser() { // 鑾峰彇褰撳墠璁よ瘉鐨勭櫥褰曠敤鎴蜂俊鎭� Subject currentUser = SecurityUtils.getSubject(); if (currentUser != null && currentUser.isAuthenticated()) { -- Gitblit v1.9.3