From c9cc74fad46adaa4bc448cba673e830baf705fce Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期二, 24 六月 2025 17:40:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml | 5 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java | 96 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DataImportService.java | 199 +-------- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java | 17 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java | 4 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java | 139 ++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java | 39 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FullHierarchyTraceService.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java | 83 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml | 5 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java | 154 +++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java | 80 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java | 18 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java | 4 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java | 96 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java | 11 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java | 29 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/GuideCardBatch.java | 4 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java | 55 -- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java | 46 -- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java | 62 +++ 25 files changed, 897 insertions(+), 276 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/GuideCardBatch.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/GuideCardBatch.java index a3bd5f4..3af6f98 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/GuideCardBatch.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/GuideCardBatch.java @@ -131,6 +131,10 @@ @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "棣栨鏃ユ湡") private Date inspectionTime; + /**棣栨鎰忚*/ + @Excel(name = "棣栨鎰忚", width = 15) + @ApiModelProperty(value = "棣栨鎰忚") + private String inspectionOpinion; /**瀹℃壒浜�*/ @Excel(name = "瀹℃壒浜�", width = 15) @ApiModelProperty(value = "瀹℃壒浜�") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java index d7d6b1f..bfd8427 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java @@ -2,22 +2,25 @@ import org.apache.commons.io.monitor.FileAlterationListener; import org.apache.commons.io.monitor.FileAlterationObserver; -import org.jeecg.common.util.FileUtil; -import org.jeecg.modules.dnc.service.IDocInfoService; -import org.jeecg.modules.dnc.utils.file.FileUtilS; +import org.jeecg.modules.dnc.dto.TransferPackage; +import org.jeecg.modules.dnc.service.impl.DataImportService; +import org.jeecg.modules.dnc.service.impl.FileFerryService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.File; -import java.util.Objects; @Component public class FileListener implements FileAlterationListener { private static final Logger log = LoggerFactory.getLogger(FileListener.class); + @Autowired - private IDocInfoService docInfoService; // 鏂囨。鏈嶅姟 + private FileFerryService fileFerryService; + + @Autowired + private DataImportService dataImportService; @Override public void onStart(FileAlterationObserver observer) { @@ -43,6 +46,11 @@ public void onFileCreate(File file) { String filePath = file.getAbsolutePath(); log.info("[鏂板缓]: {}", filePath); + if (filePath.endsWith(".ferry")){ + TransferPackage data = fileFerryService.importData(filePath); + dataImportService.importTransferPackage(data); + log.info("鏂囦欢瀵煎叆瀹屾垚"); + } } @Override public void onFileChange(File file) { @@ -58,42 +66,5 @@ public void onStop(FileAlterationObserver observer) { // log.info("缁撴潫鐩戝惉鐩綍: {}", observer.getDirectory().getAbsolutePath()); } - - /** - * 宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽 - * @param file - */ - private void handleIndustrialDocFile(File file) { - log.info("宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", file.getAbsolutePath()); - try { - if (Objects.equals(FileUtil.getFileSuffix(file.getName()), "nc")) { - boolean success = docInfoService.addDocInfoAnalysisGwNcService(file.getAbsolutePath(), file); - if (success) { - FileUtilS.copyFileRec(file.getAbsolutePath()); - FileUtilS.fileRecDelete(file.getAbsolutePath()); - } - }else if (Objects.equals(FileUtil.getFileSuffix(file.getName()), "txt")) { - //todo 鏄惁瑙f瀽宸ヤ綔娴佹搷浣� - - } - } catch (Exception e) { - log.error("宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", e.getMessage()); - } - } - - /** - * 娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽锛堢▼搴忓洖浼狅級 - * @param file - */ - private void handleSecretDocFile(File file) { - log.info("娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", file.getAbsolutePath()); - try { - boolean b= docInfoService.addDocInfoAnalysisSmwNcService(file.getAbsolutePath(), file); - - }catch (Exception e) { - log.error("娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", e.getMessage()); - } - } - } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml index f725e8d..99ce988 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml @@ -118,6 +118,7 @@ ,d.publish_file_id ,d.publish_version ,d.description + ,d.doc_dispatch_status from (select classification_id, doc_id,attribution_type,attribution_id from nc_doc_relative where delete_flag=0 and doc_id=#{docId} and attribution_type=#{attrType} and attribution_id=#{attrId}) r inner join nc_doc_info d diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java index 91e9992..a39eb0e 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java @@ -628,14 +628,18 @@ List<Long> ids = productMixList.stream().map(ProductMix::getId).collect(Collectors.toList()); //鑾峰彇宸茬粡鑷韩琚�熺敤鐨勯儴浠� LambdaQueryWrapper<ComponentInfo> borrowQueryWrapper = new LambdaQueryWrapper<>(); - borrowQueryWrapper.in(ComponentInfo::getBorrowId,ids); + if (!ids.isEmpty()){ + borrowQueryWrapper.in(ComponentInfo::getBorrowId,ids); + } borrowQueryWrapper.eq(ComponentInfo::getParentId,componentInfo.getComponentId()); List<String> borrowIds= super.list(borrowQueryWrapper).stream().map(ComponentInfo::getBorrowId).collect(Collectors.toList()); LambdaQueryWrapper<ComponentInfo> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(StrUtil.isNotEmpty(componentInfo.getComponentName()),ComponentInfo::getComponentName, componentInfo.getComponentName()); queryWrapper.like(StrUtil.isNotEmpty(componentInfo.getComponentCode()),ComponentInfo::getComponentCode, componentInfo.getComponentCode()); queryWrapper.isNull(ComponentInfo::getBorrowId); - queryWrapper.in(ComponentInfo::getComponentId,ids); + if (!ids.isEmpty()){ + queryWrapper.in(ComponentInfo::getComponentId,ids); + } queryWrapper.ne(StrUtil.isNotEmpty(oldComponentInfo.getBorrowId()),ComponentInfo::getComponentId,oldComponentInfo.getBorrowId()); if (!borrowIds.isEmpty()) { queryWrapper.notIn(ComponentInfo::getComponentId,borrowIds); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DataImportService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DataImportService.java index b8649bd..c91c587 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DataImportService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DataImportService.java @@ -1,14 +1,10 @@ package org.jeecg.modules.dnc.service.impl; -import cn.hutool.core.util.StrUtil; import com.jeecg.weibo.exception.BusinessException; import org.jeecg.modules.dnc.dto.ComponentHierarchy; import org.jeecg.modules.dnc.dto.TransferPackage; import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.dnc.mapper.*; -import org.jeecg.modules.dnc.service.*; -import org.jeecg.modules.system.service.IMdcProductionService; -import org.jeecg.modules.system.service.ISysUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -68,48 +64,6 @@ @Autowired private GuideCardBatchMapper guideCardBatchMapper; - @Autowired - private ISysUserService sysUserService; - - @Autowired - private IMdcProductionService mdcProductionService; - - @Autowired - private IProductPermissionService productPermissionService; - - @Autowired - private IProductDepartmentService productDepartmentService; - - @Autowired - private IComponentPermissionService componentPermissionService; - - @Autowired - private IComponentDepartmentService componentDepartmentService; - - @Autowired - private IPartsPermissionService partsPermissionService; - - @Autowired - private IPartsDepartmentService partsDepartmentService; - - @Autowired - private IProcessSpecVersionPermissionService processSpecVersionPermissionService; - - @Autowired - private IProcessSpecVersionDepartmentService processSpecVersionDepartmentService; - - @Autowired - private IProcessStreamPermissionService processStreamPermissionService; - - @Autowired - private IProcessionDepartmentService processionDepartmentService; - - @Autowired - private IWorkStepPermissionService workStepPermissionService; - - @Autowired - private IWorkStepDepartmentService workStepDepartmentService; - @Transactional(rollbackFor = Exception.class) public void importTransferPackage(TransferPackage transferPackage) { try { @@ -155,12 +109,6 @@ if (transferPackage.getTraceChain() != null&& transferPackage.getTraceChain().getTreePath() != null) { saveTreePath(transferPackage.getTraceChain().getTreePath()); - } - - //淇濆瓨鏉冮檺 - if (transferPackage.getTraceChain() != null&& - transferPackage.getTraceChain().getPermissionStreamNewList() != null) { - savePermissionStreamNewList(transferPackage.getTraceChain().getPermissionStreamNewList()); } // 淇濆瓨璁惧绫� @@ -222,7 +170,8 @@ productMapper.insert(product); logger.debug("浜у搧宸蹭繚瀛�: {}", product.getProductId()); } else { - logger.debug("浜у搧宸插瓨鍦�: {}", product.getProductId()); + productMapper.updateById(product); + logger.debug("浜у搧宸叉洿鏂�: {}", product.getProductId()); } } @@ -232,7 +181,8 @@ componentMapper.insert(component); logger.debug("閮ㄤ欢宸蹭繚瀛�: {}", component.getComponentId()); } else { - logger.debug("閮ㄤ欢宸插瓨鍦�: {}", component.getComponentId()); + componentMapper.updateById(component); + logger.debug("閮ㄤ欢宸叉洿鏂�: {}", component.getComponentId()); } } } @@ -242,7 +192,8 @@ partsMapper.insert(parts); logger.debug("闆朵欢宸蹭繚瀛�: {}", parts.getPartsId()); } else { - logger.debug("闆朵欢宸插瓨鍦�: {}", parts.getPartsId()); + partsMapper.updateById(parts); + logger.debug("闆朵欢宸叉洿鏂�: {}", parts.getPartsId()); } } @@ -251,7 +202,8 @@ psvMapper.insert(processSpec); logger.debug("宸ヨ壓瑙勭▼宸蹭繚瀛�: {}", processSpec.getId()); } else { - logger.debug("宸ヨ壓瑙勭▼宸插瓨鍦�: {}", processSpec.getId()); + psvMapper.updateById(processSpec); + logger.debug("宸ヨ壓瑙勭▼宸叉洿鏂�: {}", processSpec.getId()); } } @@ -260,7 +212,8 @@ processMapper.insert(process); logger.debug("宸ュ簭宸蹭繚瀛�: {}", process.getProcessId()); } else { - logger.debug("宸ュ簭宸插瓨鍦�: {}", process.getProcessId()); + processMapper.updateById(process); + logger.debug("宸ュ簭宸叉洿鏂�: {}", process.getProcessId()); } } @@ -269,7 +222,8 @@ workStepMapper.insert(workStep); logger.debug("宸ユ宸蹭繚瀛�: {}", workStep.getId()); } else { - logger.debug("宸ユ宸插瓨鍦�: {}", workStep.getId()); + workStepMapper.updateById(workStep); + logger.debug("宸ユ宸叉洿鏂�: {}", workStep.getId()); } } @@ -279,113 +233,10 @@ productMixMapper.insert(productMix); logger.debug("浜у搧缁勫悎宸蹭繚瀛�: {}", productMix.getId()); } else { - logger.debug("浜у搧缁勫悎宸插瓨鍦�: {}", productMix.getId()); + productMixMapper.updateById(productMix); + logger.debug("浜у搧缁勫悎宸叉洿鏂�: {}", productMix.getId()); } } - } - - private void savePermissionStreamNewList(List<PermissionStreamNew> permissionStreamNewList) { - for (PermissionStreamNew permissionStreamNew : permissionStreamNewList) { - if (permissionStreamNew.getUserId() != null) { - String id=sysUserService.getUserByName(permissionStreamNew.getUserId()).getId(); - if (id!=null){ - permissionStreamNew.setUserId(id); - } - } - if (permissionStreamNew.getDepartId() != null) { - String id=mdcProductionService.findByOrgCode(permissionStreamNew.getDepartId()).getId(); - if (id!=null){ - permissionStreamNew.setDepartId(id); - } - } - permissionStreamNewMapper.insert(permissionStreamNew); - logger.debug("鏉冮檺宸蹭繚瀛�: {}", permissionStreamNew.getId()); - } - //鍒嗘壒娣诲姞浜у搧銆侀儴浠躲�侀浂浠躲�佸伐鑹鸿绋嬨�佸伐搴忋�佸伐姝ユ潈闄� - permissionStreamNewList.forEach(item -> { - switch (item.getBusinessType()){ - case "1": - if (StrUtil.isNotEmpty(item.getUserId())){ - ProductPermission productPermission = new ProductPermission(); - productPermission.setProductId(item.getBusinessId()); - productPermission.setUserId(item.getUserId()); - productPermissionService.save(productPermission); - }else { - ProductDepartment productDepartment = new ProductDepartment(); - productDepartment.setProductId(item.getBusinessId()); - productDepartment.setDepartId(item.getDepartId()); - productDepartmentService.save(productDepartment); - } - break; - case "2": - - if (StrUtil.isNotEmpty(item.getUserId())){ - ComponentPermission componentPermission = new ComponentPermission(); - componentPermission.setComponentId(item.getBusinessId()); - componentPermission.setUserId(item.getUserId()); - componentPermissionService.save(componentPermission); - }else { - ComponentDepartment componentDepartment = new ComponentDepartment(); - componentDepartment.setComponentId(item.getBusinessId()); - componentDepartment.setDepartId(item.getDepartId()); - componentDepartmentService.save(componentDepartment); - } - break; - case "3": - if (StrUtil.isNotEmpty(item.getUserId())){ - PartsPermission partsPermission = new PartsPermission(); - partsPermission.setPartsId(item.getBusinessId()); - partsPermission.setUserId(item.getUserId()); - partsPermissionService.save(partsPermission); - }else { - PartsDepartment partsDepartment = new PartsDepartment(); - partsDepartment.setPartsId(item.getBusinessId()); - partsDepartment.setDepartId(item.getDepartId()); - partsDepartmentService.save(partsDepartment); - } - break; - case "4": - if (StrUtil.isNotEmpty(item.getUserId())){ - ProcessSpecVersionPermission processSpecVersionPermission = new ProcessSpecVersionPermission(); - processSpecVersionPermission.setPsvId(item.getBusinessId()); - processSpecVersionPermission.setUserId(item.getUserId()); - processSpecVersionPermissionService.save(processSpecVersionPermission); - }else { - ProcessSpecVersionDepartment processSpecVersionDepartment = new ProcessSpecVersionDepartment(); - processSpecVersionDepartment.setPsvId(item.getBusinessId()); - processSpecVersionDepartment.setDepartId(item.getDepartId()); - processSpecVersionDepartmentService.save(processSpecVersionDepartment); - } - break; - case "5": - if (StrUtil.isNotEmpty(item.getUserId())){ - ProcessionPermission processionPermission = new ProcessionPermission(); - processionPermission.setProcessId(item.getBusinessId()); - processionPermission.setUserId(item.getUserId()); - processStreamPermissionService.save(processionPermission); - }else { - ProcessionDepartment processionDepartment = new ProcessionDepartment(); - processionDepartment.setProcessId(item.getBusinessId()); - processionDepartment.setDepartId(item.getDepartId()); - processionDepartmentService.save(processionDepartment); - } - break; - case "6": - if (StrUtil.isNotEmpty(item.getUserId())){ - WorkStepPermission workStepPermission = new WorkStepPermission(); - workStepPermission.setStepId(item.getBusinessId()); - workStepPermission.setUserId(item.getUserId()); - workStepPermissionService.save(workStepPermission); - }else { - WorkStepDepartment workStepDepartment = new WorkStepDepartment(); - workStepDepartment.setStepId(item.getBusinessId()); - workStepDepartment.setDepartId(item.getDepartId()); - workStepDepartmentService.save(workStepDepartment); - } - break; - default: - } - }); } private void saveDeviceManagement(DeviceManagement deviceManagement) { @@ -393,7 +244,8 @@ deviceManagementMapper.insert(deviceManagement); logger.debug("璁惧绫讳俊鎭凡淇濆瓨: {}", deviceManagement.getId()); } else { - logger.debug("璁惧绫讳俊鎭凡瀛樺湪: {}", deviceManagement.getId()); + deviceManagementMapper.updateById(deviceManagement); + logger.debug("璁惧绫讳俊鎭凡鏇存柊: {}", deviceManagement.getId()); } } @@ -402,7 +254,8 @@ deviceTypeMapper.insert(deviceType); logger.debug("璁惧绫诲凡淇濆瓨: {}", deviceType.getId()); } else { - logger.debug("璁惧绫诲凡瀛樺湪: {}", deviceType.getId()); + deviceTypeMapper.updateById(deviceType); + logger.debug("璁惧绫诲凡鏇存柊: {}", deviceType.getId()); } } @@ -411,7 +264,9 @@ docInfoMapper.insert(docInfo); logger.debug("鏂囨。宸蹭繚瀛�: {}", docInfo.getDocId()); } else { - logger.debug("鏂囨。宸插瓨鍦�: {}", docInfo.getDocId()); + docInfo.setDocDispatchStatus(5); + docInfoMapper.updateById(docInfo); + logger.debug("鏂囨。宸叉洿鏂�: {}", docInfo.getDocId()); } } @@ -420,7 +275,8 @@ docFileMapper.insert(docFile); logger.debug("鏂囨。鏂囦欢宸蹭繚瀛�: {}", docFile.getFileId()); } else { - logger.debug("鏂囨。鏂囦欢宸插瓨鍦�: {}", docFile.getFileId()); + docFileMapper.updateById(docFile); + logger.debug("鏂囨。鏂囦欢宸叉洿鏂�: {}", docFile.getFileId()); } } @@ -429,7 +285,8 @@ docRelativeMapper.insert(docRelative); logger.debug("鏂囨。瀵瑰簲鍏崇郴宸蹭繚瀛�: {}", docRelative.getId()); } else { - logger.debug("鏂囨。瀵瑰簲鍏崇郴宸插瓨鍦�: {}", docRelative.getId()); + docRelativeMapper.updateById(docRelative); + logger.debug("鏂囨。瀵瑰簲鍏崇郴宸叉洿鏂�: {}", docRelative.getId()); } } @@ -440,6 +297,7 @@ logger.debug("鍒�鍏峰凡淇濆瓨: {}", cutter.getId()); } else { cutterMapper.updateById(cutter); + logger.debug("鍒�鍏峰凡鏇存柊: {}", cutter.getId()); } } } @@ -447,9 +305,10 @@ private void saveGuideCardBatch(GuideCardBatch guideCardBatch) { if (guideCardBatchMapper.selectById(guideCardBatch.getId()) == null) { guideCardBatchMapper.insert(guideCardBatch); - logger.debug("鍒�鐗囨壒娆″凡淇濆瓨: {}", guideCardBatch.getId()); + logger.debug("绋嬪簭鍔犲伐纭琛ㄥ凡淇濆瓨: {}", guideCardBatch.getId()); } else { - logger.debug("鍒�鐗囨壒娆″凡瀛樺湪: {}", guideCardBatch.getId()); + guideCardBatchMapper.updateById(guideCardBatch); + logger.debug("绋嬪簭鍔犲伐纭琛ㄥ凡鏇存柊: {}", guideCardBatch.getId()); } } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java index 419c241..4661dcd 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FileFerryService.java @@ -1,19 +1,13 @@ package org.jeecg.modules.dnc.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.dnc.dto.ComponentHierarchy; import org.jeecg.modules.dnc.dto.TransferPackage; -import org.jeecg.modules.dnc.entity.*; -import org.jeecg.modules.dnc.exception.ExceptionCast; -import org.jeecg.modules.dnc.response.ActivitiCode; -import org.jeecg.modules.dnc.response.DocumentCode; +import org.jeecg.modules.dnc.entity.ComponentInfo; +import org.jeecg.modules.dnc.entity.DocFile; import org.jeecg.modules.dnc.service.IDocClassificationService; import org.jeecg.modules.dnc.service.IDocInfoService; import org.jeecg.modules.dnc.service.IDocRelativeService; import org.jeecg.modules.dnc.utils.JsonUtils; -import org.jeecg.modules.dnc.utils.file.FileUtilS; -import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper; import org.jeecg.modules.system.service.IMdcProductionService; import org.slf4j.Logger; @@ -146,7 +140,6 @@ // 6. 鑾峰彇鏂囦欢澶嶅埗鐩爣璺緞 DocFile docFile = pkg.getTraceChain().getDocFile(); - DocInfo docInfo = pkg.getTraceChain().getDocInfo(); if (docFile == null) { throw new IllegalStateException("浼犺緭鍖呬腑缂哄皯鏂囨。鏂囦欢淇℃伅"); } @@ -165,41 +158,6 @@ logger.info("澶嶅埗鏂囦欢: {} 鈫� {}", ncFilePath, targetPath); Path source = Paths.get(ncFilePath); Files.copy(source, Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING); - - // 8. 鏌ヨ璁惧id - MdcEquipment mdcEquipment=mdcEquipmentMapper.selectOne(new QueryWrapper<MdcEquipment>().eq("equipment_id",equipmentId)); - if (mdcEquipment == null) { - throw new IllegalArgumentException("鏃犳晥鐨勮澶嘔D: " + equipmentId); - } - - // 9.浼犺緭鏂囦欢鍒拌澶囦笅 - List<String> strings = mdcProductionService.findListParentTreeAll(mdcEquipment.getId()); - if (strings != null && !strings.isEmpty()) { - DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(docInfo.getDocId(), 7, mdcEquipment.getId()); - if (deviceDoc == null) { - DocClassification classification = classificationService.getByCode("send"); - if(classification == null) - ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); - DocRelative docRelative = new DocRelative(); - docRelative.setDocId(docInfo.getDocId()); - docRelative.setClassificationId(classification.getClassificationId()); - docRelative.setAttributionType(7); - docRelative.setAttributionId(mdcEquipment.getId()); - docRelativeService.save(docRelative); - } - String sendPath = StringUtils.join(strings.toArray(), "/"); - boolean copyFileNc = FileUtilS.copyFileNc(docFile.getFilePath(), sendPath + "/" + mdcEquipment.getEquipmentId(), - docFile.getFileEncodeName(), - docFile.getFileName(), docFile.getFileSuffix()); - if (!copyFileNc) { - ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); - } else { - FileUtilS.deleteZipFromToSend(sendPath + "/" + mdcEquipment.getEquipmentId(), - docFile.getFileName(), docFile.getFileSuffix()); - } - } else { - throw new RuntimeException("鏂囦欢浼犺緭璺緞鑾峰彇澶辫触"); - } // 10.鍒犻櫎涓存椂NC鏂囦欢涓巎son鏂囦欢 logger.info("鍒犻櫎涓存椂鏂囦欢: {}", ncFilePath); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FullHierarchyTraceService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FullHierarchyTraceService.java index 38ca508..43d8920 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FullHierarchyTraceService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/FullHierarchyTraceService.java @@ -6,6 +6,7 @@ import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.dnc.mapper.*; import org.jeecg.modules.dnc.service.IPermissionStreamNewService; +import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -225,7 +226,10 @@ .eq("delete_flag",0)); path.forEach(item->{ if (item.getDepartId()!=null){ - item.setDepartId(mdcProductionService.getById(item.getDepartId()).getOrgCode()); + MdcProduction mdcProduction=mdcProductionService.getById(item.getDepartId()); + if(mdcProduction!=null){ + item.setDepartId(item.getDepartId()); + } } if (item.getUserId()!=null){ item.setUserId(sysUserService.getById(item.getUserId()).getUsername()); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java index 45a9c0a..836f70c 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java @@ -33,9 +33,6 @@ private IDocInfoService docInfoService; @Autowired - private IDocRelativeService docRelativeService; - - @Autowired private IPartsInfoService partsInfoService; @Autowired @@ -138,6 +135,7 @@ guideCardBatch.setPartsName(partsInfo.getPartsName()); guideCardBatch.setMaterielDesp(partsInfo.getMaterielDesp()); } + guideCardBatch.setFlowStatus("0"); guideCardBatch.setCompiler(user.getUsername()); guideCardBatch.setCreateTime(new Date()); return this.save(guideCardBatch); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java index 806a4a8..4d4d867 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java @@ -18,7 +18,7 @@ * @param stream * @return */ - Result applyAssignFile(AssignFileStream stream); + Result<?> applyAssignFile(AssignFileStream stream); /**securedoc * 鍚姩娴佺▼ 淇濆瓨鐩稿簲鐨勬暟鎹� 缁戝畾businessKey diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java index 036ac42..18f1a94 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java @@ -98,9 +98,11 @@ private String secretFolder; //娑夊瘑缃戜紶杈搉c鏂囦欢澶� @Autowired private FileFerryService ferryService; + @Autowired + private IDocClassificationService iDocClassificationService; @Override @Transactional(rollbackFor = {Exception.class}) - public Result applyAssignFile(AssignFileStream stream) { + public Result<?> applyAssignFile(AssignFileStream stream) { synchronized (this){ //鍒ゆ柇璁惧鐗规畩瀛楃 String specialChar = getDeviceSpecialChar(stream.getDeviceId(),stream.getFileId()); @@ -108,6 +110,12 @@ //鎶涘嚭鐗规畩瀛楃寮傚父 return Result.error("鏂囦欢鍚嶇О瀛樺湪璁惧鐗规畩瀛楃"); } + //鏌ヨ鏂囨。鐨勭姸鎬侊紝鎵瑰噯鐘舵�佹墠鍙互鎸囨淳 + DocInfo docInfo=getDocInfo(stream); + DocClassification docClassification=iDocClassificationService.getById(docInfo.getClassificationId()); + if (docInfo.getDocDispatchStatus()!=null&&docInfo.getDocDispatchStatus()!=3&&docClassification.getClassificationCode().equals("nc")){ + return Result.error("璇ユ枃浠剁姸鎬佷笉鍏佽鎸囨淳,璇峰厛瀹屾垚瀹$娴佺▼"); + } if(flowableEnable) { return applyAssignFileActive(stream); }else { diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java new file mode 100644 index 0000000..8da6f51 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java @@ -0,0 +1,96 @@ +package org.jeecg.modules.eam.job; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; +import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; +import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; +import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder; +import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; +import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + +@Component +@Slf4j +public class SecondMaintenanceOrderExpiredJob implements Job { + + @Autowired + private IEamSecondMaintenanceOrderService eamSecondMaintenanceOrderService; + + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private ISysQuartzLogService sysQuartzLogService; + @Autowired + private IQuartzJobService quartzJobService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + //浠诲姟鏃ュ織 + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + long startTime = System.currentTimeMillis(); + LocalDate now = LocalDate.now(); + try { + + List<EamSecondMaintenanceOrder> unCompleteOrderList = eamSecondMaintenanceOrderService.lambdaQuery() + .lt(EamSecondMaintenanceOrder::getMaintenanceDate, now.toString()) + .in(EamSecondMaintenanceOrder::getMaintenanceStatus, SecondMaintenanceStatusEnum.WAIT_MAINTENANCE, SecondMaintenanceStatusEnum.UNDER_MAINTENANCE) + .orderByDesc(EamSecondMaintenanceOrder::getMaintenanceDate) + .list(); + + if (CollectionUtil.isEmpty(unCompleteOrderList)) { + //娌℃湁闇�瑕佸鐞嗙殑鏁版嵁 + return; + } + for (EamSecondMaintenanceOrder order : unCompleteOrderList) { + if (SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { + order.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); + } else if (WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { + //宸茬粡琚帴鍗� 浣嗘湭鎵ц瀹屾垚 + order.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); + //寮哄埗缁撴潫娴佺▼ 鍒犻櫎鐢ㄦ埛鐨勬寰呭姙浠诲姟 + FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId()); + if (flowMyBusiness != null) { + flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "杩囨湡鍒犻櫎"); + } + } + } + eamSecondMaintenanceOrderService.updateBatchById(unCompleteOrderList); + quartzLog.setIsSuccess(0); + } catch (Exception e) { + log.error("浜屼繚杩囨湡鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e); + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java new file mode 100644 index 0000000..89b126a --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java @@ -0,0 +1,139 @@ +package org.jeecg.modules.eam.job; + +import cn.hutool.core.collection.CollectionUtil; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.util.DateUtils; +import org.jeecg.modules.eam.constant.BusinessCodeConst; +import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; +import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; +import org.jeecg.modules.eam.entity.*; +import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; +import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest; +import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService; +import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; +import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; +import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class SecondMaintenanceOrderGenerateJob implements Job { + + @Autowired + private IEamSecondMaintenanceOrderService eamSecondMaintenanceOrderService; + @Autowired + private IEamMaintenanceStandardService eamMaintenanceStandardService; + @Autowired + private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + @Autowired + private ISysQuartzLogService sysQuartzLogService; + @Autowired + private IQuartzJobService quartzJobService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //浠诲姟鏃ュ織 + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + long startTime = System.currentTimeMillis(); + /** + * 鑾峰彇 閰嶇疆浜� 浜屼繚鏍囧噯鐨� 淇℃伅 + */ + List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.SECOND_MAINTENANCE.name()); + if (CollectionUtil.isEmpty(standardList)) { + log.warn("娌℃湁閰嶇疆浠讳綍浜屼繚鏍囧噯锛屼换鍔$粨鏉�"); + return; + } + //褰撳墠鏃ユ湡 + LocalDate now = LocalDate.now(); + try { + for (EamMaintenanceStandard standard : standardList) { + if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) { + log.error("浜屼繚鏍囧噯鍛ㄦ湡璁剧疆閿欒锛岃鍏堥厤缃爣鍑嗗懆鏈�, standard:{}", standard); + continue; + } + if (standard.getInitialDate() == null) { + //璁剧疆鍒濆鏃ユ湡涓哄墠涓�澶� + standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1))); + } + LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate()); + if (standard.getLastGenerateTime() != null) { + generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime()); + } + //鍔犲懆鏈� + do { + //鍒濆鏃ユ湡璁剧疆鐨勬瘮杈冩棭锛屾垨浠诲姟闀挎椂闂存病鎵ц锛屽繀椤诲懆鏈熷埌浠婂ぉ鎵嶄細鐢熸垚宸ュ崟 + generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); + } while (now.isAfter(generateDate)); + if(!now.isEqual(generateDate)) { + //杩樻湭鍒扮敓鎴愭棩鏈燂紝璺宠繃鎵ц + continue; + } + //鑾峰彇淇濆吇椤规槑缁� + List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); + if(CollectionUtil.isEmpty(standardDetailList)) { + log.error("浜屼繚鏍囧噯娌℃湁淇濆吇鏄庣粏锛岃鍏堥厤缃繚鍏绘槑缁�, standard:{}", standard); + continue; + } + //寮�濮嬬敓鎴� + EamSecondMaintenanceRequest request = new EamSecondMaintenanceRequest(); + request.setEquipmentId(standard.getEquipmentId()); + request.setStandardId(standard.getId()); + request.setMaintenanceDate(DateUtils.localDateToDate(generateDate)); + String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.SECOND_MAINTENANCE_CODE_RULE); + request.setOrderNum(codeSeq); + request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); + + List<EamSecondMaintenanceOrderDetail> tableDetailList = new ArrayList<>(); + for (EamMaintenanceStandardDetail msd : standardDetailList) { + EamSecondMaintenanceOrderDetail sod = new EamSecondMaintenanceOrderDetail(); + sod.setItemCode(msd.getItemCode()); + sod.setItemName(msd.getItemName()); + sod.setItemDemand(msd.getItemDemand()); + sod.setItemPart(msd.getItemPart()); + tableDetailList.add(sod); + } +// List<EamSecondMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamSecondMaintenanceOrderDetail::new).collect(Collectors.toList()); + request.setTableDetailList(tableDetailList); + eamSecondMaintenanceOrderService.addMaintenance(request); + + standard.setLastGenerateTime(new Date()); + eamMaintenanceStandardService.updateById(standard); + } + quartzLog.setIsSuccess(0); + } catch (Exception e) { + log.error("浜屼繚鐢熸垚鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e); + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + + } +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java new file mode 100644 index 0000000..8a90fee --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java @@ -0,0 +1,96 @@ +package org.jeecg.modules.eam.job; + +import cn.hutool.core.collection.CollectionUtil; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum; +import org.jeecg.modules.eam.constant.ThirdMaintenanceStatusEnum; +import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; +import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; +import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder; +import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; +import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + +@Component +@Slf4j +public class ThirdMaintenanceOrderExpiredJob implements Job { + + @Autowired + private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; + + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private ISysQuartzLogService sysQuartzLogService; + @Autowired + private IQuartzJobService quartzJobService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + //浠诲姟鏃ュ織 + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + long startTime = System.currentTimeMillis(); + LocalDate now = LocalDate.now(); + try { + + List<EamThirdMaintenanceOrder> unCompleteOrderList = eamThirdMaintenanceOrderService.lambdaQuery() + .lt(EamThirdMaintenanceOrder::getMaintenanceDate, now.toString()) + .in(EamThirdMaintenanceOrder::getMaintenanceStatus, ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE, ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE) + .orderByDesc(EamThirdMaintenanceOrder::getMaintenanceDate) + .list(); + + if (CollectionUtil.isEmpty(unCompleteOrderList)) { + //娌℃湁闇�瑕佸鐞嗙殑鏁版嵁 + return; + } + for (EamThirdMaintenanceOrder order : unCompleteOrderList) { + if (ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { + order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); + } else if (ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) { + //宸茬粡琚帴鍗� 浣嗘湭鎵ц瀹屾垚 + order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name()); + //寮哄埗缁撴潫娴佺▼ 鍒犻櫎鐢ㄦ埛鐨勬寰呭姙浠诲姟 + FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId()); + if (flowMyBusiness != null) { + flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "杩囨湡鍒犻櫎"); + } + } + } + eamThirdMaintenanceOrderService.updateBatchById(unCompleteOrderList); + quartzLog.setIsSuccess(0); + } catch (Exception e) { + log.error("涓変繚杩囨湡鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e); + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java new file mode 100644 index 0000000..8e19741 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java @@ -0,0 +1,154 @@ +package org.jeecg.modules.eam.job; + +import cn.hutool.core.collection.CollectionUtil; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.util.DateUtils; +import org.jeecg.modules.eam.constant.BusinessCodeConst; +import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; +import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; +import org.jeecg.modules.eam.entity.*; +import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; +import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest; +import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class ThirdMaintenanceOrderGenerateJob implements Job { + + @Autowired + private IEamEquipmentPrecisionParametersService eamEquipmentPrecisionParametersService; + @Autowired + private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService; + @Autowired + private IEamMaintenanceStandardService eamMaintenanceStandardService; + @Autowired + private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + @Autowired + private ISysQuartzLogService sysQuartzLogService; + @Autowired + private IQuartzJobService quartzJobService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //浠诲姟鏃ュ織 + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + long startTime = System.currentTimeMillis(); + /** + * 鑾峰彇 閰嶇疆浜� 涓変繚鏍囧噯鐨� 淇℃伅 + */ + List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.THIRD_MAINTENANCE.name()); + if (CollectionUtil.isEmpty(standardList)) { + log.warn("娌℃湁閰嶇疆浠讳綍涓変繚鏍囧噯锛屼换鍔$粨鏉�"); + return; + } + //褰撳墠鏃ユ湡 + LocalDate now = LocalDate.now(); + try { + for (EamMaintenanceStandard standard : standardList) { + if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) { + log.error("涓変繚鏍囧噯鍛ㄦ湡璁剧疆閿欒锛岃鍏堥厤缃爣鍑嗗懆鏈�, standard:{}", standard); + continue; + } + if (standard.getInitialDate() == null) { + //璁剧疆鍒濆鏃ユ湡涓哄墠涓�澶� + standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1))); + } + LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate()); + if (standard.getLastGenerateTime() != null) { + generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime()); + } + //鍔犲懆鏈� + do { + //鍒濆鏃ユ湡璁剧疆鐨勬瘮杈冩棭锛屾垨浠诲姟闀挎椂闂存病鎵ц锛屽繀椤诲懆鏈熷埌浠婂ぉ鎵嶄細鐢熸垚宸ュ崟 + generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); + } while (now.isAfter(generateDate)); + if(!now.isEqual(generateDate)) { + //杩樻湭鍒扮敓鎴愭棩鏈燂紝璺宠繃鎵ц + continue; + } + //鑾峰彇淇濆吇椤规槑缁� + List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); + if(CollectionUtil.isEmpty(standardDetailList)) { + log.error("涓変繚鏍囧噯娌℃湁淇濆吇鏄庣粏锛岃鍏堥厤缃繚鍏绘槑缁�, standard:{}", standard); + continue; + } + + //寮�濮嬬敓鎴� + EamThirdMaintenanceRequest request = new EamThirdMaintenanceRequest(); + request.setEquipmentId(standard.getEquipmentId()); + request.setStandardId(standard.getId()); + request.setMaintenanceDate(DateUtils.localDateToDate(generateDate)); + String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.THIRD_MAINTENANCE_CODE_RULE); + request.setOrderNum(codeSeq); + request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); + + List<EamThirdMaintenanceOrderDetail> tableDetailList = new ArrayList<>(); + for (EamMaintenanceStandardDetail msd : standardDetailList) { + EamThirdMaintenanceOrderDetail tod = new EamThirdMaintenanceOrderDetail(); + tod.setItemCode(msd.getItemCode()); + tod.setItemName(msd.getItemName()); + tod.setItemDemand(msd.getItemDemand()); + tod.setItemPart(msd.getItemPart()); + tableDetailList.add(tod); + } +// List<EamThirdMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamThirdMaintenanceOrderDetail::new).collect(Collectors.toList()); + request.setTableDetailList(tableDetailList); + + //閫氳繃璁惧 鑾峰彇璁惧绮惧害鍙傛暟 + List<EamEquipmentPrecisionParameters> precisionParametersList = eamEquipmentPrecisionParametersService + .lambdaQuery().eq(EamEquipmentPrecisionParameters::getEquipmentId, standard.getEquipmentId()).list(); + if(precisionParametersList.size()>0){ + List<EamPrecisionCheckDetail> precisionDetailList = new ArrayList<>(); + for (EamEquipmentPrecisionParameters epp : precisionParametersList) { + EamPrecisionCheckDetail pcd = new EamPrecisionCheckDetail(); + pcd.setParameterId(epp.getParameterId()); + pcd.setEquipmentId(standard.getEquipmentId()); + pcd.setParameterValue(epp.getParameterValue()); + precisionDetailList.add(pcd); + } + request.setPrecisionDetailList(precisionDetailList); + } + eamThirdMaintenanceOrderService.addMaintenance(request); + + standard.setLastGenerateTime(new Date()); + eamMaintenanceStandardService.updateById(standard); + } + quartzLog.setIsSuccess(0); + } catch (Exception e) { + log.error("涓変繚鐢熸垚鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e); + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java new file mode 100644 index 0000000..d522be5 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/LogTable.java @@ -0,0 +1,39 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author Lius + * @date 2024/12/18 14:19 + */ +@Data +@TableName("log_table") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "log_table瀵硅薄", description = "sql璁板綍琛�") +public class LogTable implements Serializable { + + private static final long serialVersionUID = 953864495681756550L; + + /** + * 鎿嶄綔绫诲瀷锛圛NSERT / UPDATE / DELETE锛� + */ + private String action; + + /** + * 鍒涘缓鏃堕棿 + */ + private Date createTime; + + /** + * sql璁板綍 + */ + private String sqlLog; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java new file mode 100644 index 0000000..2dee55d --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ImportXmlToDataJob.java @@ -0,0 +1,62 @@ +package org.jeecg.modules.mdc.job; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.util.DateUtils; +import org.jeecg.modules.mdc.service.ILogTableService; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.ISysAnnouncementService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @author Lius + * @date 2024/12/19 16:43 + */ +@Slf4j +public class ImportXmlToDataJob implements Job { + + @Resource + private ISysQuartzLogService sysQuartzLogService; + + @Resource + private IQuartzJobService quartzJobService; + + @Resource + private ISysAnnouncementService sysAnnouncementService; + + @Resource + private ILogTableService logTableService; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + log.info("瀹氭椂瀵煎叆sql鏁版嵁浠诲姟 ImportXmlToDataJob start! 鏃堕棿:" + DateUtils.now()); + long startTime = System.currentTimeMillis(); + try { + logTableService.importXmlToData(); + quartzLog.setIsSuccess(0); + } catch (Exception e) { + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + // 鍙戦�佹秷鎭�氱煡 + sysAnnouncementService.jobSendMessage("瀹氭椂瀵煎叆sql鏁版嵁浠诲姟", quartzLog.getExceptionDetail()); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java new file mode 100644 index 0000000..57c88ca --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOEEJob.java @@ -0,0 +1,83 @@ +package org.jeecg.modules.mdc.job; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.util.DateUtils; +import org.jeecg.modules.mdc.service.IMdcOeeInfoService; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.mdc.vo.MdcOeeComputeVo; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.ISysAnnouncementService; +import org.quartz.*; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + +/** + * @Author: Lius + * @CreateTime: 2025-04-24 + * @Description: OEE + */ +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +@Slf4j +public class RunningOEEJob implements Job { + + /** + * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼 鏃堕棿锛� yyyyMMdd 渚嬶細 20230414 + */ + private String parameter; + + public void setParameter(String parameter) { + this.parameter = parameter; + } + + @Resource + private IQuartzJobService quartzJobService; + + @Resource + private ISysAnnouncementService sysAnnouncementService; + + @Resource + private ISysQuartzLogService sysQuartzLogService; + + @Resource + private IMdcOeeInfoService mdcOeeInfoService; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + quartzLog.setParams(this.parameter); + log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOEEJob start! 鏃堕棿:" + DateUtils.now(), this.parameter); + long startTime = System.currentTimeMillis(); + try { + MdcOeeComputeVo mdcOeeComputeVo = new MdcOeeComputeVo(); + String dateTime = LocalDate.now().plusDays(-1).toString(); + if (StringUtils.isNotBlank(this.parameter)) { + dateTime = DateUtils.date2Str(DateUtils.str2Date(this.parameter, DateUtils.yyyyMMdd.get()), DateUtils.date_sdf.get()); + } + mdcOeeComputeVo.setStartTime(dateTime); + mdcOeeComputeVo.setEndTime(dateTime); + mdcOeeInfoService.computeOee(mdcOeeComputeVo); + quartzLog.setIsSuccess(0); + } catch (Exception e) { + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + // 鍙戦�佹秷鎭�氱煡 + sysAnnouncementService.jobSendMessage("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟", quartzLog.getExceptionDetail()); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java new file mode 100644 index 0000000..98cc17f --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/LogTableMapper.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.mdc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.mdc.entity.LogTable; + +/** + * @author Lius + * @date 2024/12/18 14:24 + */ +public interface LogTableMapper extends BaseMapper<LogTable> { +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml new file mode 100644 index 0000000..3d79dd7 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/LogTableMapper.xml @@ -0,0 +1,5 @@ +<?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.LogTableMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java new file mode 100644 index 0000000..9e9f887 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/ILogTableService.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.mdc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.entity.LogTable; + +/** + * @author Lius + * @date 2024/12/18 14:29 + */ +public interface ILogTableService extends IService<LogTable> { + + /** + * 瀵煎叆鍚屾鏁版嵁sql鎵ц鍒版暟鎹簱 + */ + void importXmlToData(); + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java new file mode 100644 index 0000000..8f5d25e --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/LogTableServiceImpl.java @@ -0,0 +1,80 @@ +package org.jeecg.modules.mdc.service.impl; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.file.FileReader; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.modules.mdc.entity.LogTable; +import org.jeecg.modules.mdc.mapper.LogTableMapper; +import org.jeecg.modules.mdc.service.ILogTableService; +import org.jeecg.modules.mdc.util.SqlExecutor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Lius + * @date 2024/12/18 14:29 + */ +@Service +@Slf4j +public class LogTableServiceImpl extends ServiceImpl<LogTableMapper, LogTable> implements ILogTableService { + + @Value("${fileService.localFilePath}") + private String localFilePath; + + @Value("${fileService.newFilePath}") + private String newFilePath; + + @Value("${fileService.failedLocFilePath}") + private String failedLocFilePath; + + @Resource + private SqlExecutor sqlExecutor; + + /** + * 瀵煎叆鍚屾鏁版嵁sql鎵ц鍒版暟鎹簱 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void importXmlToData() { + File[] files = FileUtil.ls(localFilePath); + List<String> failedSqlList = new ArrayList<>(); // 鐢ㄤ簬瀛樺偍鎵ц澶辫触鐨� SQL + for (File file : files) { + if (file.isFile()) { + String loFilePath = localFilePath + file.getName(); + FileReader fileReader = new FileReader(loFilePath); + List<String> sqlList = fileReader.readLines(); + log.info("鎴愬姛璇诲彇鍒皗}鏉ql,鎵ц鎿嶄綔", sqlList.size()); + for (String sql : sqlList) { + try { + sqlExecutor.execute(sql); + } catch (Exception e) { + failedSqlList.add(sql); + } + } + if (!failedSqlList.isEmpty()) { + try { + FileUtil.appendLines(failedSqlList, failedLocFilePath, "UTF-8"); + } catch (Exception e) { + throw new JeecgBootException("鏁版嵁鍐欏叆鏂囦欢澶辫触锛�"); + } + } + + if (Integer.parseInt(file.getName().substring(file.getName().length() - 10, file.getName().length() - 4)) == 1) { + // 鍒犻櫎鍘嗗彶鏂囦欢 + FileUtil.clean(newFilePath); + } + + // 澶囦唤 + FileUtil.move(new File(loFilePath), new File(newFilePath + file.getName()), true); + } + } + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java index dd23560..aed617f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java @@ -165,8 +165,8 @@ @Transactional(rollbackFor = Exception.class) public void computeOee(MdcOeeComputeVo mdcOeeComputeVo) { List<MdcOeeInfo> result = new ArrayList<>(); - String startDate = mdcOeeComputeVo.getStartDate(); - String endDate = mdcOeeComputeVo.getEndDate(); + String startDate = mdcOeeComputeVo.getStartTime(); + String endDate = mdcOeeComputeVo.getEndTime(); List<String> dateList = DateUtils.getDatesStringList(DateUtils.getShortDate(startDate), DateUtils.getShortDate(endDate)); if (!dateList.isEmpty()) { //鑾峰彇璁惧鍒楄〃 @@ -204,12 +204,10 @@ mdcOeeInfo.setTimeActuationRate(timeActuationRate); // 鏈夋晥杩愯鏃堕棿 --- 鎸夐渶姹傜淮鎶ら浂浠跺姞宸ユ�绘椂闀縷|绯荤粺涓昏酱璐熻浇鏃堕棿 Integer effectiveRunLong = 0; - Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate); - if (totalProcessLong == 0) { - //鏌ヨ璁惧杩愯鏃堕棿 - effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", "")); - } else { - effectiveRunLong = totalProcessLong; +// Integer totalProcessLong = mdcPartProcessInfoService.selectTotalProcessLong(equipmentId, validDate); + effectiveRunLong = mdcEquipmentStatisticalInfoService.selectProcessLong(equipmentId, validDate.replace("-", "")); + if (effectiveRunLong == null) { + effectiveRunLong = 0; } mdcOeeInfo.setEffectiveRunLong(effectiveRunLong); // 鎬ц兘寮�鍔ㄧ巼 --- 鏈夋晥杩愯鏃堕棿/寮�鍔ㄦ椂闂� @@ -217,7 +215,7 @@ if (effectiveRunLong != 0 && actuateLong != 0) { performanceRate = new BigDecimal(effectiveRunLong).divide(new BigDecimal(actuateLong), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); } - mdcOeeInfo.setPerformanceRate(performanceRate); + mdcOeeInfo.setPerformanceRate(performanceRate.compareTo(new BigDecimal(100)) > 0 ? new BigDecimal(100) : performanceRate); // 鍔犲伐闆朵欢鏁伴噺 --- 鎸夌淮鎶ゆ暟鎹粺璁″綋澶� Integer processCount = mdcPartProcessInfoService.selectTotalProcessCount(equipmentId, validDate); mdcOeeInfo.setProcessCount(processCount); @@ -225,7 +223,7 @@ Integer passCount = mdcPartProcessInfoService.selectTotalPassCount(equipmentId, validDate); mdcOeeInfo.setPassCount(passCount); // 鍚堟牸鐜� --- 鍚堟牸鏁�/鍔犲伐鏁� - BigDecimal passRate = BigDecimal.ZERO; + BigDecimal passRate = new BigDecimal("100"); if (processCount != 0 && passCount != 0) { passRate = new BigDecimal(passCount).divide(new BigDecimal(processCount), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java new file mode 100644 index 0000000..646dc55 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/util/SqlExecutor.java @@ -0,0 +1,29 @@ +package org.jeecg.modules.mdc.util; + +import org.apache.ibatis.jdbc.SqlRunner; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @author Lius + * @date 2025/1/3 13:26 + */ +@Component +public class SqlExecutor { + + @Resource + private SqlSessionFactory sqlSessionFactory; + + public void execute(String sql) { + try (SqlSession sqlSession = sqlSessionFactory.openSession(true)) { + SqlRunner runner = new SqlRunner(sqlSession.getConnection()); + runner.run(sql); + } catch (Exception e) { +// e.printStackTrace(); + throw new RuntimeException("Error executing SQL: " + sql, e); + } + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java index b23a4c9..bc8f5f4 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcOeeComputeVo.java @@ -8,6 +8,6 @@ */ @Data public class MdcOeeComputeVo { - private String startDate; - private String endDate; + private String startTime; + private String endTime; } diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml index 682766c..127a534 100644 --- a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml +++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml @@ -321,3 +321,8 @@ interval: 10000 # 鐩戞帶闂撮殧(ms) security: encryption-key: 1234567890abcdef # 鍔犺В瀵嗙閽� +#mdc鏂囦欢璺緞閰嶇疆 +fileService: + localFilePath: D:/data/sql/ #鏈湴鏂囦欢璺緞 + newFilePath: D:/data/bak/ #澶囦唤鏂囦欢璺緞 + failedLocFilePath: D:/data/failed/failed.sql #澶辫触鏂囦欢璺緞 -- Gitblit v1.9.3