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 = "审æ¹äºº") 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æä»¶ä¸ncæä»¶è¿è¡è§£æ * @param file */ private void handleIndustrialDocFile(File file) { log.info("å·¥æ§ç½è§£ææ¶å¯ç½ä¼ è¿æ¥çNCæä»¶ä¸ncæä»¶è¿è¡è§£æ: {}", 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 æ¯å¦è§£æå·¥ä½æµæä½ } } catch (Exception e) { log.error("å·¥æ§ç½è§£ææ¶å¯ç½ä¼ è¿æ¥çNCæä»¶ä¸ncæä»¶è¿è¡è§£æ: {}", e.getMessage()); } } /** * æ¶å¯ç½è§£æå·¥æ§ç½ä¼ è¿æ¥çNCæä»¶ä¸ncæä»¶è¿è¡è§£æï¼ç¨åºåä¼ ï¼ * @param file */ private void handleSecretDocFile(File file) { log.info("æ¶å¯ç½è§£æå·¥æ§ç½ä¼ è¿æ¥çNCæä»¶ä¸ncæä»¶è¿è¡è§£æ: {}", file.getAbsolutePath()); try { boolean b= docInfoService.addDocInfoAnalysisSmwNcService(file.getAbsolutePath(), file); }catch (Exception e) { log.error("æ¶å¯ç½è§£æå·¥æ§ç½ä¼ è¿æ¥çNCæä»¶ä¸ncæä»¶è¿è¡è§£æ: {}", e.getMessage()); } } } 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 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); 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()); } } } 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("æ æç设å¤ID: " + 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æä»¶ä¸jsonæä»¶ logger.info("å é¤ä¸´æ¶æä»¶: {}", ncFilePath); 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()); 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); 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 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java
@@ -98,9 +98,11 @@ private String secretFolder; //æ¶å¯ç½ä¼ è¾ncæä»¶å¤¹ @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 { 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); } } 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); } } 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); } } 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); } } 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; /** * æä½ç±»åï¼INSERT / UPDATE / DELETEï¼ */ private String action; /** * å建æ¶é´ */ private Date createTime; /** * sqlè®°å½ */ private String sqlLog; } 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); } } 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); } } 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> { } 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> 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(); } 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("æå读åå°{}æ¡sql,æ§è¡æä½", 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); } } } } 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); } 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); } } } 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; } 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 #失败æä»¶è·¯å¾