Commit 515f43ee authored by litengwei's avatar litengwei

Merge remote-tracking branch 'origin/develop_dl' into develop_dl

parents ef9c427d 2a0167a4
<component name="libraryTable">
<library name="Maven: cn.afterturn:easypoi-annotation:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-annotation/3.0.3/easypoi-annotation-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-annotation/3.0.3/easypoi-annotation-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-annotation/3.0.3/easypoi-annotation-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: cn.afterturn:easypoi-base:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-base/3.0.3/easypoi-base-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-base/3.0.3/easypoi-base-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-base/3.0.3/easypoi-base-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: cn.afterturn:easypoi-web:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-web/3.0.3/easypoi-web-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-web/3.0.3/easypoi-web-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/cn/afterturn/easypoi-web/3.0.3/easypoi-web-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.adobe.xmp:xmpcore:5.1.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/adobe/xmp/xmpcore/5.1.2/xmpcore-5.1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/adobe/xmp/xmpcore/5.1.2/xmpcore-5.1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/adobe/xmp/xmpcore/5.1.2/xmpcore-5.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.beust:jcommander:1.48">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.48/jcommander-1.48.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.48/jcommander-1.48-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/beust/jcommander/1.48/jcommander-1.48-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.drewnoakes:metadata-extractor:2.8.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/drewnoakes/metadata-extractor/2.8.1/metadata-extractor-2.8.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/drewnoakes/metadata-extractor/2.8.1/metadata-extractor-2.8.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/drewnoakes/metadata-extractor/2.8.1/metadata-extractor-2.8.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.jai-imageio:jai-imageio-core:1.3.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/jai-imageio/jai-imageio-core/1.3.1/jai-imageio-core-1.3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/jai-imageio/jai-imageio-core/1.3.1/jai-imageio-core-1.3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/jai-imageio/jai-imageio-core/1.3.1/jai-imageio-core-1.3.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.jsqlparser:jsqlparser:2.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/2.1/jsqlparser-2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/2.1/jsqlparser-2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/2.1/jsqlparser-2.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.junrar:junrar:0.7">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/junrar/junrar/0.7/junrar-0.7.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/junrar/junrar/0.7/junrar-0.7-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/junrar/junrar/0.7/junrar-0.7-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.tobato:fastdfs-client:1.26.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/tobato/fastdfs-client/1.26.6/fastdfs-client-1.26.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/tobato/fastdfs-client/1.26.6/fastdfs-client-1.26.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/tobato/fastdfs-client/1.26.6/fastdfs-client-1.26.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.virtuald:curvesapi:1.04">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.04/curvesapi-1.04.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.04/curvesapi-1.04-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/virtuald/curvesapi/1.04/curvesapi-1.04-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.google.zxing:javase:3.3.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/javase/3.3.0/javase-3.3.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/javase/3.3.0/javase-3.3.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/zxing/javase/3.3.0/javase-3.3.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.googlecode.json-simple:json-simple:1.1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.googlecode.juniversalchardet:juniversalchardet:1.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.googlecode.mp4parser:isoparser:1.1.18">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/mp4parser/isoparser/1.1.18/isoparser-1.1.18.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/mp4parser/isoparser/1.1.18/isoparser-1.1.18-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/mp4parser/isoparser/1.1.18/isoparser-1.1.18-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.healthmarketscience.jackcess:jackcess:2.1.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/healthmarketscience/jackcess/jackcess/2.1.3/jackcess-2.1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/healthmarketscience/jackcess/jackcess/2.1.3/jackcess-2.1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/healthmarketscience/jackcess/jackcess/2.1.3/jackcess-2.1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.healthmarketscience.jackcess:jackcess-encrypt:2.1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/healthmarketscience/jackcess/jackcess-encrypt/2.1.1/jackcess-encrypt-2.1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/healthmarketscience/jackcess/jackcess-encrypt/2.1.1/jackcess-encrypt-2.1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/healthmarketscience/jackcess/jackcess-encrypt/2.1.1/jackcess-encrypt-2.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.itextpdf:itextpdf:5.5.9">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/itextpdf/5.5.9/itextpdf-5.5.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/itextpdf/5.5.9/itextpdf-5.5.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/itextpdf/5.5.9/itextpdf-5.5.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.itextpdf.tool:xmlworker:5.5.9">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/tool/xmlworker/5.5.9/xmlworker-5.5.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/tool/xmlworker/5.5.9/xmlworker-5.5.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/tool/xmlworker/5.5.9/xmlworker-5.5.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.mchange:mchange-commons-java:0.2.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/mchange-commons-java/0.2.15/mchange-commons-java-0.2.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/mchange-commons-java/0.2.15/mchange-commons-java-0.2.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/mchange/mchange-commons-java/0.2.15/mchange-commons-java-0.2.15-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.pff:java-libpst:0.8.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/pff/java-libpst/0.8.1/java-libpst-0.8.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/pff/java-libpst/0.8.1/java-libpst-0.8.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/pff/java-libpst/0.8.1/java-libpst-0.8.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.rometools:rome:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/rometools/rome/1.5.1/rome-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/rometools/rome/1.5.1/rome-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/rometools/rome/1.5.1/rome-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.rometools:rome-utils:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/rometools/rome-utils/1.5.1/rome-utils-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/rometools/rome-utils/1.5.1/rome-utils-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/rometools/rome-utils/1.5.1/rome-utils-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.thedeanda:lorem:2.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/thedeanda/lorem/2.1/lorem-2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/thedeanda/lorem/2.1/lorem-2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/thedeanda/lorem/2.1/lorem-2.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.yeejoin:amos-component-feign:1.1.0-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/yeejoin/amos-component-feign/1.1.0-SNAPSHOT/amos-component-feign-1.1.0-20200619.022144-19.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/yeejoin/amos-component-feign/1.1.0-SNAPSHOT/amos-component-feign-1.1.0-20200619.022144-19-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/yeejoin/amos-component-feign/1.1.0-SNAPSHOT/amos-component-feign-1.1.0-20200619.022144-19-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-beanutils:commons-beanutils:1.9.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-io:commons-io:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.4/commons-io-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.4/commons-io-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.4/commons-io-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-logging:commons-logging-api:1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: de.l3s.boilerpipe:boilerpipe:1.1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/de/l3s/boilerpipe/boilerpipe/1.1.0/boilerpipe-1.1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/de/l3s/boilerpipe/boilerpipe/1.1.0/boilerpipe-1.1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/de/l3s/boilerpipe/boilerpipe/1.1.0/boilerpipe-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: edu.ucar:cdm:4.5.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/cdm/4.5.5/cdm-4.5.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/cdm/4.5.5/cdm-4.5.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/cdm/4.5.5/cdm-4.5.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: edu.ucar:grib:4.5.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/grib/4.5.5/grib-4.5.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/grib/4.5.5/grib-4.5.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/grib/4.5.5/grib-4.5.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: edu.ucar:httpservices:4.5.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/httpservices/4.5.5/httpservices-4.5.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/httpservices/4.5.5/httpservices-4.5.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/httpservices/4.5.5/httpservices-4.5.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: edu.ucar:jj2000:5.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/jj2000/5.2/jj2000-5.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/jj2000/5.2/jj2000-5.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/jj2000/5.2/jj2000-5.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: edu.ucar:netcdf4:4.5.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/netcdf4/4.5.5/netcdf4-4.5.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/netcdf4/4.5.5/netcdf4-4.5.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/netcdf4/4.5.5/netcdf4-4.5.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: edu.ucar:udunits:4.5.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/udunits/4.5.5/udunits-4.5.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/udunits/4.5.5/udunits-4.5.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/edu/ucar/udunits/4.5.5/udunits-4.5.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: javax.annotation:javax.annotation-api:1.3.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: javax.measure:jsr-275:0.9.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/measure/jsr-275/0.9.3/jsr-275-0.9.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/measure/jsr-275/0.9.3/jsr-275-0.9.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/measure/jsr-275/0.9.3/jsr-275-0.9.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: javax.ws.rs:javax.ws.rs-api:2.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/javax.ws.rs-api/2.0.1/javax.ws.rs-api-2.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/javax.ws.rs-api/2.0.1/javax.ws.rs-api-2.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/javax.ws.rs-api/2.0.1/javax.ws.rs-api-2.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.arnx:wmf2svg:0.9.8">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/arnx/wmf2svg/0.9.8/wmf2svg-0.9.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/arnx/wmf2svg/0.9.8/wmf2svg-0.9.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/arnx/wmf2svg/0.9.8/wmf2svg-0.9.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.coobird:thumbnailator:0.4.8">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.engio:mbassador:1.2.4.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/engio/mbassador/1.2.4.2/mbassador-1.2.4.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/engio/mbassador/1.2.4.2/mbassador-1.2.4.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/engio/mbassador/1.2.4.2/mbassador-1.2.4.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.jcip:jcip-annotations:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.sf.ehcache:ehcache-core:2.6.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.2/ehcache-core-2.6.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.2/ehcache-core-2.6.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ehcache/ehcache-core/2.6.2/ehcache-core-2.6.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.sf.jwordnet:jwnl:1.3.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/jwordnet/jwnl/1.3.3/jwnl-1.3.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/jwordnet/jwnl/1.3.3/jwnl-1.3.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/jwordnet/jwnl/1.3.3/jwnl-1.3.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: net.sourceforge.jmatio:jmatio:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sourceforge/jmatio/jmatio/1.0/jmatio-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sourceforge/jmatio/jmatio/1.0/jmatio-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sourceforge/jmatio/jmatio/1.0/jmatio-1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.antlr:antlr-runtime:3.5.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.avalon.framework:avalon-framework-api:4.3.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/avalon/framework/avalon-framework-api/4.3.1/avalon-framework-api-4.3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/avalon/framework/avalon-framework-api/4.3.1/avalon-framework-api-4.3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/avalon/framework/avalon-framework-api/4.3.1/avalon-framework-api-4.3.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.avalon.framework:avalon-framework-impl:4.3.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.commons:commons-collections4:4.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.commons:commons-csv:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-csv/1.0/commons-csv-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-csv/1.0/commons-csv-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-csv/1.0/commons-csv-1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.commons:commons-exec:1.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-exec/1.3/commons-exec-1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-exec/1.3/commons-exec-1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-exec/1.3/commons-exec-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.commons:commons-vfs2:2.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-vfs2/2.0/commons-vfs2-2.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-vfs2/2.0/commons-vfs2-2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-vfs2/2.0/commons-vfs2-2.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.cxf:cxf-core:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-core/3.0.3/cxf-core-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-core/3.0.3/cxf-core-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-core/3.0.3/cxf-core-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.cxf:cxf-rt-frontend-jaxrs:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-frontend-jaxrs/3.0.3/cxf-rt-frontend-jaxrs-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-frontend-jaxrs/3.0.3/cxf-rt-frontend-jaxrs-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-frontend-jaxrs/3.0.3/cxf-rt-frontend-jaxrs-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.cxf:cxf-rt-rs-client:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-rs-client/3.0.3/cxf-rt-rs-client-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-rs-client/3.0.3/cxf-rt-rs-client-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-rs-client/3.0.3/cxf-rt-rs-client-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.cxf:cxf-rt-transports-http:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-transports-http/3.0.3/cxf-rt-transports-http-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-transports-http/3.0.3/cxf-rt-transports-http-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cxf/cxf-rt-transports-http/3.0.3/cxf-rt-transports-http-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.james:apache-mime4j-core:0.7.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/james/apache-mime4j-core/0.7.2/apache-mime4j-core-0.7.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/james/apache-mime4j-core/0.7.2/apache-mime4j-core-0.7.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/james/apache-mime4j-core/0.7.2/apache-mime4j-core-0.7.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.james:apache-mime4j-dom:0.7.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/james/apache-mime4j-dom/0.7.2/apache-mime4j-dom-0.7.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/james/apache-mime4j-dom/0.7.2/apache-mime4j-dom-0.7.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/james/apache-mime4j-dom/0.7.2/apache-mime4j-dom-0.7.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.maven.scm:maven-scm-api:1.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-api/1.4/maven-scm-api-1.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-api/1.4/maven-scm-api-1.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-api/1.4/maven-scm-api-1.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.maven.scm:maven-scm-provider-svn-commons:1.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-provider-svn-commons/1.4/maven-scm-provider-svn-commons-1.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-provider-svn-commons/1.4/maven-scm-provider-svn-commons-1.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-provider-svn-commons/1.4/maven-scm-provider-svn-commons-1.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.maven.scm:maven-scm-provider-svnexe:1.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-provider-svnexe/1.4/maven-scm-provider-svnexe-1.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-provider-svnexe/1.4/maven-scm-provider-svnexe-1.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/maven/scm/maven-scm-provider-svnexe/1.4/maven-scm-provider-svnexe-1.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.opennlp:opennlp-maxent:3.0.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/opennlp/opennlp-maxent/3.0.3/opennlp-maxent-3.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/opennlp/opennlp-maxent/3.0.3/opennlp-maxent-3.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/opennlp/opennlp-maxent/3.0.3/opennlp-maxent-3.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.opennlp:opennlp-tools:1.5.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/opennlp/opennlp-tools/1.5.3/opennlp-tools-1.5.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/opennlp/opennlp-tools/1.5.3/opennlp-tools-1.5.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/opennlp/opennlp-tools/1.5.3/opennlp-tools-1.5.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.pdfbox:jempbox:1.8.12">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/jempbox/1.8.12/jempbox-1.8.12.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/jempbox/1.8.12/jempbox-1.8.12-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/jempbox/1.8.12/jempbox-1.8.12-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.poi:poi:3.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.15/poi-3.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.15/poi-3.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi/3.15/poi-3.15-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.poi:poi-ooxml:3.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/3.15/poi-ooxml-3.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/3.15/poi-ooxml-3.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-ooxml/3.15/poi-ooxml-3.15-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.poi:poi-scratchpad:3.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-scratchpad/3.15/poi-scratchpad-3.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-scratchpad/3.15/poi-scratchpad-3.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/poi/poi-scratchpad/3.15/poi-scratchpad-3.15-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.sis.core:sis-metadata:0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-metadata/0.6/sis-metadata-0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-metadata/0.6/sis-metadata-0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-metadata/0.6/sis-metadata-0.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.sis.core:sis-referencing:0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-referencing/0.6/sis-referencing-0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-referencing/0.6/sis-referencing-0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-referencing/0.6/sis-referencing-0.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.sis.core:sis-utility:0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-utility/0.6/sis-utility-0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-utility/0.6/sis-utility-0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/core/sis-utility/0.6/sis-utility-0.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.sis.storage:sis-netcdf:0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/storage/sis-netcdf/0.6/sis-netcdf-0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/storage/sis-netcdf/0.6/sis-netcdf-0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/storage/sis-netcdf/0.6/sis-netcdf-0.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.sis.storage:sis-storage:0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/storage/sis-storage/0.6/sis-storage-0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/storage/sis-storage/0.6/sis-storage-0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/sis/storage/sis-storage/0.6/sis-storage-0.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.tika:tika-core:1.13">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/tika/tika-core/1.13/tika-core-1.13.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/tika/tika-core/1.13/tika-core-1.13-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/tika/tika-core/1.13/tika-core-1.13-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.tika:tika-parsers:1.13">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/tika/tika-parsers/1.13/tika-parsers-1.13.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/tika/tika-parsers/1.13/tika-parsers-1.13-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/tika/tika-parsers/1.13/tika-parsers-1.13-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.ws.xmlschema:xmlschema-core:2.1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/ws/xmlschema/xmlschema-core/2.1.0/xmlschema-core-2.1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/ws/xmlschema/xmlschema-core/2.1.0/xmlschema-core-2.1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/ws/xmlschema/xmlschema-core/2.1.0/xmlschema-core-2.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.3/xmlgraphics-commons-2.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.3/xmlgraphics-commons-2.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xmlgraphics/xmlgraphics-commons/2.3/xmlgraphics-commons-2.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.assertj:assertj-core:3.11.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/assertj/assertj-core/3.11.1/assertj-core-3.11.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.bouncycastle:bcmail-jdk15on:1.54">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcmail-jdk15on/1.54/bcmail-jdk15on-1.54.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcmail-jdk15on/1.54/bcmail-jdk15on-1.54-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcmail-jdk15on/1.54/bcmail-jdk15on-1.54-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.bouncycastle:bcpkix-jdk15on:1.54">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.54/bcpkix-jdk15on-1.54.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.54/bcpkix-jdk15on-1.54-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.54/bcpkix-jdk15on-1.54-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.bouncycastle:bcprov-jdk15on:1.54">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.ccil.cowan.tagsoup:tagsoup:1.2.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ccil/cowan/tagsoup/tagsoup/1.2.1/tagsoup-1.2.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.codelibs:jhighlight:1.0.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/codelibs/jhighlight/1.0.2/jhighlight-1.0.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/codelibs/jhighlight/1.0.2/jhighlight-1.0.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/codelibs/jhighlight/1.0.2/jhighlight-1.0.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.docx4j:docx4j:6.0.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/docx4j/6.0.0/docx4j-6.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/docx4j/6.0.0/docx4j-6.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/docx4j/6.0.0/docx4j-6.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.docx4j:docx4j-ImportXHTML:6.0.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/docx4j-ImportXHTML/6.0.0/docx4j-ImportXHTML-6.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/docx4j-ImportXHTML/6.0.0/docx4j-ImportXHTML-6.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/docx4j-ImportXHTML/6.0.0/docx4j-ImportXHTML-6.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.docx4j:xhtmlrenderer:3.0.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/xhtmlrenderer/3.0.0/xhtmlrenderer-3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/xhtmlrenderer/3.0.0/xhtmlrenderer-3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/docx4j/xhtmlrenderer/3.0.0/xhtmlrenderer-3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.gagravarr:vorbis-java-core:0.8">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/gagravarr/vorbis-java-core/0.8/vorbis-java-core-0.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/gagravarr/vorbis-java-core/0.8/vorbis-java-core-0.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/gagravarr/vorbis-java-core/0.8/vorbis-java-core-0.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.gagravarr:vorbis-java-tika:0.8">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/gagravarr/vorbis-java-tika/0.8/vorbis-java-tika-0.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/gagravarr/vorbis-java-tika/0.8/vorbis-java-tika-0.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/gagravarr/vorbis-java-tika/0.8/vorbis-java-tika-0.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.itadaki:bzip2:0.9.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/itadaki/bzip2/0.9.1/bzip2-0.9.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/itadaki/bzip2/0.9.1/bzip2-0.9.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/itadaki/bzip2/0.9.1/bzip2-0.9.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.jdom:jdom2:2.0.6">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom2/2.0.6/jdom2-2.0.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom2/2.0.6/jdom2-2.0.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.json:json:20140107">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20140107/json-20140107.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20140107/json-20140107-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20140107/json-20140107-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.mybatis:mybatis-spring:2.0.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/2.0.2/mybatis-spring-2.0.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/2.0.2/mybatis-spring-2.0.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/2.0.2/mybatis-spring-2.0.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.opengis:geoapi:3.0.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/opengis/geoapi/3.0.0/geoapi-3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/opengis/geoapi/3.0.0/geoapi-3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/opengis/geoapi/3.0.0/geoapi-3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.plutext:jaxb-svg11:1.0.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/plutext/jaxb-svg11/1.0.2/jaxb-svg11-1.0.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/plutext/jaxb-svg11/1.0.2/jaxb-svg11-1.0.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/plutext/jaxb-svg11/1.0.2/jaxb-svg11-1.0.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.tukaani:xz:1.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/tukaani/xz/1.5/xz-1.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/tukaani/xz/1.5/xz-1.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/tukaani/xz/1.5/xz-1.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.typroject:tyboot-component-cache:1.1.20Ty-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/typroject/tyboot-component-cache/1.1.20Ty-SNAPSHOT/tyboot-component-cache-1.1.20Ty-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/typroject/tyboot-component-cache/1.1.20Ty-SNAPSHOT/tyboot-component-cache-1.1.20Ty-SNAPSHOT-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/typroject/tyboot-component-cache/1.1.20Ty-SNAPSHOT/tyboot-component-cache-1.1.20Ty-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: regexp:regexp:1.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/regexp/regexp/1.3/regexp-1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/regexp/regexp/1.3/regexp-1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/regexp/regexp/1.3/regexp-1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: xalan:serializer:2.7.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/xalan/serializer/2.7.2/serializer-2.7.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/xalan/serializer/2.7.2/serializer-2.7.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/xalan/serializer/2.7.2/serializer-2.7.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: xalan:xalan:2.7.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/xalan/xalan/2.7.2/xalan-2.7.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/xalan/xalan/2.7.2/xalan-2.7.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/xalan/xalan/2.7.2/xalan-2.7.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/amos-boot-biz-common/amos-boot-biz-common.iml" filepath="$PROJECT_DIR$/amos-boot-biz-common/amos-boot-biz-common.iml" />
<module fileurl="file://$PROJECT_DIR$/amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/amos-boot-module-jcs-api.iml" filepath="$PROJECT_DIR$/amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/amos-boot-module-jcs-api.iml" />
<module fileurl="file://$PROJECT_DIR$/amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/amos-boot-module-jcs-biz.iml" filepath="$PROJECT_DIR$/amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/amos-boot-module-jcs-biz.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="7a05731a-6025-4af2-9526-300ce965342a" />
</component>
</module>
\ No newline at end of file
...@@ -53,6 +53,11 @@ public class RedisKey { ...@@ -53,6 +53,11 @@ public class RedisKey {
*/ */
public static final String EQUIP_INDEX_ADDRESS_KEY = "equip_index_address_key"; public static final String EQUIP_INDEX_ADDRESS_KEY = "equip_index_address_key";
/**
* 韶山换流站指标Key
*/
public static final String EQUIP_INDEX_ADDRESS_KEY_STATION = "equip_index_address_key_station";
/** 驼峰转下划线(简单写法,效率低于 ) */ /** 驼峰转下划线(简单写法,效率低于 ) */
public static String humpToLine(String str) { public static String humpToLine(String str) {
return str.replaceAll("[A-Z]", "_$0").toLowerCase(); return str.replaceAll("[A-Z]", "_$0").toLowerCase();
......
...@@ -91,6 +91,9 @@ ...@@ -91,6 +91,9 @@
#{item} #{item}
</foreach> </foreach>
</if> </if>
<if test="map.personStatus != null and map.personStatus != ''">
AND u.person_status = #{map.personStatus}
</if>
GROUP BY GROUP BY
u.sequence_nbr , u.sequence_nbr ,
u.biz_org_name , u.biz_org_name ,
......
...@@ -241,4 +241,8 @@ public class EquipmentSpecificAlarmLog extends BaseEntity { ...@@ -241,4 +241,8 @@ public class EquipmentSpecificAlarmLog extends BaseEntity {
@ApiModelProperty(value = "站编码") @ApiModelProperty(value = "站编码")
@TableField(value = "station_code") @TableField(value = "station_code")
private String stationCode; private String stationCode;
@ApiModelProperty(value = "批量确认")
@TableField(exist = false)
private String handleConfirm;
} }
...@@ -75,6 +75,9 @@ public class EquipmentIndexVO { ...@@ -75,6 +75,9 @@ public class EquipmentIndexVO {
@ApiModelProperty(value = "信号的索引键key,用于唯一索引信号") @ApiModelProperty(value = "信号的索引键key,用于唯一索引信号")
private String indexAddress; private String indexAddress;
@ApiModelProperty(value = "信号的索引键pointId,用于唯一索引信号")
private String eventAddress;
@ApiModelProperty(value = "测点类型,analog/state") @ApiModelProperty(value = "测点类型,analog/state")
private String dataType; private String dataType;
......
package com.yeejoin.equipmanage.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author keyong
* @title: HandleBatchConfirmEnum
* <pre>
* @description: TODO
* </pre>
* @date 2023/9/12 10:59
*/
@AllArgsConstructor
@Getter
public enum HandleBatchConfirmEnum {
SINGLE("isSingle", "当前一个设备"), ALL("isAll", "全部设备");
private String code;
private String name;
}
package com.yeejoin.equipmanage.common.enums;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
public interface MqttConstant {
String TRUE = "true";
String FALSE = "false";
String STATE = "state";
String DIS_CREATE = "discreate";
String ONE_1 = "1";
String ONE_1_0 = "1.0";
}
...@@ -123,6 +123,10 @@ public class CommonPageInfoParam extends CommonPageable { ...@@ -123,6 +123,10 @@ public class CommonPageInfoParam extends CommonPageable {
* 所属建筑ids * 所属建筑ids
*/ */
private List<String> buildIds; private List<String> buildIds;
/**
* 所属建筑名称
*/
private String buildingName;
private String status; private String status;
...@@ -405,4 +409,12 @@ public class CommonPageInfoParam extends CommonPageable { ...@@ -405,4 +409,12 @@ public class CommonPageInfoParam extends CommonPageable {
public void setBuildIds(List<String> buildIds) { public void setBuildIds(List<String> buildIds) {
this.buildIds = buildIds; this.buildIds = buildIds;
} }
public String getBuildingName() {
return buildingName;
}
public void setBuildingName(String buildingName) {
this.buildingName = buildingName;
}
} }
...@@ -76,6 +76,8 @@ public class CommonPageParamUtil { ...@@ -76,6 +76,8 @@ public class CommonPageParamUtil {
param.setIndexTypeCode(toString(queryRequests.get(i).getValue())); param.setIndexTypeCode(toString(queryRequests.get(i).getValue()));
} else if ("alarmLogId".equals(name)) { } else if ("alarmLogId".equals(name)) {
param.setAlarmLogId(toLong(queryRequests.get(i).getValue())); param.setAlarmLogId(toLong(queryRequests.get(i).getValue()));
} else if ("buildingName".equals(name)) {
param.setBuildingName(toString(queryRequests.get(i).getValue()));
} }
} }
if(commonPageable !=null){ if(commonPageable !=null){
......
package com.yeejoin.equipmanage.common.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class SShanMessage {
private String eventTextL1;
private String pointId;
private String time;
private String deviceId;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
/**
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class SShanStationMessage {
private String timestamp;
private List<SShanMessage> warns;
}
package com.yeejoin.equipmanage.common.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* 对接苏州,绍兴换流站Kafka数据
* @author LiuLin
* @date 2023年08月02日 11:02
*/
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class StationMessage {
private String dataType;
private String value;
private String timeStamp;
private String quality;
private String scadaId;
private String key;
private String disCreate;
private String name;
}
...@@ -8,9 +8,6 @@ import com.yeejoin.amos.boot.biz.common.bo.ReginParams; ...@@ -8,9 +8,6 @@ import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.constants.CommonConstant; import com.yeejoin.amos.boot.biz.common.constants.CommonConstant;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.interceptors.PermissionInterceptorContext;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.core.framework.PersonIdentify; import com.yeejoin.amos.boot.module.common.api.core.framework.PersonIdentify;
import com.yeejoin.amos.boot.module.common.api.dto.*; import com.yeejoin.amos.boot.module.common.api.dto.*;
...@@ -26,7 +23,6 @@ import io.swagger.annotations.Api; ...@@ -26,7 +23,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -43,7 +39,6 @@ import java.util.Collection; ...@@ -43,7 +39,6 @@ import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author fengwang * @author fengwang
......
...@@ -33,6 +33,7 @@ public class EquipmentIndexCacheRunner implements CommandLineRunner { ...@@ -33,6 +33,7 @@ public class EquipmentIndexCacheRunner implements CommandLineRunner {
log.info(">>服务启动执行,执行预加载数据等操作"); log.info(">>服务启动执行,执行预加载数据等操作");
redisUtils.del(RedisKey.EQUIP_INDEX_ADDRESS); redisUtils.del(RedisKey.EQUIP_INDEX_ADDRESS);
redisUtils.del(RedisKey.EQUIP_INDEX_ADDRESS_KEY); redisUtils.del(RedisKey.EQUIP_INDEX_ADDRESS_KEY);
redisUtils.del(RedisKey.EQUIP_INDEX_ADDRESS_KEY_STATION);
List<EquipmentIndexVO> equipSpecificIndexList = equipmentSpecificIndexMapper.getEquipSpecificIndexList(null); List<EquipmentIndexVO> equipSpecificIndexList = equipmentSpecificIndexMapper.getEquipSpecificIndexList(null);
Map<String, Object> equipmentIndexVOMap = equipSpecificIndexList.stream() Map<String, Object> equipmentIndexVOMap = equipSpecificIndexList.stream()
.filter(v -> v.getGatewayId() != null) .filter(v -> v.getGatewayId() != null)
...@@ -40,8 +41,12 @@ public class EquipmentIndexCacheRunner implements CommandLineRunner { ...@@ -40,8 +41,12 @@ public class EquipmentIndexCacheRunner implements CommandLineRunner {
Map<String, Object> equipmentIndexKeyMap = equipSpecificIndexList.stream() Map<String, Object> equipmentIndexKeyMap = equipSpecificIndexList.stream()
.filter(v -> v.getIndexAddress() != null && v.getGatewayId() == null) .filter(v -> v.getIndexAddress() != null && v.getGatewayId() == null)
.collect(Collectors.toMap(EquipmentIndexVO::getIndexAddress, Function.identity(),(v1, v2) -> v1)); .collect(Collectors.toMap(EquipmentIndexVO::getIndexAddress, Function.identity(),(v1, v2) -> v1));
Map<String, Object> equipmentIndexEventMap = equipSpecificIndexList.stream()
.filter(v -> v.getEventAddress() != null)
.collect(Collectors.toMap(EquipmentIndexVO::getEventAddress, Function.identity(),(v1, v2) -> v1));
redisUtils.hmset(RedisKey.EQUIP_INDEX_ADDRESS, equipmentIndexVOMap); redisUtils.hmset(RedisKey.EQUIP_INDEX_ADDRESS, equipmentIndexVOMap);
redisUtils.hmset(RedisKey.EQUIP_INDEX_ADDRESS_KEY, equipmentIndexKeyMap); redisUtils.hmset(RedisKey.EQUIP_INDEX_ADDRESS_KEY, equipmentIndexKeyMap);
redisUtils.hmset(RedisKey.EQUIP_INDEX_ADDRESS_KEY_STATION, equipmentIndexEventMap);
} }
} }
\ No newline at end of file
...@@ -135,6 +135,7 @@ public class EquipmentIotMqttReceiveConfig { ...@@ -135,6 +135,7 @@ public class EquipmentIotMqttReceiveConfig {
list.add("+/+/perspective"); // 添加交换站事件监听 list.add("+/+/perspective"); // 添加交换站事件监听
list.add(riskMsgCenterEquipTopic); list.add(riskMsgCenterEquipTopic);
list.add(riskMsgCenterPatrolTopic); list.add(riskMsgCenterPatrolTopic);
list.add("+/+/shaoshan"); // 添加换流站韶山监听事件
String[] arr = list.toArray(new String[list.size()]); String[] arr = list.toArray(new String[list.size()]);
adapter = new MqttPahoMessageDrivenChannelAdapter(clientId + "_inbound", mqttPahoClientFactory(), arr); adapter = new MqttPahoMessageDrivenChannelAdapter(clientId + "_inbound", mqttPahoClientFactory(), arr);
adapter.setCompletionTimeout(completionTimeout); adapter.setCompletionTimeout(completionTimeout);
...@@ -158,8 +159,10 @@ public class EquipmentIotMqttReceiveConfig { ...@@ -158,8 +159,10 @@ public class EquipmentIotMqttReceiveConfig {
mqttReceiveService.handlerMqttIncrementMessage(topic, msg); mqttReceiveService.handlerMqttIncrementMessage(topic, msg);
} else if (dataType.equals("event") && StringUtil.isNotEmpty(msg)) { } else if (dataType.equals("event") && StringUtil.isNotEmpty(msg)) {
mqttEventReceiveService.handlerMqttIncrementMessage(topic, msg); mqttEventReceiveService.handlerMqttIncrementMessage(topic, msg);
} else if (dataType.equals("transmit") && StringUtil.isNotEmpty(msg)) { }else if (dataType.equals("transmit") && StringUtil.isNotEmpty(msg)){
mqttReceiveService.handlerMqttRomaMessage(topic, msg); mqttReceiveService.handlerMqttRomaMessage(topic,msg);
}else if (dataType.equals("shaoshan") && StringUtil.isNotEmpty(msg)){
mqttReceiveService.handlerMqttStationMessage(topic,msg);
} }
} }
}; };
......
...@@ -25,10 +25,8 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation; ...@@ -25,10 +25,8 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.stream.Collectors;
import java.util.List;
import java.util.Map;
/** /**
* @author keyong * @author keyong
...@@ -98,6 +96,7 @@ public class EquipmentAlarmController extends AbstractBaseController { ...@@ -98,6 +96,7 @@ public class EquipmentAlarmController extends AbstractBaseController {
@RequestParam(value = "id", required = false) String id, @RequestParam(value = "id", required = false) String id,
@RequestParam(value = "cleanStatus", required = false) String cleanStatus, @RequestParam(value = "cleanStatus", required = false) String cleanStatus,
@RequestParam(value = "isRemoveShield", required = false) String isRemoveShield, @RequestParam(value = "isRemoveShield", required = false) String isRemoveShield,
@RequestParam(value = "buildingName", required = false) String buildingName,
CommonPageable commonPageable) { CommonPageable commonPageable) {
if (commonPageable.getPageNumber() == 0) { if (commonPageable.getPageNumber() == 0) {
commonPageable.setPageNumber(1); commonPageable.setPageNumber(1);
...@@ -106,11 +105,17 @@ public class EquipmentAlarmController extends AbstractBaseController { ...@@ -106,11 +105,17 @@ public class EquipmentAlarmController extends AbstractBaseController {
List<CommonRequest> queryRequests = new ArrayList<>(); List<CommonRequest> queryRequests = new ArrayList<>();
CommonRequest request = new CommonRequest(); CommonRequest request = new CommonRequest();
request.setName("beginDate"); request.setName("beginDate");
request.setValue(StringUtil.isNotEmpty(beginDate) ? StringUtils.trimToNull(beginDate).substring(0, 10) + " 00:00:00" : null); request.setValue(beginDate);
if (StringUtil.isNotEmpty(beginDate) && StringUtils.trimToNull(beginDate).length() == 10) {
request.setValue(StringUtils.trimToNull(beginDate).substring(0, 10) + " 00:00:00");
}
queryRequests.add(request); queryRequests.add(request);
CommonRequest request1 = new CommonRequest(); CommonRequest request1 = new CommonRequest();
request1.setName("endDate"); request1.setName("endDate");
request1.setValue(StringUtil.isNotEmpty(endDate) ? StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null); request1.setValue(endDate);
if (StringUtil.isNotEmpty(endDate) && StringUtils.trimToNull(endDate).length() == 10) {
request1.setValue(StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59");
}
queryRequests.add(request1); queryRequests.add(request1);
CommonRequest request2 = new CommonRequest(); CommonRequest request2 = new CommonRequest();
request2.setName("warehouseStructureName"); request2.setName("warehouseStructureName");
...@@ -142,7 +147,11 @@ public class EquipmentAlarmController extends AbstractBaseController { ...@@ -142,7 +147,11 @@ public class EquipmentAlarmController extends AbstractBaseController {
queryRequests.add(request8); queryRequests.add(request8);
CommonRequest request9 = new CommonRequest(); CommonRequest request9 = new CommonRequest();
request9.setName("buildIds"); request9.setName("buildIds");
request9.setValue(ObjectUtils.isEmpty(buildIds) ? null : buildIds); buildIds = ObjectUtils.isEmpty(buildIds) ? null : buildIds.stream()
.map(v -> v.replace("[", "").replace("]", ""))
.filter(v -> !Objects.equals(v, "null"))
.collect(Collectors.toList());
request9.setValue(buildIds);
queryRequests.add(request9); queryRequests.add(request9);
CommonRequest request10 = new CommonRequest(); CommonRequest request10 = new CommonRequest();
request10.setName("id"); request10.setName("id");
...@@ -160,6 +169,10 @@ public class EquipmentAlarmController extends AbstractBaseController { ...@@ -160,6 +169,10 @@ public class EquipmentAlarmController extends AbstractBaseController {
request14.setName("systemCode"); request14.setName("systemCode");
request14.setValue(StringUtil.isNotEmpty(systemCode) ? StringUtils.trimToNull(systemCode) : null); request14.setValue(StringUtil.isNotEmpty(systemCode) ? StringUtils.trimToNull(systemCode) : null);
queryRequests.add(request14); queryRequests.add(request14);
CommonRequest request15 = new CommonRequest();
request15.setName("buildingName");
request15.setValue(StringUtil.isNotEmpty(buildingName) ? StringUtils.trimToNull(buildingName) : null);
queryRequests.add(request15);
if (equioEnabled) { if (equioEnabled) {
if (!ValidationUtil.isEmpty(reginParams.getPersonIdentity())) { if (!ValidationUtil.isEmpty(reginParams.getPersonIdentity())) {
CommonRequest request13 = new CommonRequest(); CommonRequest request13 = new CommonRequest();
......
...@@ -114,5 +114,5 @@ public interface EquipmentSpecificIndexMapper extends BaseMapper<EquipmentSpecif ...@@ -114,5 +114,5 @@ public interface EquipmentSpecificIndexMapper extends BaseMapper<EquipmentSpecif
List<EquipmentSpecificIndex> getEquipIndexInIndex(@Param("list") List<String> listIndex); List<EquipmentSpecificIndex> getEquipIndexInIndex(@Param("list") List<String> listIndex);
EquipmentSpecificIndex getEquipmentSpeIndexByIndexAddress(String indexAddress,String gatewayId); EquipmentSpecificIndex getEquipmentSpeIndexByAddress(String indexAddress, String eventAddress, String gatewayId);
} }
...@@ -40,5 +40,5 @@ public interface IEquipmentSpecificIndexService extends IService<EquipmentSpecif ...@@ -40,5 +40,5 @@ public interface IEquipmentSpecificIndexService extends IService<EquipmentSpecif
* @param indexAddress indexAddress * @param indexAddress indexAddress
* @return EquipmentSpecificIndex * @return EquipmentSpecificIndex
*/ */
EquipmentSpecificIndex getEquipmentSpeIndexByIndexAddress(String indexAddress,String gatewayId); EquipmentSpecificIndex getEquipmentSpeIndexByAddress(String indexAddress, String eventAddress, String gatewayId);
} }
...@@ -34,4 +34,6 @@ public interface MqttReceiveService { ...@@ -34,4 +34,6 @@ public interface MqttReceiveService {
* @param message * @param message
*/ */
void handleDataToRiskModel(String topic, String message); void handleDataToRiskModel(String topic, String message);
void handlerMqttStationMessage(String topic, String message);
} }
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.amos.boot.module.jcs.api.dto.IotSystemAlarmRo; import com.yeejoin.amos.boot.module.jcs.api.dto.IotSystemAlarmRo;
...@@ -195,12 +196,15 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -195,12 +196,15 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
ent.setConfirmUserName(userModel.getRealName()); ent.setConfirmUserName(userModel.getRealName());
EquipmentSpecificAlarmLog alarmLog = equipmentSpecificAlarmLogService.getById(ent.getId()); EquipmentSpecificAlarmLog alarmLog = equipmentSpecificAlarmLogService.getById(ent.getId());
List<EquipmentSpecificAlarmLog> list = null; List<EquipmentSpecificAlarmLog> list = null;
String handleConfirm = ent.getHandleConfirm();
int isBatch = 0; int isBatch = 0;
if (!ObjectUtils.isEmpty(alarmLog)) { if (!ObjectUtils.isEmpty(alarmLog)) {
Long equipmentSpecificAlarmId = alarmLog.getEquipmentSpecificAlarmId(); Long equipmentSpecificAlarmId = alarmLog.getEquipmentSpecificAlarmId();
ent.setEquipmentSpecificAlarmId(equipmentSpecificAlarmId); ent.setEquipmentSpecificAlarmId(equipmentSpecificAlarmId);
ent.setEquipmentSpecificId(alarmLog.getEquipmentSpecificId()); ent.setEquipmentSpecificId(alarmLog.getEquipmentSpecificId());
ent.setEquipmentSpecificIndexKey(alarmLog.getEquipmentSpecificIndexKey()); ent.setEquipmentSpecificIndexKey(alarmLog.getEquipmentSpecificIndexKey());
ent.setEquipmentSpecificIndexName(alarmLog.getEquipmentSpecificIndexName());
Equipment equipment = equipmentSpecificMapper.getEquipmentBySpecificId(alarmLog.getEquipmentSpecificId()); Equipment equipment = equipmentSpecificMapper.getEquipmentBySpecificId(alarmLog.getEquipmentSpecificId());
if (!StringUtil.isNotEmpty(equipment.getCleanType())) { if (!StringUtil.isNotEmpty(equipment.getCleanType())) {
// 若此装备未定义消除策略,默认设置为复位信号自动消除 // 若此装备未定义消除策略,默认设置为复位信号自动消除
...@@ -243,7 +247,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -243,7 +247,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
// 警情处理确认后消除更新value 为false,否则灯还在闪 // 警情处理确认后消除更新value 为false,否则灯还在闪
LambdaUpdateWrapper<EquipmentSpecificIndex> updateWrapper =new LambdaUpdateWrapper<EquipmentSpecificIndex>(). LambdaUpdateWrapper<EquipmentSpecificIndex> updateWrapper =new LambdaUpdateWrapper<EquipmentSpecificIndex>().
set(EquipmentSpecificIndex::getValue,"false"). set(EquipmentSpecificIndex::getValue,"false").
set(EquipmentSpecificIndex::getUpdateDate,new Date()). set(EquipmentSpecificIndex::getUpdateDate, new Date()).
eq(EquipmentSpecificIndex::getEquipmentSpecificId,alarm.getEquipmentSpecificId()). eq(EquipmentSpecificIndex::getEquipmentSpecificId,alarm.getEquipmentSpecificId()).
eq(EquipmentSpecificIndex::getEquipmentIndexKey,alarm.getEquipmentSpecificIndexKey()); eq(EquipmentSpecificIndex::getEquipmentIndexKey,alarm.getEquipmentSpecificIndexKey());
iEquipmentSpecificIndexSerivce.update(updateWrapper); iEquipmentSpecificIndexSerivce.update(updateWrapper);
...@@ -253,12 +257,12 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -253,12 +257,12 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
set(EquipmentSpecific::getRealtimeIotIndexUpdateDate,new Date()). set(EquipmentSpecific::getRealtimeIotIndexUpdateDate,new Date()).
eq(EquipmentSpecific::getId,alarm.getEquipmentSpecificId()); eq(EquipmentSpecific::getId,alarm.getEquipmentSpecificId());
equipmentSpecificSerivce.update(wrapper); equipmentSpecificSerivce.update(wrapper);
MqttReceiveServiceImpl.upAlarmLogStatus(alarmLog.getIotCode(), alarmLog.getEquipmentSpecificIndexKey(), null, equipmentSpecificAlarmLogService, true); MqttReceiveServiceImpl.upAlarmLogStatus(alarmLog.getIotCode(), alarmLog.getEquipmentSpecificIndexKey(), null, equipmentSpecificAlarmLogService, true, "");
} }
// 如果是批量确警,先查询,再确警,用于批量消息推送 // 如果是批量确警,先查询,再确警,用于批量消息推送
isBatch = ent.getIsBatch(); isBatch = ent.getIsBatch();
if (isBatch == 1) { if (isBatch == 1) {
list = equipmentSpecificAlarmLogService.getIsConfirmByAlarmId(alarmLog.getEquipmentSpecificId(),alarmLog.getEquipmentSpecificIndexKey(), "0"); list = equipmentSpecificAlarmLogService.getIsConfirmByAlarmId(alarmLog.getEquipmentSpecificId(), alarmLog.getEquipmentSpecificIndexKey(), "0");
} }
} }
if (ent.getType() != null) { if (ent.getType() != null) {
...@@ -279,14 +283,86 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -279,14 +283,86 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
ent.setResolveResult(dateString + " " + userModel.getRealName() + " 进行警情确认处理。"); ent.setResolveResult(dateString + " " + userModel.getRealName() + " 进行警情确认处理。");
} }
if (ent.getIsBatch() == 0){ if (ent.getIsBatch() == 0){
if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.SINGLE.getCode().equalsIgnoreCase(handleConfirm)) {
QueryWrapper<EquipmentSpecificAlarmLog> wrapper = new QueryWrapper<>();
wrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).isNull("confirm_date");
List<EquipmentSpecificAlarmLog> logs = equipmentSpecificAlarmLogMapper.selectList(wrapper);
if (0 < logs.size()) {
for (EquipmentSpecificAlarmLog x : logs) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
}
equipmentSpecificAlarmLogService.updateBatchById(logs);
}
} else if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.ALL.getCode().equalsIgnoreCase(handleConfirm)) {
QueryWrapper<EquipmentSpecificAlarmLog> logQueryWrapper = new QueryWrapper<>();
logQueryWrapper.isNull("confirm_date");
List<EquipmentSpecificAlarmLog> logList = equipmentSpecificAlarmLogMapper.selectList(logQueryWrapper);
if (0 < logList.size()) {
for (EquipmentSpecificAlarmLog x : logList) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
}
equipmentSpecificAlarmLogService.updateBatchById(logList);
}
} else {
i = equipmentSpecificAlarmLogMapper.updateById(ent); i = equipmentSpecificAlarmLogMapper.updateById(ent);
}
} else {
if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.SINGLE.getCode().equalsIgnoreCase(handleConfirm)) {
QueryWrapper<EquipmentSpecificAlarmLog> wrapper = new QueryWrapper<>();
wrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).isNull("confirm_date");
List<EquipmentSpecificAlarmLog> logs = equipmentSpecificAlarmLogMapper.selectList(wrapper);
if (0 < logs.size()) {
for (EquipmentSpecificAlarmLog x : logs) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
}
equipmentSpecificAlarmLogService.updateBatchById(logs);
}
} else if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.ALL.getCode().equalsIgnoreCase(handleConfirm)) {
QueryWrapper<EquipmentSpecificAlarmLog> logQueryWrapper = new QueryWrapper<>();
logQueryWrapper.isNull("confirm_date");
List<EquipmentSpecificAlarmLog> logList = equipmentSpecificAlarmLogMapper.selectList(logQueryWrapper);
if (0 < logList.size()) {
for (EquipmentSpecificAlarmLog x : logList) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
}
equipmentSpecificAlarmLogService.updateBatchById(logList);
}
} else { } else {
LambdaUpdateWrapper<EquipmentSpecificAlarmLog> updateWrapper = new LambdaUpdateWrapper<EquipmentSpecificAlarmLog>(). LambdaUpdateWrapper<EquipmentSpecificAlarmLog> updateWrapper = new LambdaUpdateWrapper<EquipmentSpecificAlarmLog>().
eq(EquipmentSpecificAlarmLog::getEquipmentSpecificId,ent.getEquipmentSpecificId()). eq(EquipmentSpecificAlarmLog::getEquipmentSpecificId, ent.getEquipmentSpecificId()).
eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey,ent.getEquipmentSpecificIndexKey()) eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey, ent.getEquipmentSpecificIndexKey())
.isNull(EquipmentSpecificAlarmLog::getConfirmDate); .isNull(EquipmentSpecificAlarmLog::getConfirmDate);
i = equipmentSpecificAlarmLogMapper.update(ent, updateWrapper); i = equipmentSpecificAlarmLogMapper.update(ent, updateWrapper);
} }
}
//int i = confirmAlarmMapper.confirmAlam(ent); //int i = confirmAlarmMapper.confirmAlam(ent);
......
...@@ -30,7 +30,7 @@ public class EquipmentSpecificIndexServiceImpl extends ServiceImpl<EquipmentSpec ...@@ -30,7 +30,7 @@ public class EquipmentSpecificIndexServiceImpl extends ServiceImpl<EquipmentSpec
} }
@Override @Override
public EquipmentSpecificIndex getEquipmentSpeIndexByIndexAddress(String indexAddress,String gatewayId) { public EquipmentSpecificIndex getEquipmentSpeIndexByAddress(String indexAddress,String eventAddress, String gatewayId) {
return this.baseMapper.getEquipmentSpeIndexByIndexAddress(indexAddress,gatewayId); return this.baseMapper.getEquipmentSpeIndexByAddress(indexAddress, eventAddress, gatewayId);
} }
} }
...@@ -57,6 +57,8 @@ import java.text.SimpleDateFormat; ...@@ -57,6 +57,8 @@ import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.yeejoin.equipmanage.common.enums.MqttConstant.*;
/** /**
* @author keyong * @author keyong
...@@ -70,47 +72,58 @@ import java.util.stream.Collectors; ...@@ -70,47 +72,58 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
public class MqttReceiveServiceImpl implements MqttReceiveService { public class MqttReceiveServiceImpl implements MqttReceiveService {
private static String PUMP_JOB_GROUP_NAME = "EQUIP_PUMP_JOB_GROUP_NAME"; /**
private static String PUMP_TRIGGER_NAME = "EQUIP_PUMP_TRIGGER_NAME"; * 泡沫罐KEY
private static String PUMP_TRIGGER_GROUP_NAME = "EQUIP_PUMP_TRIGGER_GROUP_NAME"; */
private final static String CAFS_FoamTank_FoamTankLevel = "CAFS_FoamTank_FoamTankLevel";
private static Map<String, TemperatureAlarmDto> temperatureMap = new HashMap<>(); /**
* 泡沫罐KEY
*/
private final static String FHS_PipePressureDetector_PipePressure = "FHS_PipePressureDetector_PipePressure";
/**
* 水池信息
*/
private final static String FHS_FirePoolDevice_WaterLevel = "FHS_FirePoolDevice_WaterLevel";
/**
* 水池信息
*/
private final static String FHS_WirelessliquidDetector_WaterLevel = "FHS_WirelessliquidDetector_WaterLevel";
/**
* 水箱液位
*/
private final static String CAFS_WaterTank_WaterTankLevel = "CAFS_WaterTank_WaterTankLevel";
private static final String PUMP_JOB_GROUP_NAME = "EQUIP_PUMP_JOB_GROUP_NAME";
private static final String PUMP_TRIGGER_NAME = "EQUIP_PUMP_TRIGGER_NAME";
private static final String PUMP_TRIGGER_GROUP_NAME = "EQUIP_PUMP_TRIGGER_GROUP_NAME";
private static final Map<String, TemperatureAlarmDto> temperatureMap = new HashMap<>();
static IEquipmentSpecificIndexService equipmentSpecificIndexService; static IEquipmentSpecificIndexService equipmentSpecificIndexService;
static EquipmentSpecificMapper equipmentSpecificMapper;
static IFireFightingSystemService fireFightingSystemService;
static MqttSendGateway mqttSendGateway;
private static RemoteSecurityService remoteSecurityService;
private static String canvasTopic;
private static Boolean jcsSwitch;
private static Boolean bool = Boolean.FALSE;
@Autowired @Autowired
public void setEquipmentSpecificIndexService(IEquipmentSpecificIndexService equipmentSpecificIndexService) { protected EmqKeeper emqKeeper;
MqttReceiveServiceImpl.equipmentSpecificIndexService = equipmentSpecificIndexService;
}
@Autowired @Autowired
ICarPropertyService carPropertyService; ICarPropertyService carPropertyService;
@Autowired @Autowired
IEquipmentSpecificAlarmService equipmentSpecificAlarmService; IEquipmentSpecificAlarmService equipmentSpecificAlarmService;
@Autowired @Autowired
IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService; IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService;
@Autowired @Autowired
EquipmentSpecificAlarmMapper equipmentSpecificAlarmMapper; EquipmentSpecificAlarmMapper equipmentSpecificAlarmMapper;
@Autowired @Autowired
EquipQrcodeRecordMapper equipQrcodeRecordMapper; EquipQrcodeRecordMapper equipQrcodeRecordMapper;
@Autowired @Autowired
EquipmentSpecificAlarmLogMapper equipmentSpecificAlarmLogMapper; EquipmentSpecificAlarmLogMapper equipmentSpecificAlarmLogMapper;
@Autowired @Autowired
@Lazy @Lazy
IEquipmentIndexService equipmentIndexService; IEquipmentIndexService equipmentIndexService;
@Autowired @Autowired
EquipmentSpecificIndexMapper equipmentSpecificIndexMapper; EquipmentSpecificIndexMapper equipmentSpecificIndexMapper;
@Autowired
private IotFeign iotFeign;
@Autowired @Autowired
MarqueeDataMapper marqueeDataMapper; MarqueeDataMapper marqueeDataMapper;
//消防泵 //消防泵
...@@ -119,99 +132,34 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -119,99 +132,34 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
//消防炮 //消防炮
@Value("${equipment.plan.monitor}") @Value("${equipment.plan.monitor}")
String monitorCodes; String monitorCodes;
@Autowired @Autowired
private InfluxDbConnection influxDbConnection; private InfluxDbConnection influxDbConnection;
@Autowired @Autowired
private RuleTrigger ruleTrigger; private RuleTrigger ruleTrigger;
/**
* 泡沫罐KEY
*/
private final static String CAFS_FoamTank_FoamTankLevel = "CAFS_FoamTank_FoamTankLevel";
/**
* 泡沫罐KEY
*/
private final static String FHS_PipePressureDetector_PipePressure = "FHS_PipePressureDetector_PipePressure";
/**
* 水池信息
*/
private final static String FHS_FirePoolDevice_WaterLevel = "FHS_FirePoolDevice_WaterLevel";
/**
* 水池信息
*/
private final static String FHS_WirelessliquidDetector_WaterLevel = "FHS_WirelessliquidDetector_WaterLevel";
/**
* 水箱液位
*/
private final static String CAFS_WaterTank_WaterTankLevel = "CAFS_WaterTank_WaterTankLevel";
static EquipmentSpecificMapper equipmentSpecificMapper;
@Autowired @Autowired
public void setEquipmentSpecificMapper(EquipmentSpecificMapper equipmentSpecificMapper) { CarMapper carMapper;
MqttReceiveServiceImpl.equipmentSpecificMapper = equipmentSpecificMapper;
}
@Autowired @Autowired
FireFightingSystemMapper FireFightingSystemMapper; FireFightingSystemMapper fireFightingSystemMapper;
static IFireFightingSystemService fireFightingSystemService;
@Autowired @Autowired
public void setFireFightingSystemService(IFireFightingSystemService fireFightingSystemService) { IESeqService eSeqService;
MqttReceiveServiceImpl.fireFightingSystemService = fireFightingSystemService;
}
static MqttSendGateway mqttSendGateway;
@Autowired @Autowired
public void setMqttSendGateway(MqttSendGateway mqttSendGateway) { private IotFeign iotFeign;
MqttReceiveServiceImpl.mqttSendGateway = mqttSendGateway;
}
@Autowired @Autowired
private RedisUtils redisUtils; private RedisUtils redisUtils;
@Autowired
CarMapper carMapper;
@Autowired @Autowired
private ISyncDataService syncDataService; private ISyncDataService syncDataService;
@Autowired @Autowired
private IEquipmentAlarmReportDayService iEquipmentAlarmReportDayService; private IEquipmentAlarmReportDayService iEquipmentAlarmReportDayService;
@Autowired @Autowired
private IEquipmentSpecificSerivce iEquipmentSpecificSerivce; private IEquipmentSpecificSerivce iEquipmentSpecificSerivce;
@Autowired
FireFightingSystemMapper fireFightingSystemMapper;
@Autowired @Autowired
private SystemctlFeign systemctlFeign; private SystemctlFeign systemctlFeign;
private static RemoteSecurityService remoteSecurityService;
@Autowired
public void setRemoteSecurityService(RemoteSecurityService remoteSecurityService) {
MqttReceiveServiceImpl.remoteSecurityService = remoteSecurityService;
}
@Autowired @Autowired
private TopographyService topographyService; private TopographyService topographyService;
@Autowired @Autowired
IESeqService eSeqService;
@Autowired
private IEquipmentService equipmentService; private IEquipmentService equipmentService;
@Autowired @Autowired
private IPressurePumpService pressurePumpService; private IPressurePumpService pressurePumpService;
...@@ -223,16 +171,12 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -223,16 +171,12 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
@Value("${equipManage.name}") @Value("${equipManage.name}")
private String serverName; private String serverName;
@Value("${state.code:code}") @Value("${state.code:code}")
private String stationCode; private String stationCode;
@Value("${system.type}") @Value("${system.type}")
private String system; private String system;
@Value("${state.name:name}") @Value("${state.name:name}")
private String stationName; private String stationName;
@Value("${mqtt.vehicle.topic}") @Value("${mqtt.vehicle.topic}")
private String carTopic; private String carTopic;
...@@ -245,135 +189,509 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -245,135 +189,509 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
@Value("${equip.center.risk.topic}") @Value("${equip.center.risk.topic}")
private String riskTopicCenter; private String riskTopicCenter;
private static String canvasTopic;
@Value("${equip.point.equipmentdata.topic}")
public void setCanvasTopic(String canvasTopic) {
MqttReceiveServiceImpl.canvasTopic = canvasTopic;
}
@Value("${equip.index.topic}") @Value("${equip.index.topic}")
private String indexTopic; private String indexTopic;
@Value("${spring.redis.expire.time}") @Value("${spring.redis.expire.time}")
private long redisExpireTime; private long redisExpireTime;
@Value("${systemctl.sync.switch}") @Value("${systemctl.sync.switch}")
private Boolean syncSwitch; private Boolean syncSwitch;
@Value("${systemctl.amos.switch}") @Value("${systemctl.amos.switch}")
private Boolean amosSwitch; private Boolean amosSwitch;
@Value("${isSendApp}") @Value("${isSendApp}")
private Boolean isSendApp; private Boolean isSendApp;
@Value("${isSendIot:false}") @Value("${isSendIot:false}")
private Boolean isSendIot; private Boolean isSendIot;
@Value("${is.open.telemetering:false}") @Value("${is.open.telemetering:false}")
private Boolean isOpenTelemetering; private Boolean isOpenTelemetering;
@Value("${equipment.pressurepump.start}")
private String pressurePumpStart;
@Value("${emergency.disposal.indicators}")
private String emergencyDisposalIndicators;
public static List<EquipmentSpecificAlarmLog> upAlarmLogStatus(String iotCode, String equipmentSpecificIndexKey,
String traceId, IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService,
boolean flag, String batchConfirm) {
// LambdaQueryWrapper<EquipmentSpecificAlarmLog> queryWrapper = new LambdaQueryWrapper<>();
// if (batchConfirm.equalsIgnoreCase(HandleBatchConfirmEnum.SINGLE.getCode())) {
// queryWrapper.eq(EquipmentSpecificAlarmLog::getIotCode, iotCode);
// queryWrapper.ne(EquipmentSpecificAlarmLog::getStatus, AlarmStatusEnum.HF.getCode());
// } else if (batchConfirm.equalsIgnoreCase(HandleBatchConfirmEnum.ALL.getCode())) {
// // 此处做了全库的设备告警消除原因有二:第一点 目前在警情确认的时候会把设备定义类型是确认消除的设备的同一类型告警全部消除,所以此处逻辑合理;
// // 第二点:现在做了一键做全库设备的确认操作,但是没有全库设备的消除操作功能,所以此处做如下逻辑符合功能操作的惯性。 ----2023年9月20日 柯勇
// queryWrapper.ne(EquipmentSpecificAlarmLog::getStatus, AlarmStatusEnum.HF.getCode());
// } else {
// queryWrapper.eq(EquipmentSpecificAlarmLog::getIotCode, iotCode);
// queryWrapper.eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey, equipmentSpecificIndexKey);
// queryWrapper.ne(EquipmentSpecificAlarmLog::getStatus, AlarmStatusEnum.HF.getCode());
// }
LambdaQueryWrapper<EquipmentSpecificAlarmLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EquipmentSpecificAlarmLog::getIotCode, iotCode);
queryWrapper.eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey, equipmentSpecificIndexKey);
queryWrapper.ne(EquipmentSpecificAlarmLog::getStatus, AlarmStatusEnum.HF.getCode());
List<EquipmentSpecificAlarmLog> logs = equipmentSpecificAlarmLogService.getBaseMapper().selectList(queryWrapper);
if (!logs.isEmpty()) {
EquipmentSpecificAlarmLog log = logs.get(0);
EquipmentSpecific specific = equipmentSpecificMapper.selectById(log.getEquipmentSpecificId());
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(date);
logs.forEach(x -> {
x.setCleanTime(new Date());
x.setStatus(AlarmStatusEnum.HF.getCode());
if (!flag) {
// 若已经被确警处理过,此处不再做处理
if (StringUtils.isEmpty(x.getConfirmType())) {
x.setConfirmType(x.getType());
x.setConfirmTypeName(ConfirmAlamEnum.getTypeByCode(x.getType()));
String equipmentName = StringUtil.isNotEmpty(specific.getCode()) ? specific.getName() + "(" + specific.getCode() + ")" : specific.getName();
if (x.getType().equals(AlarmTypeEnum.PB.getCode())) {
x.setAlarmReason(equipmentName + "频繁故障/误报,将设备报警信息屏蔽。");
} else {
x.setAlarmReason(equipmentName + "引起设备报警");
}
x.setResolveResult(dateString + "系统收到设备复归(已消除)信号,系统自动处理。");
x.setConfirmUser("");
x.setConfirmUserName("系统自动处理");
x.setConfirmDate(date);
}
}
x.setEquipmentSpecificIndexValue(TrueOrFalseEnum.fake.value);
if (!StringUtils.isEmpty(traceId)) {
x.setTraceId(traceId);
}
});
equipmentSpecificAlarmLogService.updateBatchById(logs);
}
if (flag) {
List<EquipmentSpecificIndex> indexList = equipmentSpecificIndexService.getEquipmentSpeIndexBySpeIotCode(iotCode);
publishDataToCanvas(indexList);
}
return logs;
}
/**
* 画布数据消息推送
*
* @param indexList
*/
public static void publishDataToCanvas(List<EquipmentSpecificIndex> indexList) {
if (!ObjectUtils.isEmpty(indexList)) {
EquipmentSpecificIndex index = indexList.stream().filter(x -> x.getUpdateDate() != null)
.sorted(Comparator.comparing(EquipmentSpecificIndex::getUpdateDate).reversed())
.collect(Collectors.toList()).get(0);
EquipmentStateVo equipmentStateVo = new EquipmentStateVo();
equipmentStateVo.setEquipName(index.getEquipmentSpecificName());
equipmentStateVo.setOrgCode(index.getOrgCode());
equipmentStateVo.setSpecificId(index.getEquipmentSpecificId());
equipmentStateVo.setEquipCode(index.getQrCode());
equipmentStateVo.setEquipIotCode(index.getIotCode());
equipmentStateVo.setStatus("");
equipmentStateVo.setColor(index.getEmergencyLevelColor());
// 添加性能指标项
//flag 无意义 getSpeIndex 方法其他地方共用 做了额外封装 为0时走原逻辑
int flag = 0;
equipmentStateVo.setSpeindexList(fireFightingSystemService.getSpeIndex(index.getEquipmentSpecificId(), flag));
Map<String, Object> topicObject = new HashMap<>();
topicObject.put("equipCode", equipmentStateVo.getEquipCode());
if (TrueOrFalseEnum.real.value.equalsIgnoreCase(index.getValue())) {
topicObject.put("color", equipmentStateVo.getColor());
} else {
topicObject.put("color", "");
}
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(equipmentStateVo));
topicObject.put("uuid", UUID.randomUUID().toString());
map.put(canvasTopic, topicObject);
// 发送数据至画布
mqttSendGateway.sendToMqtt(canvasTopic, JSON.toJSONString(map));
}
}
@Autowired
public void setEquipmentSpecificIndexService(IEquipmentSpecificIndexService equipmentSpecificIndexService) {
MqttReceiveServiceImpl.equipmentSpecificIndexService = equipmentSpecificIndexService;
}
@Autowired
public void setEquipmentSpecificMapper(EquipmentSpecificMapper equipmentSpecificMapper) {
MqttReceiveServiceImpl.equipmentSpecificMapper = equipmentSpecificMapper;
}
@Value("${equip.message.create.topic}")
private String riskMsgCreateTopic;
@Autowired
public void setFireFightingSystemService(IFireFightingSystemService fireFightingSystemService) {
MqttReceiveServiceImpl.fireFightingSystemService = fireFightingSystemService;
}
private static Boolean isAlarm = Boolean.FALSE;
@Autowired
public void setMqttSendGateway(MqttSendGateway mqttSendGateway) {
MqttReceiveServiceImpl.mqttSendGateway = mqttSendGateway;
}
@Autowired
public void setRemoteSecurityService(RemoteSecurityService remoteSecurityService) {
MqttReceiveServiceImpl.remoteSecurityService = remoteSecurityService;
}
@Value("${equip.point.equipmentdata.topic}")
public void setCanvasTopic(String canvasTopic) {
MqttReceiveServiceImpl.canvasTopic = canvasTopic;
}
@Value("${systemctl.jcs.switch}")
public void setJcsSwitch(Boolean jcsSwitch) {
MqttReceiveServiceImpl.jcsSwitch = jcsSwitch;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void handlerMqttIncrementMessage(String topic, String message) {
TopicEntityVo topicEntity = new TopicEntityVo();
topicEntity.setTopic(topic);
topicEntity.setMessage(message);
int endIndex = topic.lastIndexOf("/");
String iotCode = topic.substring(0, endIndex).replace("/", "");
topicEntity.setIotCode(iotCode);
List<EquipmentSpecificVo> eqIotCodeList = iEquipmentSpecificSerivce.getEquipAndCarIotcodeByIotcode(iotCode);
if (eqIotCodeList.isEmpty()) {
log.info("该数据{}不存在!", iotCode);
return;
}
if (eqIotCodeList.size() > 1) {
log.info("有重复的{}数据!", iotCode);
}
//给 iot服务 推送消息 插数据到 influxdb
if (isSendIot) {
mqttSendGateway.sendToMqtt("influxdb/" + topic.substring(0, endIndex), message);
}
EquipmentSpecificVo vo = eqIotCodeList.get(0);
topicEntity.setType(vo.getType());
topicEntity.setCode(vo.getCode());
JSONObject json = JSONObject.parseObject(message);
Iterator it = json.entrySet().iterator();
List<IotDataVO> iotDatalist = new ArrayList<>();
String traceId = "";
while (it.hasNext()) {
IotDataVO iotDataVO = new IotDataVO();
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();
String key = entry.getKey();
Object value = entry.getValue();
iotDataVO.setKey(key);
iotDataVO.setValue(value);
if ("traceId".equalsIgnoreCase(key)) {
traceId = value.toString();
continue;
}
iotDatalist.add(iotDataVO);
}
if (ObjectUtils.isEmpty(iotDatalist)) {
return;
}
log.info(String.format("收到mqtt消息:%s", message));
// 发送emq消息转kafka
JSONObject jsonObject = new JSONObject();
jsonObject.put("topic", topic);
jsonObject.put("data", message);
try {
emqKeeper.getMqttClient().publish("emq.iot.created", jsonObject.toString().getBytes(), 1, false);
} catch (MqttException e) {
log.info(String.format("发送eqm转kafka消息失败:%s", e.getMessage()));
}
if (!StringUtils.isEmpty(traceId)) {
String finalTraceId = traceId;
List<IotDataVO> collect = iotDatalist.stream().map(x -> {
x.setTraceId(finalTraceId);
return x;
}).collect(Collectors.toList());
realTimeDateProcessing(topicEntity, collect, vo);
} else {
realTimeDateProcessing(topicEntity, iotDatalist, vo);
}
}
@Override
@Async("equipAsyncExecutor")
@Transactional(rollbackFor = Exception.class)
public void handlerMqttRomaMessage(String topic, String message) {
log.info("接收到换流站Kafka消息: {}", message);
TopicEntityVo topicEntity = new TopicEntityVo();
topicEntity.setTopic(topic);
topicEntity.setMessage(message);
List<IotDataVO> iotDatalist = new ArrayList<>();
List<EquipmentSpecificIndex> equipmentSpecificIndexList = new ArrayList<>();
List<EquipmentSpecificAlarm> equipmentSpecificAlarms = new ArrayList<>();
List<IndexStateVo> indexStateList = new ArrayList<>();
JSONObject jsonObject = JSONObject.parseObject(message);
StationMessage stationMessage = JSON.parseObject(String.valueOf(message), StationMessage.class);
String indexAddress = null, value = null, timeStamp = null, quality = null, dataType = null;
if (stationMessage != null) {
dataType = stationMessage.getDataType();
timeStamp = stationMessage.getTimeStamp();
quality = stationMessage.getQuality();
if (dataType.equals(STATE)) {
indexAddress = stationMessage.getScadaId();
value = ONE_1.equalsIgnoreCase(stationMessage.getValue()) ? TRUE : FALSE;
} else if (dataType.equals(DIS_CREATE)) {
indexAddress = stationMessage.getKey();
value = ONE_1_0.equalsIgnoreCase(stationMessage.getValue()) ? TRUE : FALSE;
} else {
indexAddress = stationMessage.getKey();
value = stationMessage.getValue();
}
}
Map<Object, Object> equipmentIndexKeyMap = redisUtils.hmget(RedisKey.EQUIP_INDEX_ADDRESS_KEY);
if (equipmentIndexKeyMap.get(indexAddress) != null) {
EquipmentSpecificIndex equipmentSpeIndex = equipmentSpecificIndexService.getEquipmentSpeIndexByAddress(indexAddress, null, null);
equipmentSpeIndex.setValue(value);
equipmentSpeIndex.setValueLabel(valueTranslate(value, equipmentSpeIndex.getValueEnum()));
equipmentSpeIndex.setEquipmentType(topicEntity.getType());
equipmentSpeIndex.setUpdateDate(new Date());
equipmentSpeIndex.setQuality(quality);
equipmentSpeIndex.setDataType(dataType);
equipmentSpeIndex.setTimeStamp(timeStamp);
equipmentSpeIndex.setUUID(UUIDUtils.getUUID());
IotDataVO iotDataVO = new IotDataVO();
iotDataVO.setKey(equipmentSpeIndex.getNameKey());
iotDataVO.setValue(value);
iotDatalist.add(iotDataVO);
QueryWrapper<EquipmentSpecific> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", equipmentSpeIndex.getEquipmentSpecificId());
EquipmentSpecific equipmentSpecific = iEquipmentSpecificSerivce.getOne(queryWrapper);
if (equipmentSpecific == null) {
return;
}
String iotCode = equipmentSpecific.getIotCode();
StringBuilder endIndex = new StringBuilder(iotCode).insert(8, '/');
String iotTopic = "influxdb/" + endIndex;
JSONObject msg = new JSONObject();
msg.put(equipmentSpeIndex.getEquipmentIndexKey(), value);
mqttSendGateway.sendToMqtt(iotTopic, JSON.toJSONString(msg));
List<EquipmentSpecificVo> eqIotCodeList = iEquipmentSpecificSerivce.getEquipAndCarIotcodeByIotcode(iotCode);
if (eqIotCodeList.isEmpty()) {
log.info("该数据{}不存在!", iotCode);
return;
}
if (eqIotCodeList.size() > 1) {
log.info("有重复的{}数据!", iotCode);
}
EquipmentSpecificVo equipmentSpecificVo = eqIotCodeList.get(0);
topicEntity.setType(equipmentSpecificVo.getType());
topicEntity.setCode(equipmentSpecificVo.getCode());
//es存储数据
eSeqService.saveESEquiplistSpecificBySystemESVO(equipmentSpeIndex, String.valueOf(equipmentSpecificVo.getSystemId()), equipmentSpecificVo.getSystemName());
//更新装备性能指标
equipmentSpecificIndexService.updateById(equipmentSpeIndex);
// 更新设备表指标状态
iEquipmentSpecificSerivce.updateEquipmentSpecIndexRealtimeData(equipmentSpeIndex);
equipmentSpecificIndexList.add(equipmentSpeIndex);
indexStateList.add(createIndexStateVo(equipmentSpeIndex));
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex);
// 火眼数据构造告警指标逻辑
equipmentSpeIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist);
boolean alarmFlag = false;
Map<String, String> messageBodyMap = new HashMap<>();
//管网压力、泡沫罐信息、水箱液位告警处理
if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) ||
FHS_PipePressureDetector_PipePressure.equalsIgnoreCase(iotDataVO.getKey()) ||
iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel)) {
alarmFlag = doFoamTankLevel(iotDataVO, equipmentSpeIndex, messageBodyMap);
}
//消防水池液位处理
if (iotDataVO.getKey().equalsIgnoreCase(FHS_FirePoolDevice_WaterLevel) ||
iotDataVO.getKey().equalsIgnoreCase(FHS_WirelessliquidDetector_WaterLevel)) {
alarmFlag = doWaterPoolLevel(iotDataVO, equipmentSpeIndex, messageBodyMap);
}
// 遥测数据生成告警事件、日志处理
if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) ||
FHS_PipePressureDetector_PipePressure.equalsIgnoreCase(iotDataVO.getKey()) ||
iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel) ||
iotDataVO.getKey().equalsIgnoreCase(FHS_FirePoolDevice_WaterLevel) ||
iotDataVO.getKey().equalsIgnoreCase(FHS_WirelessliquidDetector_WaterLevel)) {
handlingAlarms(equipmentSpeIndex, alarmFlag);
}
// 指标告警处理
if (equipmentSpeIndex.getIsAlarm() != null && 1 == equipmentSpeIndex.getIsAlarm()) {
equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpeIndex, messageBodyMap));
}
// 遥测遥信数据推送云端kafka
JSONObject jsonObjectXf = new JSONObject();
jsonObjectXf.put("data_class", "realdata");
if (equipmentSpeIndex.getIsTrend() == 1) {
jsonObjectXf.put("data_type", "analog");
} else {
jsonObjectXf.put("data_type", "state");
}
String date = DateUtils.date2LongStr(new Date());
jsonObjectXf.put("op_type", "subscribe_emergency");
JSONObject jsonObjectCondition = new JSONObject();
jsonObjectCondition.put("station_psr_id", stationCode);
jsonObjectCondition.put("station_name", stationName);
jsonObjectCondition.put("data_upload_time", date);
jsonObjectXf.put("condition", jsonObjectCondition);
JSONObject jsonObjectData = new JSONObject();
jsonObjectData.put("psrId", stationCode);
jsonObjectData.put("astId", equipmentSpeIndex.getSpecificCode());
jsonObjectData.put("equipType", equipmentSpeIndex.getEquipmentCode());
jsonObjectData.put("name", equipmentSpeIndex.getEquipmentSpecificName() + "-" + equipmentSpeIndex.getEquipmentSpecificIndexName());
if (value.equals("true")) {
jsonObjectData.put("value", "1");
} else if (value.equals("false")) {
jsonObjectData.put("value", "0");
} else {
jsonObjectData.put("value", value);
}
jsonObjectData.put("measurementType", null == equipmentSpeIndex.getEquipmentIndexKey() ? "" : equipmentSpeIndex.getEquipmentIndexKey());
jsonObjectData.put("dateTime", date);
jsonObjectData.put("quality", "0"); // 量测质量码:0 有效,1 无效
List<JSONObject> jsonObjects = Collections.singletonList(jsonObjectData);
jsonObjectXf.put("data", jsonObjects);
// 遥测
if (!isOpenTelemetering && equipmentSpeIndex.getIsTrend() == 1) {
} else {
try {
emqKeeper.getMqttClient().publish("emq.xf.created", jsonObjectXf.toString().getBytes(), 1, false);
log.info("遥测遥信数据推送云端kafka成功");
} catch (MqttException e) {
log.error("遥测遥信数据推送云端kafka失败=====>" + e.getMessage());
}
}
// 报警数据保存
List<EquipmentSpecificAlarmLog> alarmLogs = new ArrayList<>();
if (!ObjectUtils.isEmpty(equipmentSpecificAlarms)) {
equipmentSpecificAlarmService.saveOrUpdateBatch(equipmentSpecificAlarms);
}
// 需要在事务提交之后,否则事务隔离查询不出数据
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
public void afterCommit() {
equipmentSpecificAlarms.forEach(action -> {
if (AlarmStatusEnum.BJ.getCode() == action.getStatus()) {
alarmLogs.add(addEquipAlarmLogRecord(action));
if (ValidationUtil.isEmpty(action.getAlamContent())) {
action.setAlamContent(action.getEquipmentSpecificName() + action.getEquipmentSpecificIndexName());
}
mqttSendGateway.sendToMqtt(TopicEnum.EQDQR.getTopic(), JSONArray.toJSON(action).toString());
} else {
alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(),
equipmentSpecificAlarmLogService, false, ""));
mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString());
bool = Boolean.TRUE;
}
});
private static Boolean jcsSwitch; // 直流中心消息推送刷新
publishDataToDCCenterPage(equipmentSpecificIndexList);
@Value("${systemctl.jcs.switch}") // 四横八纵遥测信号信息列表刷新
public void setJcsSwitch(Boolean jcsSwitch) { publishNormalIndexValueToPage(equipmentSpecificIndexList);
MqttReceiveServiceImpl.jcsSwitch = jcsSwitch; if ("zd".equals(system)) {
} System.out.println("站端系统----------------");
// 向预控系统发送消息
sendEquipSpecIndexToAutosysTopic(equipmentSpecificIndexList);
@Value("${equipment.pressurepump.start}") // 首页性能指标数据订阅
private String pressurePumpStart; mqttSendGateway.sendToMqtt(indexTopic, JSON.toJSONString(indexStateList));
// 组态大屏消息推送,设备表实时指标修改
intePageSysDataRefresh(equipmentSpecificIndexList, topicEntity);
@Value("${emergency.disposal.indicators}") // 数字换流站同步指标修改
private String emergencyDisposalIndicators; syncSpecificIndexsToGS(equipmentSpecificIndexList);
@Value("${equip.message.create.topic}") // 则更新拓扑节点数据及告警状态
private String riskMsgCreateTopic; updateNodeDateByEquipId(equipmentSpecificIndexList);
private static Boolean bool = Boolean.FALSE; // 向画布推送
publishDataToCanvas(equipmentSpecificIndexList);
private static Boolean isAlarm = Boolean.FALSE; // 向其他系统推送报警
equipmentAlarmLogsToOtherSystems(alarmLogs);
@Autowired if (equipmentSpecificVo.getEcode() != null) {
protected EmqKeeper emqKeeper; String ecode = equipmentSpecificVo.getEcode();
boolean flag = false;
@Override //消防泵
@Transactional(rollbackFor = Exception.class) String[] strings = pumpCodes.split(",");
public void handlerMqttIncrementMessage(String topic, String message) { for (String string : strings) {
if (ecode.startsWith(string)) {
//通知>消防应急预案
topicEntity.setType("xfb");
mqttSendGateway.sendToMqtt(emergencyDisposalIndicators, JSONObject.toJSONString(topicEntity));
flag = true;
break;
}
}
TopicEntityVo topicEntity = new TopicEntityVo(); // 消防炮
topicEntity.setTopic(topic); String[] stringxfp = monitorCodes.split(",");
topicEntity.setMessage(message); if (!flag) {
int endIndex = topic.lastIndexOf("/"); for (String string1 : stringxfp) {
String iotCode = topic.substring(0, endIndex).replace("/", ""); if (ecode.startsWith(string1)) {
topicEntity.setIotCode(iotCode); //通知>消防应急预案
List<EquipmentSpecificVo> eqIotCodeList = iEquipmentSpecificSerivce.getEquipAndCarIotcodeByIotcode(iotCode); topicEntity.setType("xfp");
if (eqIotCodeList.isEmpty()) { mqttSendGateway.sendToMqtt(emergencyDisposalIndicators, JSONObject.toJSONString(topicEntity));
log.info("该数据{}不存在!", iotCode); flag = true;
return; break;
} }
if (eqIotCodeList.size() > 1) {
log.info("有重复的{}数据!", iotCode);
} }
//给 iot服务 推送消息 插数据到 influxdb
if (isSendIot) {
mqttSendGateway.sendToMqtt("influxdb/" + topic.substring(0, endIndex), message);
} }
EquipmentSpecificVo vo = eqIotCodeList.get(0); //消防水源
topicEntity.setType(vo.getType()); if (!flag) {
topicEntity.setCode(vo.getCode()); List<Map> lit = iEquipmentSpecificSerivce.getWater(equipmentSpecificVo.getId());
if (lit != null && !lit.isEmpty()) {
JSONObject json = JSONObject.parseObject(message); topicEntity.setType("xfsy");
Iterator it = json.entrySet().iterator(); mqttSendGateway.sendToMqtt(emergencyDisposalIndicators, JSONObject.toJSONString(topicEntity));
List<IotDataVO> iotDatalist = new ArrayList<>();
String traceId = "";
while (it.hasNext()) {
IotDataVO iotDataVO = new IotDataVO();
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();
String key = entry.getKey();
Object value = entry.getValue();
iotDataVO.setKey(key);
iotDataVO.setValue(value);
if ("traceId".equalsIgnoreCase(key)) {
traceId = value.toString();
continue;
} }
iotDatalist.add(iotDataVO);
} }
if (ObjectUtils.isEmpty(iotDatalist)) {
return;
} }
log.info(String.format("收到mqtt消息:%s", message));
// 发送emq消息转kafka
JSONObject jsonObject = new JSONObject();
jsonObject.put("topic", topic);
jsonObject.put("data", message);
try {
emqKeeper.getMqttClient().publish("emq.iot.created", jsonObject.toString().getBytes(), 1, false);
} catch (MqttException e) {
log.info(String.format("发送eqm转kafka消息失败:%s", e.getMessage()));
} }
}
if (!StringUtils.isEmpty(traceId)) { });
String finalTraceId = traceId;
List<IotDataVO> collect = iotDatalist.stream().map(x -> {
x.setTraceId(finalTraceId);
return x;
}).collect(Collectors.toList());
realTimeDateProcessing(topicEntity, collect, vo);
} else {
realTimeDateProcessing(topicEntity, iotDatalist, vo);
} }
} }
@Override @Override
@Async("equipAsyncExecutor")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void handlerMqttRomaMessage(String topic, String message) { public void handlerMqttStationMessage(String topic, String message) {
log.info("接收到Mqtt消息: {}", message); log.info("接收到韶山Kafka消息: {}", message);
TopicEntityVo topicEntity = new TopicEntityVo(); TopicEntityVo topicEntity = new TopicEntityVo();
topicEntity.setTopic(topic); topicEntity.setTopic(topic);
topicEntity.setMessage(message); topicEntity.setMessage(message);
...@@ -383,39 +701,20 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -383,39 +701,20 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
List<EquipmentSpecificAlarm> equipmentSpecificAlarms = new ArrayList<>(); List<EquipmentSpecificAlarm> equipmentSpecificAlarms = new ArrayList<>();
List<IndexStateVo> indexStateList = new ArrayList<>(); List<IndexStateVo> indexStateList = new ArrayList<>();
JSONObject jsonObject = JSONObject.parseObject(message); SShanStationMessage sShanStationMessage = JSON.parseObject(String.valueOf(message), SShanStationMessage.class);
String dataType = jsonObject.getString("datatype"); Map<Object, Object> equipmentIndexKeyMap = redisUtils.hmget(RedisKey.EQUIP_INDEX_ADDRESS_KEY_STATION);
sShanStationMessage.getWarns().forEach(m -> {
String indexAddress = null, value, timeStamp, quality = null; String value = m.getEventTextL1().contains("出现") ? TRUE : FALSE;
if (equipmentIndexKeyMap.get(m.getPointId()) != null) {
//如果消息是遥信类型,进行指标转换 EquipmentSpecificIndex equipmentSpeIndex = equipmentSpecificIndexService.getEquipmentSpeIndexByAddress(null, m.getPointId(), null);
assert dataType != null; if (equipmentSpeIndex == null) {
if (dataType.equals("state")) { return;
indexAddress = jsonObject.getString("scadaid");
value = jsonObject.getInteger("value") == 1 ? "true" : "false";
timeStamp = jsonObject.getString("timestamp");
}else if (dataType.equals("discreate")){
indexAddress = jsonObject.getString("key");
value = jsonObject.getFloat("value") == 0.0 ? "false" : "true";
timeStamp = jsonObject.getString("time_stamp");
quality = jsonObject.getString("quality");
}else {
indexAddress = jsonObject.getString("key");
value = jsonObject.getFloat("value")+"";
timeStamp = jsonObject.getString("time_stamp");
quality = jsonObject.getString("quality");
} }
Map<Object, Object> equipmentIndexKeyMap = redisUtils.hmget(RedisKey.EQUIP_INDEX_ADDRESS_KEY);
if (equipmentIndexKeyMap.get(indexAddress) != null) {
EquipmentSpecificIndex equipmentSpeIndex = equipmentSpecificIndexService.getEquipmentSpeIndexByIndexAddress(indexAddress, null);
equipmentSpeIndex.setValue(value); equipmentSpeIndex.setValue(value);
equipmentSpeIndex.setValueLabel(valueTranslate(value, equipmentSpeIndex.getValueEnum())); equipmentSpeIndex.setValueLabel(valueTranslate(value, equipmentSpeIndex.getValueEnum()));
equipmentSpeIndex.setEquipmentType(topicEntity.getType()); equipmentSpeIndex.setEquipmentType(topicEntity.getType());
equipmentSpeIndex.setUpdateDate(new Date()); equipmentSpeIndex.setUpdateDate(new Date());
equipmentSpeIndex.setQuality(quality); equipmentSpeIndex.setTimeStamp(sShanStationMessage.getTimestamp());
equipmentSpeIndex.setDataType(dataType);
equipmentSpeIndex.setTimeStamp(timeStamp);
equipmentSpeIndex.setUUID(UUIDUtils.getUUID()); equipmentSpeIndex.setUUID(UUIDUtils.getUUID());
IotDataVO iotDataVO = new IotDataVO(); IotDataVO iotDataVO = new IotDataVO();
...@@ -470,22 +769,22 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -470,22 +769,22 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
boolean alarmFlag = false; boolean alarmFlag = false;
Map<String, String> messageBodyMap = new HashMap<>(); Map<String, String> messageBodyMap = new HashMap<>();
//管网压力、泡沫罐信息、水箱液位告警处理 //管网压力、泡沫罐信息、水箱液位告警处理
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) || if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) ||
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase()) || FHS_PipePressureDetector_PipePressure.equalsIgnoreCase(iotDataVO.getKey()) ||
iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase())) { iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel)) {
alarmFlag = doFoamTankLevel(iotDataVO, equipmentSpeIndex, messageBodyMap); alarmFlag = doFoamTankLevel(iotDataVO, equipmentSpeIndex, messageBodyMap);
} }
//消防水池液位处理 //消防水池液位处理
if (iotDataVO.getKey().toLowerCase().equals(FHS_FirePoolDevice_WaterLevel.toLowerCase()) || if (iotDataVO.getKey().equalsIgnoreCase(FHS_FirePoolDevice_WaterLevel) ||
iotDataVO.getKey().toLowerCase().equals(FHS_WirelessliquidDetector_WaterLevel.toLowerCase())) { iotDataVO.getKey().equalsIgnoreCase(FHS_WirelessliquidDetector_WaterLevel)) {
alarmFlag = doWaterPoolLevel(iotDataVO, equipmentSpeIndex, messageBodyMap); alarmFlag = doWaterPoolLevel(iotDataVO, equipmentSpeIndex, messageBodyMap);
} }
// 遥测数据生成告警事件、日志处理 // 遥测数据生成告警事件、日志处理
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) || if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) ||
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase()) || FHS_PipePressureDetector_PipePressure.equalsIgnoreCase(iotDataVO.getKey()) ||
iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase()) || iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel) ||
iotDataVO.getKey().toLowerCase().equals(FHS_FirePoolDevice_WaterLevel.toLowerCase()) || iotDataVO.getKey().equalsIgnoreCase(FHS_FirePoolDevice_WaterLevel) ||
iotDataVO.getKey().toLowerCase().equals(FHS_WirelessliquidDetector_WaterLevel.toLowerCase())) { iotDataVO.getKey().equalsIgnoreCase(FHS_WirelessliquidDetector_WaterLevel)) {
handlingAlarms(equipmentSpeIndex, alarmFlag); handlingAlarms(equipmentSpeIndex, alarmFlag);
} }
...@@ -518,15 +817,13 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -518,15 +817,13 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
jsonObjectData.put("name", equipmentSpeIndex.getEquipmentSpecificName() + "-" + equipmentSpeIndex.getEquipmentSpecificIndexName()); jsonObjectData.put("name", equipmentSpeIndex.getEquipmentSpecificName() + "-" + equipmentSpeIndex.getEquipmentSpecificIndexName());
if (value.equals("true")) { if (value.equals("true")) {
jsonObjectData.put("value", "1"); jsonObjectData.put("value", "1");
} else if (value.equals("false")) {
jsonObjectData.put("value", "0");
} else { } else {
jsonObjectData.put("value", value); jsonObjectData.put("value", "0");
} }
jsonObjectData.put("measurementType", null == equipmentSpeIndex.getEquipmentIndexKey() ? "" : equipmentSpeIndex.getEquipmentIndexKey()); jsonObjectData.put("measurementType", null == equipmentSpeIndex.getEquipmentIndexKey() ? "" : equipmentSpeIndex.getEquipmentIndexKey());
jsonObjectData.put("dateTime", date); jsonObjectData.put("dateTime", date);
jsonObjectData.put("quality", "0"); // 量测质量码:0 有效,1 无效 jsonObjectData.put("quality", "0"); // 量测质量码:0 有效,1 无效
List<JSONObject> jsonObjects = Arrays.asList(jsonObjectData); List<JSONObject> jsonObjects = Collections.singletonList(jsonObjectData);
jsonObjectXf.put("data", jsonObjects); jsonObjectXf.put("data", jsonObjects);
...@@ -562,7 +859,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -562,7 +859,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
mqttSendGateway.sendToMqtt(TopicEnum.EQDQR.getTopic(), JSONArray.toJSON(action).toString()); mqttSendGateway.sendToMqtt(TopicEnum.EQDQR.getTopic(), JSONArray.toJSON(action).toString());
} else { } else {
alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(), alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(),
equipmentSpecificAlarmLogService, false)); equipmentSpecificAlarmLogService, false, ""));
mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString()); mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString());
bool = Boolean.TRUE; bool = Boolean.TRUE;
} }
...@@ -629,7 +926,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -629,7 +926,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
//消防水源 //消防水源
if (!flag) { if (!flag) {
List<Map> lit = iEquipmentSpecificSerivce.getWater(equipmentSpecificVo.getId()); List<Map> lit = iEquipmentSpecificSerivce.getWater(equipmentSpecificVo.getId());
if (lit != null && lit.size() > 0) { if (lit != null && !lit.isEmpty()) {
topicEntity.setType("xfsy"); topicEntity.setType("xfsy");
mqttSendGateway.sendToMqtt(emergencyDisposalIndicators, JSONObject.toJSONString(topicEntity)); mqttSendGateway.sendToMqtt(emergencyDisposalIndicators, JSONObject.toJSONString(topicEntity));
} }
...@@ -639,7 +936,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -639,7 +936,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
} }
}); });
} }
});
} }
/** /**
* 物联数据处理 * 物联数据处理
* *
...@@ -686,7 +985,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -686,7 +985,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
for (EquipmentSpecificIndex equipmentSpecificIndex : indexList) { for (EquipmentSpecificIndex equipmentSpecificIndex : indexList) {
if (!ObjectUtils.isEmpty(equipmentSpecificIndex.getNameKey()) if (!ObjectUtils.isEmpty(equipmentSpecificIndex.getNameKey())
&& equipmentSpecificIndex.getNameKey().toLowerCase().equals(iotDataVO.getKey().toLowerCase())) { && equipmentSpecificIndex.getNameKey().equalsIgnoreCase(iotDataVO.getKey())) {
EquipmentSpecificIndex equipmentSpeIndex = new EquipmentSpecificIndex(); EquipmentSpecificIndex equipmentSpeIndex = new EquipmentSpecificIndex();
BeanUtils.copyProperties(equipmentSpecificIndex, equipmentSpeIndex); BeanUtils.copyProperties(equipmentSpecificIndex, equipmentSpeIndex);
String value = iotDataVO.getValue().toString(); String value = iotDataVO.getValue().toString();
...@@ -738,22 +1037,22 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -738,22 +1037,22 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 告警日志表消息内容 // 告警日志表消息内容
Map<String, String> messageBodyMap = new HashMap<>(); Map<String, String> messageBodyMap = new HashMap<>();
//管网压力、泡沫罐信息、水箱液位告警处理 //管网压力、泡沫罐信息、水箱液位告警处理
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) || if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) ||
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase()) || FHS_PipePressureDetector_PipePressure.equalsIgnoreCase(iotDataVO.getKey()) ||
iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase())) { iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel)) {
alarmFlag = doFoamTankLevel(iotDataVO, equipmentSpecificIndex, messageBodyMap); alarmFlag = doFoamTankLevel(iotDataVO, equipmentSpecificIndex, messageBodyMap);
} }
//消防水池液位处理 //消防水池液位处理
if (iotDataVO.getKey().toLowerCase().equals(FHS_FirePoolDevice_WaterLevel.toLowerCase()) || if (iotDataVO.getKey().equalsIgnoreCase(FHS_FirePoolDevice_WaterLevel) ||
iotDataVO.getKey().toLowerCase().equals(FHS_WirelessliquidDetector_WaterLevel.toLowerCase())) { iotDataVO.getKey().equalsIgnoreCase(FHS_WirelessliquidDetector_WaterLevel)) {
alarmFlag = doWaterPoolLevel(iotDataVO, equipmentSpecificIndex, messageBodyMap); alarmFlag = doWaterPoolLevel(iotDataVO, equipmentSpecificIndex, messageBodyMap);
} }
// 遥测数据生成告警事件、日志处理 // 遥测数据生成告警事件、日志处理
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) || if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) ||
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase()) || FHS_PipePressureDetector_PipePressure.equalsIgnoreCase(iotDataVO.getKey()) ||
iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase()) || iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel) ||
iotDataVO.getKey().toLowerCase().equals(FHS_FirePoolDevice_WaterLevel.toLowerCase()) || iotDataVO.getKey().equalsIgnoreCase(FHS_FirePoolDevice_WaterLevel) ||
iotDataVO.getKey().toLowerCase().equals(FHS_WirelessliquidDetector_WaterLevel.toLowerCase())) { iotDataVO.getKey().equalsIgnoreCase(FHS_WirelessliquidDetector_WaterLevel)) {
handlingAlarms(equipmentSpecificIndex, alarmFlag); handlingAlarms(equipmentSpecificIndex, alarmFlag);
} }
...@@ -794,7 +1093,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -794,7 +1093,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
jsonObjectData.put("measurementType", null == equipmentSpecificIndex.getEquipmentIndexKey() ? "" : equipmentSpecificIndex.getEquipmentIndexKey()); jsonObjectData.put("measurementType", null == equipmentSpecificIndex.getEquipmentIndexKey() ? "" : equipmentSpecificIndex.getEquipmentIndexKey());
jsonObjectData.put("dateTime", date); jsonObjectData.put("dateTime", date);
jsonObjectData.put("quality", "0"); // 量测质量码:0 有效,1 无效 jsonObjectData.put("quality", "0"); // 量测质量码:0 有效,1 无效
List<JSONObject> jsonObjects = Arrays.asList(jsonObjectData); List<JSONObject> jsonObjects = Collections.singletonList(jsonObjectData);
jsonObjectXf.put("data", jsonObjects); jsonObjectXf.put("data", jsonObjects);
...@@ -832,6 +1131,21 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -832,6 +1131,21 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
} }
}); });
equipmentSpecificAlarms.forEach(action -> {
if (AlarmStatusEnum.BJ.getCode() == action.getStatus()) {
alarmLogs.add(addEquipAlarmLogRecord(action));
if (ValidationUtil.isEmpty(action.getAlamContent())) {
action.setAlamContent(action.getEquipmentSpecificName() + action.getEquipmentSpecificIndexName());
}
mqttSendGateway.sendToMqtt(TopicEnum.EQDQR.getTopic(), JSONArray.toJSON(action).toString());
} else {
alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(),
equipmentSpecificAlarmLogService, false, ""));
mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString());
bool = Boolean.TRUE;
}
});
// 直流中心消息推送刷新 // 直流中心消息推送刷新
publishDataToDCCenterPage(equipmentSpecificIndexList); publishDataToDCCenterPage(equipmentSpecificIndexList);
...@@ -914,7 +1228,6 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -914,7 +1228,6 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipmentSpecificIndex.setValue(String.valueOf(alarmFlag)); equipmentSpecificIndex.setValue(String.valueOf(alarmFlag));
} }
/** /**
* 泡沫罐 或 者管网压力 消息发送 * 泡沫罐 或 者管网压力 消息发送
* *
...@@ -925,7 +1238,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -925,7 +1238,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
boolean alarmFlag = false; boolean alarmFlag = false;
MessageModel model = new MessageModel(); MessageModel model = new MessageModel();
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) || iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase())) { if (iotDataVO.getKey().equalsIgnoreCase(CAFS_FoamTank_FoamTankLevel) || iotDataVO.getKey().equalsIgnoreCase(CAFS_WaterTank_WaterTankLevel)) {
map = fireFightingSystemMapper.getFoamTankLevel(equipmentSpecificIndex.getEquipmentSpecificId()); map = fireFightingSystemMapper.getFoamTankLevel(equipmentSpecificIndex.getEquipmentSpecificId());
} else { } else {
map = fireFightingSystemMapper.getPipeNetwork(equipmentSpecificIndex.getEquipmentSpecificId()); map = fireFightingSystemMapper.getPipeNetwork(equipmentSpecificIndex.getEquipmentSpecificId());
...@@ -959,7 +1272,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -959,7 +1272,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
model.setRelationId(equipmentSpecificIndex.getEquipmentSpecificId().toString()); model.setRelationId(equipmentSpecificIndex.getEquipmentSpecificId().toString());
model.setIsSendApp(false); model.setIsSendApp(false);
model.setTerminal("WEB"); model.setTerminal("WEB");
model.setRecivers(Arrays.asList("system")); model.setRecivers(Collections.singletonList("system"));
Map<String, String> ext = new HashMap<>(); Map<String, String> ext = new HashMap<>();
ext.put("content", body); ext.put("content", body);
ext.put("type", "模拟量超阈值提醒"); ext.put("type", "模拟量超阈值提醒");
...@@ -995,7 +1308,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -995,7 +1308,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
String levelDeviceId = (String) map.get("levelDeviceId"); String levelDeviceId = (String) map.get("levelDeviceId");
BigDecimal add = nowValue; BigDecimal add = nowValue;
if (levelDeviceId.contains(",")) { if (levelDeviceId.contains(",")) {
List<String> split = Arrays.asList(levelDeviceId.split(",")); String[] split = levelDeviceId.split(",");
int i = 1; int i = 1;
for (String s : split) { for (String s : split) {
if (!s.trim().equals(Long.toString(equipmentSpecificIndex.getEquipmentSpecificId()))) { if (!s.trim().equals(Long.toString(equipmentSpecificIndex.getEquipmentSpecificId()))) {
...@@ -1031,7 +1344,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1031,7 +1344,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
model.setRelationId(map.get("id").toString()); model.setRelationId(map.get("id").toString());
model.setIsSendApp(false); model.setIsSendApp(false);
model.setTerminal("WEB"); model.setTerminal("WEB");
model.setRecivers(Arrays.asList("system")); model.setRecivers(Collections.singletonList("system"));
Map<String, String> ext = new HashMap<>(); Map<String, String> ext = new HashMap<>();
ext.put("content", body); ext.put("content", body);
ext.put("type", "模拟量超阈值提醒"); ext.put("type", "模拟量超阈值提醒");
...@@ -1056,10 +1369,10 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1056,10 +1369,10 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
if (!ObjectUtils.isEmpty(equipmentSpecificIndex) || !ObjectUtils.isEmpty(equipmentSpecificIndex.getUnit())) { if (!ObjectUtils.isEmpty(equipmentSpecificIndex) || !ObjectUtils.isEmpty(equipmentSpecificIndex.getUnit())) {
if (UnitEnum.MM.getKey().equalsIgnoreCase(equipmentSpecificIndex.getUnit()) || UnitEnum.MM.getName().equals(equipmentSpecificIndex.getUnit())) { if (UnitEnum.MM.getKey().equalsIgnoreCase(equipmentSpecificIndex.getUnit()) || UnitEnum.MM.getName().equals(equipmentSpecificIndex.getUnit())) {
BigDecimal divide = new BigDecimal(1000); BigDecimal divide = new BigDecimal(1000);
nowValue = nowValue.divide(divide, 2, BigDecimal.ROUND_HALF_UP); nowValue = nowValue.divide(divide, 2, RoundingMode.HALF_UP);
} else if (UnitEnum.CM.getKey().equalsIgnoreCase(equipmentSpecificIndex.getUnit()) || UnitEnum.CM.getName().equals(equipmentSpecificIndex.getUnit())) { } else if (UnitEnum.CM.getKey().equalsIgnoreCase(equipmentSpecificIndex.getUnit()) || UnitEnum.CM.getName().equals(equipmentSpecificIndex.getUnit())) {
BigDecimal divide = new BigDecimal(100); BigDecimal divide = new BigDecimal(100);
nowValue = nowValue.divide(divide, 2, BigDecimal.ROUND_HALF_UP); nowValue = nowValue.divide(divide, 2, RoundingMode.HALF_UP);
} }
} }
return nowValue; return nowValue;
...@@ -1083,7 +1396,6 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1083,7 +1396,6 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
return val; return val;
} }
public void carRealTimeDate(List<IotDataVO> iotDatalist, List<CarProperty> carProperties, TopicEntityVo topicEntity) { public void carRealTimeDate(List<IotDataVO> iotDatalist, List<CarProperty> carProperties, TopicEntityVo topicEntity) {
List<CarProperty> carIndexsList = new ArrayList<>(); List<CarProperty> carIndexsList = new ArrayList<>();
iotDatalist.forEach(iotDataVO -> { iotDatalist.forEach(iotDataVO -> {
...@@ -1136,92 +1448,6 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1136,92 +1448,6 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
}); });
} }
public static List<EquipmentSpecificAlarmLog> upAlarmLogStatus(String iotCode, String equipmentSpecificIndexKey,
String traceId, IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService,
boolean flag) {
LambdaQueryWrapper<EquipmentSpecificAlarmLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EquipmentSpecificAlarmLog::getIotCode, iotCode);
queryWrapper.eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey, equipmentSpecificIndexKey);
queryWrapper.ne(EquipmentSpecificAlarmLog::getStatus, AlarmStatusEnum.HF.getCode());
List<EquipmentSpecificAlarmLog> logs = equipmentSpecificAlarmLogService.getBaseMapper().selectList(queryWrapper);
if (!logs.isEmpty()) {
EquipmentSpecificAlarmLog log = logs.get(0);
EquipmentSpecific specific = equipmentSpecificMapper.selectById(log.getEquipmentSpecificId());
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(date);
logs.forEach(x -> {
x.setCleanTime(new Date());
x.setStatus(AlarmStatusEnum.HF.getCode());
if (!flag) {
// 若已经被确警处理过,此处不再做处理
if (StringUtils.isEmpty(x.getConfirmType())) {
x.setConfirmType(x.getType());
x.setConfirmTypeName(ConfirmAlamEnum.getTypeByCode(x.getType()));
String equipmentName = StringUtil.isNotEmpty(specific.getCode()) ? specific.getName() + "(" + specific.getCode() + ")" : specific.getName();
if (x.getType().equals(AlarmTypeEnum.PB.getCode())) {
x.setAlarmReason(equipmentName + "频繁故障/误报,将设备报警信息屏蔽。");
} else {
x.setAlarmReason(equipmentName + "引起设备报警");
}
x.setResolveResult(dateString + "系统收到设备复归(已消除)信号,系统自动处理。");
x.setConfirmUser("");
x.setConfirmUserName("系统自动处理");
x.setConfirmDate(date);
}
}
x.setEquipmentSpecificIndexValue(TrueOrFalseEnum.fake.value);
if (!StringUtils.isEmpty(traceId)) {
x.setTraceId(traceId);
}
});
equipmentSpecificAlarmLogService.updateBatchById(logs);
}
if (flag) {
List<EquipmentSpecificIndex> indexList = equipmentSpecificIndexService.getEquipmentSpeIndexBySpeIotCode(iotCode);
publishDataToCanvas(indexList);
}
return logs;
}
/**
* 画布数据消息推送
*
* @param indexList
*/
public static void publishDataToCanvas(List<EquipmentSpecificIndex> indexList) {
if (!ObjectUtils.isEmpty(indexList)) {
EquipmentSpecificIndex index = indexList.stream().filter(x -> x.getUpdateDate() != null)
.sorted(Comparator.comparing(EquipmentSpecificIndex::getUpdateDate).reversed())
.collect(Collectors.toList()).get(0);
EquipmentStateVo equipmentStateVo = new EquipmentStateVo();
equipmentStateVo.setEquipName(index.getEquipmentSpecificName());
equipmentStateVo.setOrgCode(index.getOrgCode());
equipmentStateVo.setSpecificId(index.getEquipmentSpecificId());
equipmentStateVo.setEquipCode(index.getQrCode());
equipmentStateVo.setEquipIotCode(index.getIotCode());
equipmentStateVo.setStatus("");
equipmentStateVo.setColor(index.getEmergencyLevelColor());
// 添加性能指标项
//flag 无意义 getSpeIndex 方法其他地方共用 做了额外封装 为0时走原逻辑
int flag = 0;
equipmentStateVo.setSpeindexList(fireFightingSystemService.getSpeIndex(index.getEquipmentSpecificId(), flag));
Map<String, Object> topicObject = new HashMap<>();
topicObject.put("equipCode", equipmentStateVo.getEquipCode());
if (TrueOrFalseEnum.real.value.toUpperCase().equals(index.getValue().toUpperCase())) {
topicObject.put("color", equipmentStateVo.getColor());
} else {
topicObject.put("color", "");
}
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(equipmentStateVo));
topicObject.put("uuid", UUID.randomUUID().toString());
map.put(canvasTopic, topicObject);
// 发送数据至画布
mqttSendGateway.sendToMqtt(canvasTopic, JSON.toJSONString(map));
}
}
/** /**
* 报警消息推送amos平台 * 报警消息推送amos平台
* *
...@@ -1505,13 +1731,10 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1505,13 +1731,10 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
private boolean temperatureMapIsEmpty(String traceId) { private boolean temperatureMapIsEmpty(String traceId) {
TemperatureAlarmDto dto = temperatureMap.get(traceId); TemperatureAlarmDto dto = temperatureMap.get(traceId);
if (!ValidationUtil.isEmpty(dto) && !ValidationUtil.isEmpty(dto.getAlarmLevel()) return !ValidationUtil.isEmpty(dto) && !ValidationUtil.isEmpty(dto.getAlarmLevel())
&& !ValidationUtil.isEmpty(dto.getAlarmType()) && !ValidationUtil.isEmpty(dto.getAlarmRule()) && !ValidationUtil.isEmpty(dto.getAlarmType()) && !ValidationUtil.isEmpty(dto.getAlarmRule())
&& !ValidationUtil.isEmpty(dto.getRuleTemperature()) && !ValidationUtil.isEmpty(dto.getTemperature()) && !ValidationUtil.isEmpty(dto.getRuleTemperature()) && !ValidationUtil.isEmpty(dto.getTemperature())
&& !ValidationUtil.isEmpty(dto.getThermometryUnit())) { && !ValidationUtil.isEmpty(dto.getThermometryUnit());
return true;
}
return false;
} }
/** /**
...@@ -1533,8 +1756,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1533,8 +1756,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipmentSpecificIndex.getValue()); equipmentSpecificIndex.getValue());
equipmentSpecificAlarm.setAlamReason(equipmentSpecificAlarm.getEquipmentSpecificIndexName().replace("NB_", "") equipmentSpecificAlarm.setAlamReason(equipmentSpecificAlarm.getEquipmentSpecificIndexName().replace("NB_", "")
+ ":" + NBalarmEnum.getDescByKey(enumKey)); + ":" + NBalarmEnum.getDescByKey(enumKey));
boolean flag = false; boolean flag = !ValidationUtil.isEmpty(equipmentSpecificAlarm.getType())
if (!ValidationUtil.isEmpty(equipmentSpecificAlarm.getType())
&& !ValidationUtil.isEmpty(equipmentSpecificAlarm.getIotCode()) && !ValidationUtil.isEmpty(equipmentSpecificAlarm.getIotCode())
&& !ValidationUtil.isEmpty(equipmentSpecificAlarm.getEquipmentSpecificIndexKey()) && !ValidationUtil.isEmpty(equipmentSpecificAlarm.getEquipmentSpecificIndexKey())
&& (NBalarmEnum.NB_liquid_level_state_0.getKey().equals(enumKey) && (NBalarmEnum.NB_liquid_level_state_0.getKey().equals(enumKey)
...@@ -1543,9 +1765,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1543,9 +1765,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
|| NBalarmEnum.NB_hydraulic_state_0.getKey().equals(enumKey) || NBalarmEnum.NB_hydraulic_state_0.getKey().equals(enumKey)
|| NBalarmEnum.NB_hydraulic_state_2.getKey().equals(enumKey) || NBalarmEnum.NB_hydraulic_state_2.getKey().equals(enumKey)
|| NBalarmEnum.NB_hydraulic_state_4.getKey().equals(enumKey) || NBalarmEnum.NB_hydraulic_state_4.getKey().equals(enumKey)
|| NBalarmEnum.NB_alarm_status_4.getKey().equals(enumKey))) { || NBalarmEnum.NB_alarm_status_4.getKey().equals(enumKey));
flag = true;
}
return flag; return flag;
} }
...@@ -2009,7 +2229,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -2009,7 +2229,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
private List<CarIndexGisVo> createCarIndexGisVo(List<CarProperty> carProperties) { private List<CarIndexGisVo> createCarIndexGisVo(List<CarProperty> carProperties) {
List<CarIndexGisVo> list = new ArrayList<>(); List<CarIndexGisVo> list = new ArrayList<>();
long id = 0l; long id = 0L;
String iotCode = ""; String iotCode = "";
for (CarProperty action : carProperties) { for (CarProperty action : carProperties) {
CarIndexGisVo v = new CarIndexGisVo(); CarIndexGisVo v = new CarIndexGisVo();
......
...@@ -41,6 +41,7 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -41,6 +41,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -1079,4 +1080,19 @@ public class PlanTaskController extends AbstractBaseController { ...@@ -1079,4 +1080,19 @@ public class PlanTaskController extends AbstractBaseController {
planTaskService.download(request, response, taskDetailId); planTaskService.download(request, response, taskDetailId);
} }
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "idx消防巡查报表调用", notes = "idx消防巡查报表调用")
@RequestMapping(value = "/report/info", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
public ResponseModel getPlanTaskInfoList(@ApiParam(value = "站编码") @RequestParam(required = false) String bizOrgCode,
@ApiParam(value = "开始日期") @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@ApiParam(value = "结束日期") @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
try {
Map<String, Object> map = planTaskService.queryPatrolInfoList(bizOrgCode, startDate, endDate);
return CommonPatrolResponseUtil.success(map);
} catch (Exception e) {
log.error(e.getMessage(), e);
return CommonPatrolResponseUtil.failure("远程查询巡检信息失败!");
}
}
} }
...@@ -221,4 +221,7 @@ public interface PlanTaskMapper extends BaseMapper { ...@@ -221,4 +221,7 @@ public interface PlanTaskMapper extends BaseMapper {
List<Map<String, Object>> getStatics(@Param("bizOrgCode") String bizOrgCode); List<Map<String, Object>> getStatics(@Param("bizOrgCode") String bizOrgCode);
Map<String, Object> queryPatrolInfoList(@Param(value="bizOrgCode") String bizOrgCode, @Param(value="startDate") Date startDate, @Param(value="endDate") Date endDate);
Map<String, Object> queryPatrolEquipInfo(@Param(value="bizOrgCode") String bizOrgCode, @Param(value="startDate") Date startDate, @Param(value="endDate") Date endDate);
} }
...@@ -1847,6 +1847,18 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -1847,6 +1847,18 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
return resultMap; return resultMap;
} }
@Override
public Map<String, Object> queryPatrolInfoList(String bizOrgCode, Date startDate, Date endDate) {
Map<String, Object> map = new HashMap<>();
map = planTaskMapper.queryPatrolInfoList(bizOrgCode, startDate, endDate);
Map<String, Object> map1 = new HashMap<>();
map1 = planTaskMapper.queryPatrolEquipInfo(bizOrgCode, startDate, endDate);
map.put("equipment_count", map1.get("equipment_count"));
map.put("checked_equipment_count", map1.get("checked_equipment_count"));
map.put("unchecked_equipment_count", map1.get("unchecked_equipment_count"));
return map;
}
@Override @Override
public void download(HttpServletRequest request, HttpServletResponse response, String taskDetailId) throws UnsupportedEncodingException { public void download(HttpServletRequest request, HttpServletResponse response, String taskDetailId) throws UnsupportedEncodingException {
......
...@@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -197,4 +198,6 @@ public interface IPlanTaskService { ...@@ -197,4 +198,6 @@ public interface IPlanTaskService {
Map<String, String> preview(String taskDetailId); Map<String, String> preview(String taskDetailId);
void download(HttpServletRequest request, HttpServletResponse response, String taskDetailId) throws UnsupportedEncodingException; void download(HttpServletRequest request, HttpServletResponse response, String taskDetailId) throws UnsupportedEncodingException;
Map<String,Object> queryPatrolInfoList(String bizOrgCode, Date startDate, Date endDate);
} }
package com.yeejoin.amos.patrol.business.util;
import org.springframework.http.HttpStatus;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
public class CommonPatrolResponseUtil
{
private CommonPatrolResponseUtil() {
}
public static ResponseModel success()
{
ResponseModel res = new ResponseModel<>();
res.setDevMessage(Constant.RESULT_SUCCESS);
res.setStatus(HttpStatus.OK.value());
return res;
}
public static ResponseModel success(Object obj)
{
ResponseModel<Object> res = new ResponseModel<>();
res.setResult(obj);
res.setDevMessage(Constant.RESULT_SUCCESS);
res.setStatus(HttpStatus.OK.value());
return res;
}
public static ResponseModel success(Object obj, String message)
{
ResponseModel res = new ResponseModel<>();
res.setResult(obj);
res.setDevMessage(message);
res.setStatus(HttpStatus.OK.value());
return res;
}
public static ResponseModel failure()
{
ResponseModel res = new ResponseModel<>();
res.setDevMessage(Constant.RESULT_FAILURE);
res.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
return res;
}
public static ResponseModel failure(String message)
{
ResponseModel res = new ResponseModel<>();
res.setDevMessage(Constant.RESULT_FAILURE);
res.setMessage(message);
res.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
return res;
}
public static ResponseModel failure(Object obj, String message)
{
ResponseModel res = new ResponseModel<>();
res.setResult(obj);
res.setMessage(message);
res.setDevMessage(Constant.RESULT_FAILURE);
res.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
return res;
}
}
package com.yeejoin.amos.patrol.business.util;
/**
* @Description: 常量类
* @Author: duanwei
* @Date: 2019/7/29
*/
public interface Constant {
String RESULT_SUCCESS = "SUCCESS";
String RESULT_FAILURE = "FAILURE";
/**
* 请求成功
*/
String SUCCESS = "200";
String NULL = "";
/**
* 数字换流站大小屏数据编码
* //fireResources(资源概率);fireCAFSSys(CAFS系统);fireAlarmSys(火灾报警系统);
* fireONLSys(排油系统);fireFoamSys(泡沫灭火系统);
* fireWaterSys(消防给水系统);fireFoamMistSys(细水雾涡扇炮系统)
*/
String threeBigTopicfireResources = "threeBigTopicfireResources";
String threeSmallTopicfireResources = "threeSmallTopicfireResources";
String fourBigTopicfireResources = "fourBigTopicfireResources";
String fourSmallTopicfireResources = "fourSmallTopicfireResources";
String threeBigTopicfireCAFSSys = "threeBigTopicfireCAFSSys";
String threeSmallTopicfireCAFSSys = "threeSmallTopicfireCAFSSys";
String fourSmallTopicfireCAFSSys = "fourSmallTopicfireCAFSSys";
String threeBigTopicfireAlarmSys = "threeBigTopicfireAlarmSys";
String threeSmallTopicfireAlarmSys = "threeSmallTopicfireAlarmSys";
String fourSmallTopicfireAlarmSys = "fourSmallTopicfireAlarmSys";
String threeBigTopicfireONLSys = "threeBigTopicfireONLSys";
String threeSmallTopicfireONLSys = "threeSmallTopicfireONLSys";
String fourSmallTopicfireONLSys = "fourSmallTopicfireONLSys";
String threeBigTopicfireFoamSys = "threeBigTopicfireFoamSys";
String threeSmallTopicfireFoamSys = "threeSmallTopicfireFoamSys";
String fourSmallTopicfireFoamSys = "fourSmallTopicfireFoamSys";
String threeBigTopicfireWaterSys = "threeBigTopicfireWaterSys";
String threeSmallTopicfireWaterSys = "threeSmallTopicfireWaterSys";
String fourSmallTopicfireWaterSys = "fourSmallTopicfireWaterSys";
String threeBigTopicfireFoamMistSys = "threeBigTopicfireFoamMistSys";
String threeSmallTopicfireFoamMistSys = "threeSmallTopicfireFoamMistSys";
String fourSmallTopicfireFoamMistSys = "fourSmallTopicfireFoamMistSys";
}
...@@ -328,7 +328,12 @@ public class JobService implements IJobService { ...@@ -328,7 +328,12 @@ public class JobService implements IJobService {
check.setRouteId(arg.getRouteId()); check.setRouteId(arg.getRouteId());
check.setCheckTime(arg.getEndTime()); check.setCheckTime(arg.getEndTime());
check.setIsOk(CheckStatusEnum.OMISSION.getCode()); check.setIsOk(CheckStatusEnum.OMISSION.getCode());
check = iCheckDao.saveAndFlush(check); try {
check = iCheckDao.save(check);
} catch (InnerInvokException e) {
e.printStackTrace();
}
iCheckDao.flush();
checkList.add(check); checkList.add(check);
checkMap.put(arg.getPointId(), check); checkMap.put(arg.getPointId(), check);
checkIds.add(check.getId()); checkIds.add(check.getId());
......
...@@ -95,6 +95,9 @@ ...@@ -95,6 +95,9 @@
<if test="bizOrgCode != null and bizOrgCode != ''"> <if test="bizOrgCode != null and bizOrgCode != ''">
AND biz_org_code like CONCAT(#{bizOrgCode},'%') AND biz_org_code like CONCAT(#{bizOrgCode},'%')
</if> </if>
<if test="systemStatus != null and systemStatus != ''">
AND system_status = #{systemStatus}
</if>
<if test="companyCode != null and companyCode != ''"> <if test="companyCode != null and companyCode != ''">
AND biz_org_code = #{companyCode} AND biz_org_code = #{companyCode}
</if> </if>
......
...@@ -215,6 +215,7 @@ ...@@ -215,6 +215,7 @@
wles.biz_org_name as bizOrgName wles.biz_org_name as bizOrgName
FROM wl_equipment_specific_alarm_log wlesal FROM wl_equipment_specific_alarm_log wlesal
LEFT JOIN wl_equipment_specific wles ON wlesal.equipment_specific_id = wles.id LEFT JOIN wl_equipment_specific wles ON wlesal.equipment_specific_id = wles.id
LEFT JOIN wl_warehouse_structure wws ON wles.warehouse_structure_id = wws.id
LEFT JOIN wl_equipment_detail wled ON wles.equipment_detail_id = wled.id LEFT JOIN wl_equipment_detail wled ON wles.equipment_detail_id = wled.id
LEFT JOIN wl_equipment we ON wled.equipment_id = we.id LEFT JOIN wl_equipment we ON wled.equipment_id = we.id
<where> <where>
...@@ -241,19 +242,18 @@ ...@@ -241,19 +242,18 @@
<if test="param.system != null and param.system != ''"> <if test="param.system != null and param.system != ''">
AND find_in_set(#{param.system},wles.system_id) AND find_in_set(#{param.system},wles.system_id)
</if> </if>
<if test="param.buildIds!=null"> <if test="param.buildIds!=null and param.buildIds.size() > 0">
-- AND wlesal.build_id IN AND find_in_set(#{param.buildIds}, wles.warehouse_structure_id)
AND wles.warehouse_structure_id IN </if>
<foreach item="item" collection="param.buildIds" separator="," <if test="param.buildingName != null and param.buildingName != ''">
open="(" close=")" index="">#{item} AND wws.full_name LIKE CONCAT('%', #{param.buildingName}, '%')
</foreach>
</if> </if>
<if test="param.id!=null and param.id!=''">AND wlesal.equipment_specific_id = #{param.id}</if> <if test="param.id!=null and param.id!=''">AND wlesal.equipment_specific_id = #{param.id}</if>
<if test="param.cleanStatus != null and param.cleanStatus != '' and param.cleanStatus == 1">AND <if test="param.cleanStatus != null and param.cleanStatus != '' and param.cleanStatus == 1">AND
wlesal.clean_time IS NOT NULL wlesal.clean_time IS NOT NULL
</if> </if>
<if test="param.systemCode != null and param.systemCode != ''">AND <if test="param.systemCode != null and param.systemCode != ''">AND
wlesal.system_codes = #{systemCode} wlesal.system_codes = #{param.systemCode}
</if> </if>
<if test="param.cleanStatus != null and param.cleanStatus != '' and param.cleanStatus == 2">AND <if test="param.cleanStatus != null and param.cleanStatus != '' and param.cleanStatus == 2">AND
wlesal.clean_time IS NULL wlesal.clean_time IS NULL
......
...@@ -522,7 +522,7 @@ ...@@ -522,7 +522,7 @@
</select> </select>
<!-- 根据信号索引查询装备性能指标 --> <!-- 根据信号索引查询装备性能指标 -->
<select id="getEquipmentSpeIndexByIndexAddress" <select id="getEquipmentSpeIndexByAddress"
resultType="com.yeejoin.equipmanage.common.entity.EquipmentSpecificIndex"> resultType="com.yeejoin.equipmanage.common.entity.EquipmentSpecificIndex">
SELECT wesi.id AS id, SELECT wesi.id AS id,
wei.name_key AS nameKey, wei.name_key AS nameKey,
...@@ -561,10 +561,16 @@ ...@@ -561,10 +561,16 @@
LEFT JOIN wl_equipment_specific AS wes ON wes.id = wesi.equipment_specific_id LEFT JOIN wl_equipment_specific AS wes ON wes.id = wesi.equipment_specific_id
LEFT JOIN wl_equipment_detail ed ON ed.id = wes.equipment_detail_id LEFT JOIN wl_equipment_detail ed ON ed.id = wes.equipment_detail_id
LEFT JOIN wl_equipment_index AS wei ON wei.id = wesi.equipment_index_id LEFT JOIN wl_equipment_index AS wei ON wei.id = wesi.equipment_index_id
WHERE <where>
wesi.index_address = #{indexAddress} <if test="indexAddress != null">
AND wesi.index_address = #{indexAddress}
</if>
<if test="eventAddress != null">
AND wesi.event_address = #{eventAddress}
</if>
<if test="gatewayId != null"> <if test="gatewayId != null">
AND wesi.gateway_id = #{gatewayId} AND wesi.gateway_id = #{gatewayId}
</if> </if>
</where>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
</parent> </parent>
<artifactId>amos-boot-system-patrol</artifactId> <artifactId>amos-boot-system-patrol</artifactId>
<version>3.7.0.9</version> <version>3.7.1.0</version>
<dependencies> <dependencies>
<dependency> <dependency>
......
...@@ -1455,4 +1455,135 @@ ...@@ -1455,4 +1455,135 @@
</if> </if>
</select> </select>
<select id="queryPatrolInfoList" resultType="Map">
SELECT
IFNULL(COUNT(temp.plan_task_id), 0) AS task_count,
IFNULL(SUM(IF(finish_status=2, 1, 0)), 0) AS complete_task_count,
IFNULL(SUM(IF((finish_status=0 OR finish_status=1 OR finish_status=3), 1, 0)), 0) AS uncomplete_task_count,
temp.person_count AS person_count,
temp.certified_person_count AS certified_person_count,
IFNULL(SUM(temp.point_num), 0) AS checked_point_count
FROM
(
SELECT
pt.id AS task_id,
r.`name` route_name,
pt.route_id,
p.`name` plan_name,
pt.plan_id,
pt.id AS plan_task_id,
pt.begin_time,
pt.end_time,
pt.user_name,
pt.user_id,
IF
(
pt.user_id IS NOT NULL,(
LENGTH( pt.user_id ) - LENGTH(
REPLACE ( pt.user_id, ',', '' )) + 1
),
0
) AS person_count,
(
SELECT
IF
(
SUM( is_certificate ) IS NULL,
0,
SUM( is_certificate ))
FROM
`cb_org_usr`
WHERE
FIND_IN_SET( amos_org_id, pt.user_id ) > 0
) AS certified_person_count,
pt.point_num,
pt.finish_num,
pt.finish_status,
p.org_code,
p.biz_org_code AS biz_org_code,
p.biz_org_name AS biz_org_name,
pt.end_time AS `date`
FROM
`p_plan_task` pt
LEFT JOIN p_plan p ON p.id = pt.plan_id
LEFT JOIN p_route r ON r.id = pt.route_id
<where>
<if test="bizOrgCode != null">
p.biz_org_code LIKE CONCAT(#{bizOrgCode}, '%')
</if>
<if test="startDate != null">
AND DATE_FORMAT(pt.end_time, '%Y-%m-%d') &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
</if>
<if test="endDate != null">
AND DATE_FORMAT(pt.end_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
</if>
</where>
) temp
</select>
<select id="queryPatrolEquipInfo" resultType="Map">
SELECT
IFNULL(COUNT(temp.eq_id IS NOT NULL), 0) AS equipment_count,
IFNULL(SUM(IF((temp.check_status=2 OR temp.check_status=1 AND temp.eq_id IS NOT NULL), 1, 0)), 0) AS checked_equipment_count,
IFNULL(SUM(IF((temp.check_status=3 AND temp.eq_id IS NOT NULL), 1, 0)), 0) AS unchecked_equipment_count
FROM
(
SELECT
ci.id,
es.org_code,
pp.biz_org_code AS biz_org_code,
pp.biz_org_name AS biz_org_name,
c.point_id,
c.point_name,
ci.input_name,
ci.input_value,
c.check_time,
pt.end_time AS `date`,
c.plan_id,
c.plan_name,
c.route_id,
c.route_name,
ci.is_ok AS check_status,
c.user_id,
c.user_name,
c.dep_id,
c.dep_name,
es.id AS eq_id,
es.NAME eq_name,
es.`code` eq_code,
( SELECT GROUP_CONCAT( ffs.NAME ) FROM f_fire_fighting_system ffs WHERE find_in_set( ffs.id, es.system_id ) ) AS system_name,
CONCAT( pt.id, '' ) AS plan_task_id,
pt.end_time AS plan_completion_time,
c.id AS check_id,
p.point_no,
cou.`code` AS company_code,
es.equipment_code AS equipment_type_code,
pii.item_no AS input_code,
p.point_no AS pointCode,
wws.`code` AS buildCode,
wws.full_name AS buildName
FROM
p_check_input ci
LEFT JOIN p_input_item pii ON pii.id = ci.input_id
LEFT JOIN p_check c ON c.id = ci.check_id
LEFT JOIN p_plan_task pt ON pt.id = c.plan_task_id
left join p_plan pp on pp.id = pt.plan_id
LEFT JOIN p_point_classify pc ON pc.id = ci.point_classify_id
LEFT JOIN wl_equipment_specific es ON es.id = pc.equipment_id
LEFT JOIN p_point p ON c.point_id = p.id
LEFT JOIN wl_warehouse_structure wws ON wws.id = p.risk_source_id
left join cb_org_usr cou on cou.biz_org_code = pp.biz_org_code and cou.is_delete = 0
<where>
<if test="bizOrgCode != null">
pp.biz_org_code LIKE CONCAT(#{bizOrgCode}, '%')
</if>
<if test="startDate != null">
AND DATE_FORMAT(pt.end_time, '%Y-%m-%d') &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
</if>
<if test="endDate != null">
AND DATE_FORMAT(pt.end_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
</if>
</where>
) temp
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -25,8 +25,9 @@ import static com.yeejoin.amos.message.kafka.Constant.*; ...@@ -25,8 +25,9 @@ import static com.yeejoin.amos.message.kafka.Constant.*;
@Slf4j @Slf4j
@Service @Service
public class KafkaConsumerService { public class KafkaConsumerService {
private static final String MQTT_TOPIC = "romaSite/data/transmit"; private static final String MQTT_TOPIC = "romaSite/data/transmit";
private static final String MQTT_TOPIC_SHAOSHAN = "romaSite/data/shaoshan";
private static final String PROVINCE_MQTT_TOPIC = "province/data/transport"; private static final String PROVINCE_MQTT_TOPIC = "province/data/transport";
@Autowired @Autowired
protected EmqKeeper emqKeeper; protected EmqKeeper emqKeeper;
...@@ -96,28 +97,68 @@ public class KafkaConsumerService { ...@@ -96,28 +97,68 @@ public class KafkaConsumerService {
} }
/** /**
* 消费单条消息,topics 可以监听多个topic,如:topics = {"topic1", "topic2"}
*
* @param message 消息
*
*/
@KafkaListener(id = "consumerSingle", idIsGroup = false, topics = "#{'${kafka.topics}'.split(',')}", concurrency = "2")
public void consumerSingle(String message, Acknowledgment ack) {
JSONObject messageObj = JSONObject.fromObject(message);
try {
String topic = messageObj.getString("topic");
JSONObject data = messageObj.getJSONObject("data");
emqKeeper.getMqttClient().publish(topic, data.toString().getBytes(StandardCharsets.UTF_8), 0, false);
ack.acknowledge();
} catch (MqttException e) {
log.error("解析数据失败,{}", e.getMessage());
}
}
/**
* 转发苏州,绍兴换流站Kafka数据对emq * 转发苏州,绍兴换流站Kafka数据对emq
* *
* @param record record * @param record record
* @param ack ack * 绍兴,苏州换流站对接Kafka数据
* @param record record
*/ */
@KafkaListener(id = "kafkaRoma", groupId = "kafkaRoma", topics = "#{'${queue.kafka.topics}'.split(',')}", containerFactory = "kafkaRomaContainerFactory") @KafkaListener(id = "kafkaRoma", groupId = "kafkaRoma", topics = "#{'${queue.kafka.topics}'.split(',')}", containerFactory = "kafkaRomaContainerFactory")
public void kafkaListener(ConsumerRecord<?, String> record, Acknowledgment ack) { public void kafkaListener(ConsumerRecord<?, String> record, Acknowledgment ack) {
try {
Optional<?> messages = Optional.ofNullable(record.value()); Optional<?> messages = Optional.ofNullable(record.value());
if (messages.isPresent()) { if (messages.isPresent()) {
try {
JSONObject messageObj = JSONObject.fromObject(record.value()); JSONObject messageObj = JSONObject.fromObject(record.value());
if (messageObj.getJSONObject(BODY).isEmpty()) { if (messageObj.getJSONObject(BODY).isEmpty()) {
messageObj.put(DATA_TYPE, STATE); messageObj.put(DATA_TYPE, STATE);
} }
emqKeeper.getMqttClient().publish(MQTT_TOPIC, messageObj.toString().getBytes(StandardCharsets.UTF_8), 0, false); emqKeeper.getMqttClient().publish(MQTT_TOPIC, messageObj.toString().getBytes(StandardCharsets.UTF_8), 0, false);
}
} catch (MqttException e) { } catch (MqttException e) {
log.error("换流站转发Kafka消息失败" + e.getMessage(), e); log.error("解析数据失败,{}", e.getMessage());
} finally { } finally {
ack.acknowledge(); ack.acknowledge();
} }
} }
}
/**
* 韶山换流对接Kafka
* @param record record
* @param ack ack
*/
@KafkaListener(id = "kafkaConsumer", groupId = "kafkaConsumerGroup", topics = "#{'${queue.kafka.shaoshan.topics}'.split(',')}", containerFactory = "kafkaRomaContainerFactory")
public void kafkaConsumer(ConsumerRecord<?, String> record, Acknowledgment ack) {
Optional<?> message = Optional.ofNullable(record.value());
if (message.isPresent()) {
try {
JSONObject messageObj = JSONObject.fromObject(record.value());
JSONObject data = messageObj.getJSONObject("body");
emqKeeper.getMqttClient().publish(MQTT_TOPIC_SHAOSHAN, data.toString().getBytes(StandardCharsets.UTF_8), 0, false);
ack.acknowledge();
} catch (MqttException e) {
log.error("解析数据失败,{}", e.getMessage());
}
}
}
///** ///**
...@@ -212,7 +253,6 @@ public class KafkaConsumerService { ...@@ -212,7 +253,6 @@ public class KafkaConsumerService {
// } // }
// //
// //
//
//kafka的监听器,topic为"zhTest",消费者组为"zhTestGroup" //kafka的监听器,topic为"zhTest",消费者组为"zhTestGroup"
//@KafkaListener(topics = "test", groupId = "zhTestGroup") //@KafkaListener(topics = "test", groupId = "zhTestGroup")
//public void listenZhugeGroup(ConsumerRecord<String, String> record, Acknowledgment ack) { //public void listenZhugeGroup(ConsumerRecord<String, String> record, Acknowledgment ack) {
...@@ -222,6 +262,14 @@ public class KafkaConsumerService { ...@@ -222,6 +262,14 @@ public class KafkaConsumerService {
// //手动提交offset // //手动提交offset
// ack.acknowledge(); // ack.acknowledge();
//} //}
}
// //kafka的监听器,topic为"zhTest",消费者组为"zhTestGroup"
// @KafkaListener(topics = "test", groupId = "zhTestGroup")
// public void listenZhugeGroup(ConsumerRecord<String, String> record, Acknowledgment ack) {
// String value = record.value();
// System.out.println(value);
// System.out.println(record);
// //手动提交offset
// ack.acknowledge();
// }
}
...@@ -351,4 +351,16 @@ ...@@ -351,4 +351,16 @@
<module>amos-boot-system-tdc</module> <module>amos-boot-system-tdc</module>
<module>amos-boot-system-kgd</module> <module>amos-boot-system-kgd</module>
</modules> </modules>
<build>
<plugins>
<plugin><!--编译跳过测试文件检查的生命周期-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment