Browse Source

消息红点问题处理

hejq 8 years ago
parent
commit
8c1b8a521d
46 changed files with 1416 additions and 962 deletions
  1. 529 525
      pom.xml
  2. 15 20
      src/main/java/com/uas/platform/b2b/controller/FileController.java
  3. 14 17
      src/main/java/com/uas/platform/b2b/controller/MakeOrderController.java
  4. 4 28
      src/main/java/com/uas/platform/b2b/controller/PurchaseTenderController.java
  5. 16 33
      src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java
  6. 13 17
      src/main/java/com/uas/platform/b2b/controller/SaleInquiryMouldController.java
  7. 18 20
      src/main/java/com/uas/platform/b2b/controller/SaleNoticeController.java
  8. 14 21
      src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java
  9. 15 33
      src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java
  10. 3 22
      src/main/java/com/uas/platform/b2b/controller/SaleSampleController.java
  11. 23 80
      src/main/java/com/uas/platform/b2b/controller/SnapshotController.java
  12. 18 0
      src/main/java/com/uas/platform/b2b/dao/MakeOrderDao.java
  13. 3 1
      src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryItemDao.java
  14. 19 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryMouldDao.java
  15. 19 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseNoticeDao.java
  16. 23 5
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderChangeDao.java
  17. 11 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java
  18. 19 0
      src/main/java/com/uas/platform/b2b/dao/PurchaseProofingItemDao.java
  19. 14 1
      src/main/java/com/uas/platform/b2b/dao/UserOrderDao.java
  20. 9 6
      src/main/java/com/uas/platform/b2b/service/MakeOrderService.java
  21. 9 6
      src/main/java/com/uas/platform/b2b/service/PurchaseInquiryMouldService.java
  22. 3 1
      src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java
  23. 3 1
      src/main/java/com/uas/platform/b2b/service/PurchaseNoticeService.java
  24. 5 2
      src/main/java/com/uas/platform/b2b/service/PurchaseOrderChangeService.java
  25. 16 5
      src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java
  26. 2 1
      src/main/java/com/uas/platform/b2b/service/PurchaseProofingService.java
  27. 2 1
      src/main/java/com/uas/platform/b2b/service/PurchaseTenderService.java
  28. 57 5
      src/main/java/com/uas/platform/b2b/service/impl/MakeOrderServiceImpl.java
  29. 4 3
      src/main/java/com/uas/platform/b2b/service/impl/PagingReleaseDetailServiceImpl.java
  30. 57 5
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryMouldServiceImpl.java
  31. 56 23
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java
  32. 117 38
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java
  33. 64 8
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderChangeServiceImpl.java
  34. 59 6
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java
  35. 32 5
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseProofingServiceImpl.java
  36. 39 15
      src/main/java/com/uas/platform/b2b/service/impl/PurchaseTenderServiceImpl.java
  37. 1 1
      src/main/resources/spring/context.xml
  38. 61 1
      src/main/webapp/resources/js/index/app.js
  39. 4 0
      src/main/webapp/resources/js/index/services/Make.js
  40. 20 0
      src/main/webapp/resources/js/index/services/Purc.js
  41. 1 1
      src/main/webapp/resources/tpl/index/make/order.html
  42. 1 1
      src/main/webapp/resources/tpl/index/sale/change.html
  43. 1 1
      src/main/webapp/resources/tpl/index/sale/inquiry.html
  44. 1 1
      src/main/webapp/resources/tpl/index/sale/inquiry_mould.html
  45. 1 1
      src/main/webapp/resources/tpl/index/sale/notice.html
  46. 1 1
      src/main/webapp/resources/tpl/index/sale/order.html

+ 529 - 525
pom.xml

@@ -1,530 +1,534 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>platform-b2b</artifactId>
-	<packaging>war</packaging>
-	<name>platform-b2b Maven Webapp</name>
-	<url>http://maven.apache.org</url>
-	<parent>
-		<groupId>com.uas.platform</groupId>
-		<artifactId>platform</artifactId>
-		<version>0.0.1-SNAPSHOT</version>
-	</parent>
-	<profiles>
-		<profile>
-			<!-- 开发环境 -->
-			<id>dev</id>
-			<properties>
-				<profile>dev</profile>
-				<!-- static plugin -->
-				<static-path>static</static-path>
-			</properties>
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>platform-b2b</artifactId>
+    <packaging>war</packaging>
+    <name>platform-b2b Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <parent>
+        <groupId>com.uas.platform</groupId>
+        <artifactId>platform</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>../platform</relativePath>
+    </parent>
+    <profiles>
+        <profile>
+            <!-- 开发环境 -->
+            <id>dev</id>
+            <properties>
+                <profile>dev</profile>
+                <!-- static plugin -->
+                <static-path>static</static-path>
+            </properties>
 
-		</profile>
-		<profile>
-			<!-- 测试环境 -->
-			<id>test</id>
-			<properties>
-				<profile>test</profile>
-				<!-- static plugin -->
-				<static-path>static</static-path>
-			</properties>
-		</profile>
-		<profile>
-			<!-- 生产环境 -->
-			<id>prod</id>
-			<properties>
-				<profile>prod</profile>
-				<!-- static plugin -->
-				<static-path>http://static.ubtob.com</static-path>
-			</properties>
-			<!-- 默认 -->
-			<activation>
-				<activeByDefault>true</activeByDefault>
-			</activation>
-		</profile>
-	</profiles>
-	<dependencies>
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>com.uas.platform</groupId>
-			<artifactId>platform-core</artifactId>
-		</dependency>
-		<!-- spring -->
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-context</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-context-support</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-webmvc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-jdbc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-tx</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-aop</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-aspects</artifactId>
-		</dependency>
-		<!-- jpa -->
-		<dependency>
-			<groupId>org.springframework.data</groupId>
-			<artifactId>spring-data-jpa</artifactId>
-		</dependency>
-		<!-- -->
-		<dependency>
-			<groupId>commons-fileupload</groupId>
-			<artifactId>commons-fileupload</artifactId>
-			<version>1.3.1</version>
-		</dependency>
-		<!-- sendMsg -->
-		<dependency>
-			<groupId>org.apache.axis</groupId>
-			<artifactId>axis</artifactId>
-			<version>1.6.0</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.axis.jaxrpc</groupId>
-			<artifactId>axis-jaxrpc</artifactId>
-			<version>1.4</version>
-		</dependency>
-		<dependency>
-			<groupId>commons-discovery</groupId>
-			<artifactId>commons-discovery</artifactId>
-			<version>0.4</version>
-		</dependency>
-		<dependency>
-			<groupId>com.ibm</groupId>
-			<artifactId>wsdl4j</artifactId>
-			<version>1.4</version>
-		</dependency>
+        </profile>
+        <profile>
+            <!-- 测试环境 -->
+            <id>test</id>
+            <properties>
+                <profile>test</profile>
+                <!-- static plugin -->
+                <static-path>static</static-path>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <!-- 生产环境 -->
+            <id>prod</id>
+            <properties>
+                <profile>prod</profile>
+                <!-- static plugin -->
+                <static-path>http://static.ubtob.com</static-path>
+            </properties>
+            <!-- 默认 -->
 
-		<!-- hibernate -->
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-entitymanager</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>cglib</groupId>
-					<artifactId>cglib</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>dom4j</groupId>
-					<artifactId>dom4j</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>commons-collections</groupId>
-			<artifactId>commons-collections</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-validator</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.aspectj</groupId>
-			<artifactId>aspectjrt</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.aspectj</groupId>
-			<artifactId>aspectjweaver</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-lang3</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>javax.validation</groupId>
-			<artifactId>validation-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>javax.transaction</groupId>
-			<artifactId>jta</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-ehcache</artifactId>
-		</dependency>
-		<!-- jdbc -->
-		<dependency>
-			<groupId>com.oracle</groupId>
-			<artifactId>ojdbc6</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-orm</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-pool</groupId>
-			<artifactId>commons-pool</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.alibaba</groupId>
-			<artifactId>druid</artifactId>
-		</dependency>
-		<!-- spring mobile -->
-		<dependency>
-			<groupId>org.springframework.mobile</groupId>
-			<artifactId>spring-mobile-device</artifactId>
-		</dependency>
-		<!--json-lib -->
-		<dependency>
-			<groupId>net.sf.json-lib</groupId>
-			<artifactId>json-lib</artifactId>
-			<classifier>jdk15</classifier>
-		</dependency>
-		<dependency>
-			<groupId>org.codehaus.jackson</groupId>
-			<artifactId>jackson-core-asl</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.codehaus.jackson</groupId>
-			<artifactId>jackson-mapper-asl</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-databind</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-annotations</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.alibaba</groupId>
-			<artifactId>fastjson</artifactId>
-		</dependency>
-		<!-- velocity -->
-		<dependency>
-			<groupId>org.apache.velocity</groupId>
-			<artifactId>velocity</artifactId>
-		</dependency>
-		<!-- mail -->
-		<dependency>
-			<groupId>javax.mail</groupId>
-			<artifactId>mail</artifactId>
-		</dependency>
-		<!-- xinge -->
-		<dependency>
-			<groupId>tencent</groupId>
-			<artifactId>xinge</artifactId>
-			<version>1.1.4</version>
-		</dependency>
-		<!-- jxls -->
-		<dependency>
-			<groupId>net.sf.jxls</groupId>
-			<artifactId>jxls-core</artifactId>
-			<version>1.0.4</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.jxls</groupId>
-			<artifactId>jxls-reader</artifactId>
-			<version>1.0.4</version>
-		</dependency>
-		<!-- redis -->
-		<dependency>
-			<groupId>redis.clients</groupId>
-			<artifactId>jedis</artifactId>
-			<version>2.7.3</version>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.data</groupId>
-			<artifactId>spring-data-redis</artifactId>
-			<version>1.6.0.RELEASE</version>
-		</dependency>
-		<!-- 邮件 -->
-		<dependency>
-			<groupId>com.uas.message</groupId>
-			<artifactId>message-mail-api</artifactId>
-		</dependency>
-		<!-- 消息-->
-		<dependency>
-			<groupId>com.uas.message</groupId>
-			<artifactId>message-sms-api</artifactId>
-		</dependency>
-	
-		<dependency>
-			<groupId>com.uas.account</groupId>
-			<artifactId>account-common</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-		</dependency>
+        </profile>
+    </profiles>
+    <dependencies>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.uas.platform</groupId>
+            <artifactId>platform-core</artifactId>
+        </dependency>
+        <!-- spring -->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-jdbc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-tx</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aspects</artifactId>
+        </dependency>
+        <!-- jpa -->
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-jpa</artifactId>
+        </dependency>
+        <!-- -->
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.3.1</version>
+        </dependency>
+        <!-- sendMsg -->
+        <dependency>
+            <groupId>org.apache.axis</groupId>
+            <artifactId>axis</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis.jaxrpc</groupId>
+            <artifactId>axis-jaxrpc</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-discovery</groupId>
+            <artifactId>commons-discovery</artifactId>
+            <version>0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.ibm</groupId>
+            <artifactId>wsdl4j</artifactId>
+            <version>1.4</version>
+        </dependency>
 
-		<!-- dubbo -->
-		<dependency>
-			<groupId>com.alibaba</groupId>
-			<artifactId>dubbo</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>javax.servlet</groupId>
-					<artifactId>javax.servlet-api</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>org.apache.httpcomponents</groupId>
-					<artifactId>httpcore</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>com.github.sgroschupf</groupId>
-			<artifactId>zkclient</artifactId>
-		</dependency>
-		<!-- hessian -->
-		<dependency>
-			<groupId>com.caucho</groupId>
-			<artifactId>hessian</artifactId>
-		</dependency>
-		<!-- search on dubbo -->
-		<dependency>
-			<groupId>com.uas.search</groupId>
-			<artifactId>search-api-b2b</artifactId>
-			<version>0.1.9-SNAPSHOT</version>
-		</dependency>
-		<!-- dfs on dubbo -->
-		<dependency>
-			<groupId>com.uas.dfs</groupId>
-			<artifactId>dfs-api</artifactId>
-		</dependency>
-	</dependencies>
-	<build>
-		<finalName>platform-b2b</finalName>
-		<!-- 受profile影响的目录 -->
-		<resources>
-			<resource>
-				<directory>${basedir}/src/main/resources</directory>
-				<filtering>true</filtering>
-				<excludes>
-					<exclude>**/*.xls</exclude>
-				</excludes>
-			</resource>
-			<!-- xls文件不能filter处理,需区分出来 -->
-			<resource>
-				<directory>${basedir}/src/main/resources</directory>
-				<filtering>false</filtering>
-				<includes>
-					<include>**/*.xls</include>
-				</includes>
-			</resource>
-		</resources>
-		<!-- 在maven生命周期validate阶段生成timestamp -->
-		<plugins>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>buildnumber-maven-plugin</artifactId>
-				<version>1.3</version>
-				<executions>
-					<execution>
-						<phase>validate</phase>
-						<goals>
-							<goal>create-timestamp</goal>
-						</goals>
-					</execution>
-				</executions>
-				<configuration>
-					<format>{0,date,yyyy-MM-dd HH:mm:ss}</format>
-					<items>
-						<item>timestamp</item>
-					</items>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<configuration>
-					<source>1.7</source>
-					<target>1.7</target>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>com.samaxes.maven</groupId>
-				<artifactId>minify-maven-plugin</artifactId>
-				<version>1.7.4</version>
-				<!-- 静态文件压缩  -->
-				<executions>
-					<execution>
-						<id>default-minify</id>
-						<phase>prepare-package</phase>
-						<configuration>
-							<charset>UTF-8</charset>
-							<skipMerge>true</skipMerge>
-							<closureLanguage>ECMASCRIPT5</closureLanguage>
-							<closureAngularPass>true</closureAngularPass>
-							<nosuffix>true</nosuffix>
-							<webappTargetDir>${project.build.directory}/minify</webappTargetDir>
-							<cssSourceDir>resources</cssSourceDir>
-							<cssEngine>YUI</cssEngine>
-							<jsSourceDir>resources</jsSourceDir>
-							<jsEngine>CLOSURE</jsEngine>
-							<cssSourceIncludes>
-								<cssSourceInclude>css/**/*.css</cssSourceInclude>
-								<cssSourceInclude>data/**/*.json</cssSourceInclude>
-							</cssSourceIncludes>
-							<cssSourceExcludes>
-								<cssSourceExclude>css/**/*.min.css</cssSourceExclude>
-							</cssSourceExcludes>
-							<jsSourceIncludes>
-								<jsSourceInclude>js/**/*.js</jsSourceInclude>
-							</jsSourceIncludes>
-							<jsSourceExcludes>
-								<jsSourceExclude>js/**/*.min.js</jsSourceExclude>
-							</jsSourceExcludes>
-						</configuration>
-						<goals>
-							<goal>minify</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-resources-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>copy-resources</id>
-						<phase>prepare-package</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>${project.build.directory}/minify</outputDirectory>
-							<overwrite>false</overwrite>
-							<resources>
-								<resource>
-									<directory>${basedir}/src/main/webapp</directory>
-								</resource>
-							</resources>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>com.uas.plugins</groupId>
-				<artifactId>static-maven-plugin</artifactId>
-				<version>0.0.2-SNAPSHOT</version>
-				<!-- 静态资源分离  -->
-				<executions>
-					<execution>
-						<id>default-static</id>
-						<phase>prepare-package</phase>
-						<configuration>
-							<pathMatcher>static</pathMatcher>
-							<staticUrl>${static-path}</staticUrl>
-							<webappDir>${project.build.directory}/minify</webappDir>
-							<sourceDir>/</sourceDir>
-							<targetDir>${project.build.directory}/statics</targetDir>
-							<staticDir>/</staticDir>
-							<sourceIncludes>
-								<sourceInclude>resources/js/**/*.js</sourceInclude>
-								<sourceInclude>resources/data/**/*.json</sourceInclude>
-								<sourceInclude>resources/tpl/**/*.html</sourceInclude>
-								<sourceInclude>WEB-INF/views/**/*.html</sourceInclude>
-							</sourceIncludes>
-							<!--http://static.ubtob.com/css/index.css?_v=1450321871828-->
-							<versionSuffix>
-								<suffix>?_v=${timestamp}</suffix>
-								<exclude>*/require.js,*.min.js,*.min.css</exclude>
-							</versionSuffix>
-						</configuration>
-						<goals>
-							<goal>static</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-war-plugin</artifactId>
-				<version>2.4</version>
-				<configuration>
-					<webResources>
-						<resource>
-							<directory>${project.build.directory}/statics</directory>
-						</resource>
-						<resource>
-							<directory>${project.build.directory}/minify</directory>
-						</resource>
-					</webResources>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.tomcat.maven</groupId>
-				<artifactId>tomcat7-maven-plugin</artifactId>
-				<version>2.2</version>
-				<configuration>
-					<port>8090</port>
-					<path>/platform-b2b</path>
-					<uriEncoding>utf-8</uriEncoding>
-				</configuration>
-			</plugin>
-		</plugins>
-		<pluginManagement>
-			<plugins>
-				<plugin>
-					<groupId>org.eclipse.m2e</groupId>
-					<artifactId>lifecycle-mapping</artifactId>
-					<version>1.0.0</version>
-					<configuration>
-						<lifecycleMappingMetadata>
-							<pluginExecutions>
-								<pluginExecution>
-									<pluginExecutionFilter>
-										<groupId>
-											org.codehaus.mojo
-										</groupId>
-										<artifactId>
-											buildnumber-maven-plugin
-										</artifactId>
-										<versionRange>
-											[1.3,)
-										</versionRange>
-										<goals>
-											<goal>
-												create-timestamp
-											</goal>
-										</goals>
-									</pluginExecutionFilter>
-									<action>
-										<ignore></ignore>
-									</action>
-								</pluginExecution>
-							</pluginExecutions>
-						</lifecycleMappingMetadata>
-					</configuration>
-				</plugin>
-			</plugins>
-		</pluginManagement>
-	</build>
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<maven.compiler.source>1.7</maven.compiler.source>
-		<maven.compiler.target>1.7</maven.compiler.target>
-		<skipTests>true</skipTests>
-	</properties>
+        <!-- hibernate -->
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-entitymanager</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>cglib</groupId>
+                    <artifactId>cglib</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>dom4j</groupId>
+                    <artifactId>dom4j</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjrt</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.transaction</groupId>
+            <artifactId>jta</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-ehcache</artifactId>
+        </dependency>
+        <!-- jdbc -->
+        <dependency>
+            <groupId>com.oracle</groupId>
+            <artifactId>ojdbc6</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-pool</groupId>
+            <artifactId>commons-pool</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+        </dependency>
+        <!-- spring mobile -->
+        <dependency>
+            <groupId>org.springframework.mobile</groupId>
+            <artifactId>spring-mobile-device</artifactId>
+        </dependency>
+        <!--json-lib -->
+        <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <classifier>jdk15</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-core-asl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-mapper-asl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+        <!-- velocity -->
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity</artifactId>
+        </dependency>
+        <!-- mail -->
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+        </dependency>
+        <!-- xinge -->
+        <dependency>
+            <groupId>tencent</groupId>
+            <artifactId>xinge</artifactId>
+            <version>1.1.4</version>
+        </dependency>
+        <!-- jxls -->
+        <dependency>
+            <groupId>net.sf.jxls</groupId>
+            <artifactId>jxls-core</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sf.jxls</groupId>
+            <artifactId>jxls-reader</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <!-- redis -->
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>2.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-redis</artifactId>
+            <version>1.6.0.RELEASE</version>
+        </dependency>
+        <!-- 邮件 -->
+        <dependency>
+            <groupId>com.uas.message</groupId>
+            <artifactId>message-mail-api</artifactId>
+        </dependency>
+        <!-- 消息-->
+        <dependency>
+            <groupId>com.uas.message</groupId>
+            <artifactId>message-sms-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.uas.account</groupId>
+            <artifactId>account-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <!-- dubbo -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>javax.servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.httpcomponents</groupId>
+                    <artifactId>httpcore</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.github.sgroschupf</groupId>
+            <artifactId>zkclient</artifactId>
+        </dependency>
+        <!-- hessian -->
+        <dependency>
+            <groupId>com.caucho</groupId>
+            <artifactId>hessian</artifactId>
+        </dependency>
+        <!-- search on dubbo -->
+        <dependency>
+            <groupId>com.uas.search</groupId>
+            <artifactId>search-api-b2b</artifactId>
+            <version>0.1.9-SNAPSHOT</version>
+        </dependency>
+        <!-- dfs on dubbo -->
+        <dependency>
+            <groupId>com.uas.dfs</groupId>
+            <artifactId>dfs-api</artifactId>
+        </dependency>
+    </dependencies>
+    <build>
+        <finalName>platform-b2b</finalName>
+        <!-- 受profile影响的目录 -->
+        <resources>
+            <resource>
+                <directory>${basedir}/src/main/resources</directory>
+                <filtering>true</filtering>
+                <excludes>
+                    <exclude>**/*.xls</exclude>
+                </excludes>
+            </resource>
+            <!-- xls文件不能filter处理,需区分出来 -->
+            <resource>
+                <directory>${basedir}/src/main/resources</directory>
+                <filtering>false</filtering>
+                <includes>
+                    <include>**/*.xls</include>
+                </includes>
+            </resource>
+        </resources>
+        <!-- 在maven生命周期validate阶段生成timestamp -->
+        <plugins>
+            <!--<plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>buildnumber-maven-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>create-timestamp</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <configuration>
+                        <format>{0,date,yyyy-MM-dd HH:mm:ss}</format>
+                        <items>
+                            <item>timestamp</item>
+                        </items>
+                    </configuration>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>com.samaxes.maven</groupId>
+                <artifactId>minify-maven-plugin</artifactId>
+                <version>1.7.4</version>
+                &lt;!&ndash; 静态文件压缩  &ndash;&gt;
+                <executions>
+                    <execution>
+                        <id>default-minify</id>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <charset>UTF-8</charset>
+                            <skipMerge>true</skipMerge>
+                            <closureLanguage>ECMASCRIPT5</closureLanguage>
+                            <closureAngularPass>true</closureAngularPass>
+                            <nosuffix>true</nosuffix>
+                            <webappTargetDir>${project.build.directory}/minify</webappTargetDir>
+                            <cssSourceDir>resources</cssSourceDir>
+                            <cssEngine>YUI</cssEngine>
+                            <jsSourceDir>resources</jsSourceDir>
+                            <jsEngine>CLOSURE</jsEngine>
+                            <cssSourceIncludes>
+                                <cssSourceInclude>css/**/*.css</cssSourceInclude>
+                                <cssSourceInclude>data/**/*.json</cssSourceInclude>
+                            </cssSourceIncludes>
+                            <cssSourceExcludes>
+                                <cssSourceExclude>css/**/*.min.css</cssSourceExclude>
+                            </cssSourceExcludes>
+                            <jsSourceIncludes>
+                                <jsSourceInclude>js/**/*.js</jsSourceInclude>
+                            </jsSourceIncludes>
+                            <jsSourceExcludes>
+                                <jsSourceExclude>js/**/*.min.js</jsSourceExclude>
+                            </jsSourceExcludes>
+                        </configuration>
+                        <goals>
+                            <goal>minify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/minify</outputDirectory>
+                            <overwrite>false</overwrite>
+                            <resources>
+                                <resource>
+                                    <directory>${basedir}/src/main/webapp</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.uas.plugins</groupId>
+                <artifactId>static-maven-plugin</artifactId>
+                <version>0.0.2-SNAPSHOT</version>
+                &lt;!&ndash; 静态资源分离  &ndash;&gt;
+                <executions>
+                    <execution>
+                        <id>default-static</id>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <pathMatcher>static</pathMatcher>
+                            <staticUrl>${static-path}</staticUrl>
+                            <webappDir>${project.build.directory}/minify</webappDir>
+                            <sourceDir>/</sourceDir>
+                            <targetDir>${project.build.directory}/statics</targetDir>
+                            <staticDir>/</staticDir>
+                            <sourceIncludes>
+                                <sourceInclude>resources/js/**/*.js</sourceInclude>
+                                <sourceInclude>resources/data/**/*.json</sourceInclude>
+                                <sourceInclude>resources/tpl/**/*.html</sourceInclude>
+                                <sourceInclude>WEB-INF/views/**/*.html</sourceInclude>
+                            </sourceIncludes>
+                            http://static.ubtob.com/css/index.css?_v=1450321871828
+                            <versionSuffix>
+                                <suffix>?_v=${timestamp}</suffix>
+                                <exclude>*/require.js,*.min.js,*.min.css</exclude>
+                            </versionSuffix>
+                        </configuration>
+                        <goals>
+                            <goal>static</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <webResources>
+                        <resource>
+                            <directory>${project.build.directory}/statics</directory>
+                        </resource>
+                        <resource>
+                            <directory>${project.build.directory}/minify</directory>
+                        </resource>
+                    </webResources>
+                </configuration>
+            </plugin>-->
+            <plugin>
+                <groupId>org.apache.tomcat.maven</groupId>
+                <artifactId>tomcat7-maven-plugin</artifactId>
+                <version>2.2</version>
+                <configuration>
+                    <port>8090</port>
+                    <path>/platform-b2b</path>
+                    <uriEncoding>utf-8</uriEncoding>
+                </configuration>
+            </plugin>
+        </plugins>
+        <!--<pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.eclipse.m2e</groupId>
+                    <artifactId>lifecycle-mapping</artifactId>
+                    <version>1.0.0</version>
+                    <configuration>
+                        <lifecycleMappingMetadata>
+                            <pluginExecutions>
+                                <pluginExecution>
+                                    <pluginExecutionFilter>
+                                        <groupId>
+                                            org.codehaus.mojo
+                                        </groupId>
+                                        <artifactId>
+                                            buildnumber-maven-plugin
+                                        </artifactId>
+                                        <versionRange>
+                                            [1.3,)
+                                        </versionRange>
+                                        <goals>
+                                            <goal>
+                                                create-timestamp
+                                            </goal>
+                                        </goals>
+                                    </pluginExecutionFilter>
+                                    <action>
+                                        <ignore></ignore>
+                                    </action>
+                                </pluginExecution>
+                            </pluginExecutions>
+                        </lifecycleMappingMetadata>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>-->
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.7</maven.compiler.source>
+        <maven.compiler.target>1.7</maven.compiler.target>
+        <skipTests>true</skipTests>
+    </properties>
 </project>

+ 15 - 20
src/main/java/com/uas/platform/b2b/controller/FileController.java

@@ -6,7 +6,8 @@ import com.uas.platform.b2b.dao.AttachDao;
 import com.uas.platform.b2b.dao.CommonDao;
 import com.uas.platform.b2b.model.Attach;
 import com.uas.platform.b2b.service.AttachService;
-import com.uas.platform.b2b.support.FileUploadHttp;
+import com.uas.platform.b2b.support.HttpUtils;
+import com.uas.platform.b2b.temporary.model.FileUrl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
@@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.RestTemplate;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
@@ -92,16 +92,16 @@ public class FileController {
      *
      * @return
      */
-//	@RequestMapping(value = "/refreshPath", method = RequestMethod.GET)
-//    public ModelMap refreshpath() throws IOException {
-//	    ModelMap map = new ModelMap();
-//	    List<Long> successIds = new ArrayList<Long>();
-//        List<Long> failedIds = new ArrayList<Long>();
-//        convertPath(successIds, failedIds);
-//        map.put("successIds", successIds);
-//        map.put("failedIds", failedIds);
-//        return map;
-//    }
+	@RequestMapping(value = "/refreshPath", method = RequestMethod.GET)
+    public ModelMap refreshpath() throws IOException {
+	    ModelMap map = new ModelMap();
+	    List<Long> successIds = new ArrayList<Long>();
+        List<Long> failedIds = new ArrayList<Long>();
+        convertPath(successIds, failedIds);
+        map.put("successIds", successIds);
+        map.put("failedIds", failedIds);
+        return map;
+    }
 
     /**
      * 递归更新所有附件信息
@@ -122,14 +122,9 @@ public class FileController {
                     String name = attach.getName().substring(attach.getName().indexOf(".") + 1, attach.getName().length());
                     try {
                         InputStream in = new FileInputStream(filePath);
-                        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-                        byte[] buffer = new byte[1024];
-                        int len = 0;
-                        while( (len=in.read(buffer)) != -1 ){
-                            outStream.write(buffer, 0, len);
-                        }
-                        in.close();
-                        path = fileClient.upload(outStream.toByteArray(), attach.getSize(), name, null);
+                        HttpUtils.Response response = HttpUtils.upload(FileUrl.FILE_UPLOAD, filePath, null);
+                        JSONObject obj = JSONObject.parseObject(response.getResponseText());
+                        path = (String) obj.get("path");
                     } catch (IOException e) {
                         failedIds.add(attach.getId());
                     } catch (Exception e) {

+ 14 - 17
src/main/java/com/uas/platform/b2b/controller/MakeOrderController.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.controller;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -386,23 +387,19 @@ public class MakeOrderController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = makeOrderService.getMakeOrderCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-            value = Integer.valueOf(objects[0].toString());
-            if(Status.NOT_REPLY.toString().equals(key)){
-                key = "notReply";
-                all = all + value;
-            } else if (Status.REPLIED.toString().equals(key)){
-                key = "replied";
-                all = all + value;
-            }
-            modelMap.put(key, value);
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> count = makeOrderService.getMakeOrderCount("sale");
+		modelMap.putAll(count);
 		return modelMap;
 	}
+
+	/**
+	 * 设置已报价单据为已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setReadByState", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap setReadByState() {
+		Integer count = makeOrderService.setReadByState("sale");
+		return new ModelMap("count", count);
+	}
 }

+ 4 - 28
src/main/java/com/uas/platform/b2b/controller/PurchaseTenderController.java

@@ -971,20 +971,8 @@ public class PurchaseTenderController {
     @ResponseStatus(value = HttpStatus.OK)
     public ModelMap getOrderUnreadCount() {
         final ModelMap modelMap = new ModelMap();
-        List<Object[]> list = purchaseTenderService.getTenderCount("sale");
-        String key;
-        int value;
-        int all = 0;
-        for(Object[] objects : list){
-            key = objects[1].toString();
-            value = Integer.valueOf(objects[0].toString());
-            if("待投标".equals(key)){
-                key = "notReply";
-                modelMap.put(key, value);
-                all = all + value;
-            }
-        }
-        modelMap.put("all", all);
+        Map<String, Integer> count = purchaseTenderService.getTenderCount("sale");
+        modelMap.putAll(count);
         return modelMap;
     }
 
@@ -1022,20 +1010,8 @@ public class PurchaseTenderController {
     @ResponseStatus(value = HttpStatus.OK)
     public ModelMap getPurcOrderUnreadCount() {
         final ModelMap modelMap = new ModelMap();
-        List<Object[]> list = purchaseTenderService.getTenderCount("purc");
-        String key;
-        int value;
-        int all = 0;
-        for(Object[] objects : list){
-            key = objects[1].toString();
-            value = Integer.valueOf(objects[0].toString());
-            if("待评标".equals(key)){
-                key = "notReply";
-                all = all + value;
-                modelMap.put(key, value);
-            }
-        }
-        modelMap.put("all", all);
+        Map<String, Integer> count = purchaseTenderService.getTenderCount("purc");
+        modelMap.putAll(count);
         return modelMap;
     }
 }

+ 16 - 33
src/main/java/com/uas/platform/b2b/controller/SaleInquiryController.java

@@ -38,6 +38,7 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 卖家对询价单的操作
@@ -734,6 +735,17 @@ public class SaleInquiryController {
 		purchaseInquiryService.setReadByOrder("sale", sourceId);
 	}
 
+	/**
+	 * 设置已报价单据为已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setReadByState", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap setReadByState() {
+		Integer count = purchaseInquiryService.setReadByState("sale");
+		return new ModelMap("count", count);
+	}
+
 	/**
 	 * 获得未阅读消息对应的单据id
 	 * @author wangmh
@@ -756,22 +768,8 @@ public class SaleInquiryController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getInquiryUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseInquiryService.getInquiryCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-			if(Status.NOT_REPLY.toString().equals(key)){
-				key = "notReply";
-			} else if (Status.REPLIED.toString().equals(key)){
-				key = "replied";
-			}
-			value = Integer.valueOf(objects[0].toString());
-			modelMap.put(key, value);
-			all = all + value;
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> map = purchaseInquiryService.getInquiryCount("sale");
+		modelMap.putAll(map);
 		return modelMap;
 	}
 
@@ -807,23 +805,8 @@ public class SaleInquiryController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getPurcInquiryUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseInquiryService.getInquiryCount("purc");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-            value = Integer.valueOf(objects[0].toString());
-            if(Status.NOT_REPLY.toString().equals(key)){
-                key = "notReply";
-                all = all + value;
-            } else if (Status.REPLIED.toString().equals(key)){
-                key = "replied";
-                all = all + value;
-            }
-            modelMap.put(key, value);
-        }
-        modelMap.put("all", all);
+		Map<String, Integer> map = purchaseInquiryService.getInquiryCount("purc");
+        modelMap.putAll(map);
 		return modelMap;
 	}
 }

+ 13 - 17
src/main/java/com/uas/platform/b2b/controller/SaleInquiryMouldController.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.controller;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import com.uas.platform.b2b.model.*;
@@ -601,24 +602,19 @@ public class SaleInquiryMouldController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getPurcInquiryUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseInquiryMouldService.getInquiryMouldCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-            key = objects[1].toString();
-            value = Integer.valueOf(objects[0].toString());
-            if(Status.NOT_REPLY.toString().equals(key)){
-                key = "notReply";
-                all = all + value;
-            } else if (Status.REPLIED.toString().equals(key)){
-                key = "replied";
-                all = all + value;
-            }
-            modelMap.put(key, value);
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> count = purchaseInquiryMouldService.getInquiryMouldCount("sale");
+		modelMap.putAll(count);
 		return modelMap;
 	}
 
+	/**
+	 * 设置已报价单据为已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setReadByState", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap setReadByState() {
+		Integer count = purchaseInquiryMouldService.setReadByState("sale");
+		return new ModelMap("count", count);
+	}
 }

+ 18 - 20
src/main/java/com/uas/platform/b2b/controller/SaleNoticeController.java

@@ -4,10 +4,10 @@ import java.io.UnsupportedEncodingException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
-import com.alibaba.fastjson.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -376,8 +376,9 @@ public class SaleNoticeController {
 			logger.log("客户送货提醒", "给单个客户送货提醒填写数量并确认发货", send.sendDescription(), null, noticeId);
 			map.put("id", send.getId());
 			return new ResponseEntity<ModelMap>(map, HttpStatus.OK);
-		} else
+		} else {
 			throw new IllegalOperatorException("程序错误");
+		}
 	}
 
 	/**
@@ -400,8 +401,9 @@ public class SaleNoticeController {
 			logger.log("客户送货提醒", "给同一客户多个送货提醒填写数量并确认发货", send.sendDescription(), null, send.getId());
 			map.put("id", send.getId());
 			return new ResponseEntity<ModelMap>(map, HttpStatus.OK);
-		} else
+		} else {
 			throw new IllegalOperatorException("程序错误");
+		}
 	}
 
 	/**
@@ -853,26 +855,22 @@ public class SaleNoticeController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseNoticeService.getNoticeCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-            value = Integer.valueOf(objects[0].toString());
-            if(Status.NOT_REPLY.toString().equals(key)){
-                key = "notReply";
-                all = all + value;
-            } else if (Status.REPLIED.toString().equals(key)){
-                key = "replied";
-                all = all + value;
-            }
-            modelMap.put(key, value);
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> count = purchaseNoticeService.getNoticeCount("sale");
+		modelMap.putAll(count);
 		return modelMap;
 	}
 
+	/**
+	 * 设置已报价单据为已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setReadByState", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap setReadByState() {
+		Integer count = purchaseNoticeService.setReadByState("sale");
+		return new ModelMap("count", count);
+	}
+
     /**
      * 通过前端传输的id数组寻找发货单信息
      * @param ids

+ 14 - 21
src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java

@@ -35,6 +35,7 @@ import org.springframework.web.servlet.ModelAndView;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 卖家对变更单的操作
@@ -472,27 +473,19 @@ public class SaleOrderChangeController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseOrderChangeService.getChangeCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-			value = Integer.valueOf(objects[0].toString());
-			if ("unNeedReply".equals(key)) {
-				all = all + value;
-			} else if(Status.NOT_REPLY.toString().equals(key)){
-				key = "notReply";
-				all = all + value;
-			} else if (Status.REPLIED.toString().equals(key)){
-				key = "replied";
-				all = all + value;
-			} else {
-				continue;
-			}
-			modelMap.put(key, value);
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> map = purchaseOrderChangeService.getChangeCount("sale");
+		modelMap.putAll(map);
 		return modelMap;
 	}
+
+	/**
+	 * 设置已报价单据为已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setReadByState", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap setReadByState() {
+		Integer count = purchaseOrderChangeService.setReadByState("sale");
+		return new ModelMap("count", count);
+	}
 }

+ 15 - 33
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -1265,22 +1265,8 @@ public class SaleOrderController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseOrderService.getOrderCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-			if(Status.NOT_REPLY.toString().equals(key)){
-				key = "notReply";
-			} else if (Status.REPLIED.toString().equals(key)){
-				key = "replied";
-			}
-			value = Integer.valueOf(objects[0].toString());
-			modelMap.put(key, value);
-			all = all + value;
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> count = purchaseOrderService.getOrderCount("sale");
+		modelMap.putAll(count);
 		return modelMap;
 	}
 
@@ -1318,23 +1304,19 @@ public class SaleOrderController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getPurcOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseOrderService.getOrderCount("purc");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-			value = Integer.valueOf(objects[0].toString());
-			if(Status.NOT_REPLY.toString().equals(key)){
-				key = "notReply";
-				all = all + value;
-			} else if (Status.REPLIED.toString().equals(key)){
-				key = "replied";
-				all = all + value;
-			}
-			modelMap.put(key, value);
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> count = purchaseOrderService.getOrderCount("purc");
+		modelMap.putAll(count);
 		return modelMap;
 	}
+
+	/**
+	 * 设置已报价单据为已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setReadByState", method = RequestMethod.GET)
+	@ResponseBody
+	public ModelMap setReadByState() {
+		Integer count = purchaseOrderService.setReadByState("sale");
+		return new ModelMap("count", count);
+	}
 }

+ 3 - 22
src/main/java/com/uas/platform/b2b/controller/SaleSampleController.java

@@ -1,11 +1,7 @@
 package com.uas.platform.b2b.controller;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort.Direction;
@@ -705,23 +701,8 @@ public class SaleSampleController {
 	@ResponseStatus(value = HttpStatus.OK)
 	public ModelMap getOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
-		List<Object[]> list = purchaseProofingService.getProofingCount("sale");
-		int all = 0;
-		String key;
-		int value;
-		for(Object[] objects : list){
-			key = objects[1].toString();
-			value = Integer.valueOf(objects[0].toString());
-			if(Status.SEND.toString().equals(key)){
-				key = "send";
-				all = all + value;
-			} else if (Status.UNSEND.toString().equals(key)){
-				key = "unSend";
-				all = all + value;
-			}
-			modelMap.put(key, value);
-		}
-		modelMap.put("all", all);
+		Map<String, Integer> count = purchaseProofingService.getProofingCount("sale");
+		modelMap.putAll(count);
 		return modelMap;
 	}
 }

+ 23 - 80
src/main/java/com/uas/platform/b2b/controller/SnapshotController.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.Hashtable;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 平台消息、任务快照
@@ -495,12 +496,8 @@ public class SnapshotController {
 			public void run() {
 				//客户采购询价
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = purchaseInquiryService.getInquiryCount("sale");
-				for (Object[] objects : list){
-					count = count + Integer.valueOf(objects[0].toString());
-				}
-				hashtable.put("inquiry", count);
+				Map<String, Integer> map = purchaseInquiryService.getInquiryCount("sale");
+				hashtable.put("inquiry", map.containsKey("all")?map.get("all"):0);
 				SystemSession.clear();
 			}
 		}).task(new Runnable() {
@@ -509,12 +506,8 @@ public class SnapshotController {
 			public void run() {
 				//客户模具询价
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = purchaseInquiryMouldService.getInquiryMouldCount("sale");
-				for (Object[] objects : list){
-					count = count + Integer.valueOf(objects[0].toString());
-				}
-				hashtable.put("mould", count);
+				Map<String, Integer> count = purchaseInquiryMouldService.getInquiryMouldCount("sale");
+				hashtable.put("mould", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 //		}).task(new Runnable() {
@@ -532,15 +525,8 @@ public class SnapshotController {
 			public void run() {
 				//客户招标
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = tenderService.getTenderCount("sale");
-				for (Object[] objects : list){
-					if ("待投标".equals(objects[1].toString())) {
-						count = count + Integer.valueOf(objects[0].toString());
-						break;
-					}
-				}
-				hashtable.put("tender", count);
+				Map<String, Integer> count = tenderService.getTenderCount("sale");
+				hashtable.put("tender", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 //			}
 //		}).task(new Runnable() {
@@ -564,12 +550,8 @@ public class SnapshotController {
 			public void run() {
 				//客户采购订单
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = purchaseOrderService.getOrderCount("sale");
-				for (Object[] objects : list){
-					count = count + Integer.valueOf(objects[0].toString());
-				}
-				hashtable.put("order", count);
+				Map<String, Integer> count = purchaseOrderService.getOrderCount("sale");
+				hashtable.put("order", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 		}).task(new Runnable() {
@@ -578,12 +560,8 @@ public class SnapshotController {
 			public void run() {
 				//客户采购变更单
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = purchaseOrderChangeService.getChangeCount("sale");
-				for (Object[] objects : list){
-					count = count + Integer.valueOf(objects[0].toString());
-				}
-				hashtable.put("change", count);
+				Map<String, Integer> map = purchaseOrderChangeService.getChangeCount("sale");
+				hashtable.put("change", map.containsKey("all")?map.get("all"):0);
 				SystemSession.clear();
 			}
 		}).task(new Runnable() {
@@ -592,12 +570,8 @@ public class SnapshotController {
 			public void run() {
 				//客户委外单
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = makeOrderService.getMakeOrderCount("sale");
-				for (Object[] objects : list){
-					count = count + Integer.valueOf(objects[0].toString());
-				}
-				hashtable.put("makeOrder", count);
+				Map<String, Integer> count = makeOrderService.getMakeOrderCount("sale");
+				hashtable.put("makeOrder", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 //		}).task(new Runnable() {
@@ -621,12 +595,8 @@ public class SnapshotController {
 			public void run() {
 				//客户发货提醒
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = purchaseNoticeService.getNoticeCount("sale");
-				for (Object[] objects : list){
-					count = count + Integer.valueOf(objects[0].toString());
-				}
-				hashtable.put("notice", count);
+				Map<String, Integer> count = purchaseNoticeService.getNoticeCount("sale");
+				hashtable.put("notice", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 //		}).task(new Runnable() {
@@ -644,14 +614,8 @@ public class SnapshotController {
 			public void run() {
 				//客户打样申请
 				SystemSession.setUser(user);
-				int count = 0;
-				List<Object[]> list = purchaseProofingService.getProofingCount("sale");
-				for (Object[] objects : list){
-					if (Status.SEND.toString().equals(objects[1].toString()) || Status.UNSEND.toString().equals(objects[1].toString())) {
-						count = count + Integer.valueOf(objects[0].toString());
-					}
-				}
-				hashtable.put("sample", count);
+				Map<String, Integer> count = purchaseProofingService.getProofingCount("sale");
+				hashtable.put("sample", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 //		}).task(new Runnable() {
@@ -760,15 +724,8 @@ public class SnapshotController {
 			public void run() {
 				//采购招标
 				SystemSession.setUser(user);
-				List<Object[]> list = tenderService.getTenderCount("purc");
-				int count = 0;
-				for(Object[] objects : list){
-					if("待评标".equals(objects[1].toString())){
-						count = count + Integer.valueOf(objects[0].toString());
-						break;
-					}
-				}
-				hashtable.put("purcTender", count);
+                Map<String, Integer> count = tenderService.getTenderCount("purc");
+                hashtable.put("tender", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 		}).task(new Runnable() {
@@ -777,15 +734,8 @@ public class SnapshotController {
 			public void run() {
 				//采购询价
 				SystemSession.setUser(user);
-				List<Object[]> list = purchaseInquiryService.getInquiryCount("purc");
-				int count = 0;
-				for(Object[] objects : list){
-					if(Status.REPLIED.value() == Integer.valueOf(objects[1].toString())){
-						count = count + Integer.valueOf(objects[0].toString());
-						break;
-					}
-				}
-				hashtable.put("purcInquiry", count);
+				Map<String, Integer> map = purchaseInquiryService.getInquiryCount("purc");
+				hashtable.put("purcInquiry", map.containsKey("all")?map.get("all"):0);
 				SystemSession.clear();
 			}
 		}).task(new Runnable() {
@@ -794,15 +744,8 @@ public class SnapshotController {
 			public void run() {
 				//采购订单
 				SystemSession.setUser(user);
-				List<Object[]> list = purchaseOrderService.getOrderCount("purc");
-				int count = 0;
-				for(Object[] objects : list){
-					if(Status.REPLIED.value() == Integer.valueOf(objects[1].toString())){
-						count = Integer.valueOf(objects[0].toString());
-						break;
-					}
-				}
-				hashtable.put("purcOrder", count);
+				Map<String, Integer> count = purchaseOrderService.getOrderCount("purc");
+				hashtable.put("purcOrder", count.containsKey("all")?count.get("all"):0);
 				SystemSession.clear();
 			}
 //		}).task(new Runnable() {

+ 18 - 0
src/main/java/com/uas/platform/b2b/dao/MakeOrderDao.java

@@ -96,4 +96,22 @@ public interface MakeOrderDao extends JpaSpecificationExecutor<MakeOrder>, JpaRe
 	 */
 	@Query("select count(p), p.status from MakeOrder p where p.id in :ids group by p.status")
 	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出未回复单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from MakeOrder p where p.id in :ids and p.status=201")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出未回复单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from MakeOrder p where p.id in :ids and p.status=200")
+	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
 }

+ 3 - 1
src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryItemDao.java

@@ -9,7 +9,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.jpa.repository.query.Procedure;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
@@ -194,6 +193,9 @@ public interface PurchaseInquiryItemDao extends JpaSpecificationExecutor<Purchas
 	@Query("select count(p) from PurchaseInquiryItem p where p.id in :ids and p.inquiry.overdue=0 and (p.inquiry.check is null or p.inquiry.check <> 1) and p.status=200")
 	Integer getNotOfferCount(@Param("ids") List<Long> ids);
 
+	@Query("select p.id from PurchaseInquiryItem p where p.id in :ids and p.status=201 and p.agreed is null and p.invalid <> 1")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+
     /**
      * 更新询价报价传输到erp的状态
      *

+ 19 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseInquiryMouldDao.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.dao;
 import java.util.Date;
 import java.util.List;
 
+import org.apache.log4j.lf5.viewer.configure.MRUFileManager;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -153,4 +154,22 @@ public interface PurchaseInquiryMouldDao
 	 */
 	@Query("select count(p), p.status from PurchaseInquiryMould p where p.id in :ids and (p.overdue is null or p.overdue = 0) and p.valid = 1 group by p.status")
 	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出已报价单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseInquiryMould p where p.id in :ids and p.status=201 and p.adoptStatus is null and p.valid <> 0")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出待报价单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseInquiryMould p where p.id in :ids and p.status=200 and p.adoptStatus is null and p.valid <> 0")
+	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
 }

+ 19 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseNoticeDao.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2b.dao;
 import java.util.Date;
 import java.util.List;
 
+import org.apache.log4j.lf5.viewer.configure.MRUFileManager;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -138,4 +139,22 @@ public interface PurchaseNoticeDao extends JpaSpecificationExecutor<PurchaseNoti
 	 */
 	@Query("select count(p), p.status from PurchaseNotice p where p.id in :ids and (p.end is null or p.end = 0) and p.waiting=0 group by p.status")
 	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出未报价单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseNotice p where p.id in :ids and p.status=201 and (p.end is null or p.end = 0) and p.waiting=0")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出已报价单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseNotice p where p.id in :ids and p.status=200 and (p.end is null or p.end = 0) and p.waiting=0")
+	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
 }

+ 23 - 5
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderChangeDao.java

@@ -28,7 +28,7 @@ public interface PurchaseOrderChangeDao extends JpaSpecificationExecutor<Purchas
 	 * 
 	 * @param enUU
 	 * @param status
-	 * @param sendStatus
+	 * @param backStatus
 	 * @return
 	 */
 	@Query("from PurchaseOrderChange r where r.enUU = :enUU and r.status = :status and r.backStatus = :backStatus")
@@ -75,8 +75,7 @@ public interface PurchaseOrderChangeDao extends JpaSpecificationExecutor<Purchas
 	/**
 	 * 按变更单的企业UU号来统计条数
 	 * 
-	 * @param vendUU
-	 * @param status
+	 * @param enUU
 	 * @return
 	 */
 	@Query("select count(o) from PurchaseOrderChange o where o.enUU = :enUU")
@@ -105,6 +104,25 @@ public interface PurchaseOrderChangeDao extends JpaSpecificationExecutor<Purchas
 	 * @Param ids 未读单据id
 	 * @return
 	 */
-	@Query("select count(p) from PurchaseOrderChange p where p.id in :ids and p.unNeedReply=1")
-	Integer getNotNeedReplyCount(@Param("ids") List<Long> ids);
+	@Query("select p.id from PurchaseOrderChange p where p.id in :ids and p.unNeedReply=1")
+	List<Long> getNotNeedReplyId(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选已处理单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseOrderChange p where p.id in :ids and p.agreed=1 and (p.unNeedReply is null or p.unNeedReply=0)")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+
+	/**
+	 * 筛选出待确认单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseOrderChange p where p.id in :ids and p.agreed=0 and (p.unNeedReply is null or p.unNeedReply=0)")
+	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
+
 }

+ 11 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java

@@ -61,4 +61,15 @@ public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder
 	@Query("select count(p), p.status from PurchaseOrderAll p where p.id in :ids and (p.end = 0 or p.end is null) and (p.status = 201 or p.status = 200) group by p.status")
 	public List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
 
+	/**
+	 * 筛选出未报价单据的id号
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@Query("select p.id from PurchaseOrderAll p where p.id in :ids and p.status=201 and p.end <> 1")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
+
+	@Query("select p.id from PurchaseOrderAll p where p.id in :ids and p.status=200 and p.end <> 1")
+	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
 }

+ 19 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseProofingItemDao.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.dao;
 
 import java.util.List;
 
+import org.apache.log4j.lf5.viewer.configure.MRUFileManager;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -46,4 +47,22 @@ public interface PurchaseProofingItemDao extends JpaSpecificationExecutor<Purcha
 	 */
 	@Query("select count(p), p.status from PurchaseProofingItem p where p.id in :ids group by p.status")
 	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+
+	/**
+	 * 从单据中筛选出待送样的单据
+	 *
+	 * @Param ids 需筛选之前的id
+	 * @return 筛选之后的id
+	 */
+	@Query("select p.id from PurchaseProofingItem p where p.id in :ids and p.status = 400")
+	List<Long> findNotReplyId(@Param("ids") List<Long> ids);
+
+	/**
+	 * 从单据中筛选出已送样的单据
+	 *
+	 * @param ids 需筛选之前的id
+	 * @return 筛选之后的id
+	 */
+	@Query("select p.id from PurchaseProofingItem p where p.id in :ids and p.status = 401")
+	List<Long> findRepliedId(@Param("ids") List<Long> ids);
 }

+ 14 - 1
src/main/java/com/uas/platform/b2b/dao/UserOrderDao.java

@@ -35,9 +35,22 @@ public interface UserOrderDao extends JpaSpecificationExecutor<UserOrders>, JpaR
      * @param category 分类(sale or purc)
      * @param status 阅读状态(Status.READ.value() or Status.NOT_READ.value())
      * @param sourceIds 需要设置已读的id
-     * @return
      */
     @Modifying
     @Query("update UserOrders o set o.readStatus=:status where o.userUU=:userUU and o.enUU=:enUU and o.table=:table and o.category=:category and o.sourceId in :sourceIds")
     void setReadStatus(@Param("enUU") Long enUU, @Param("userUU") Long userUU, @Param("table") String table, @Param("category") String category, @Param("status") Short status, @Param("sourceIds") Long... sourceIds);
+
+    /**
+     * 删除红点记录
+     *
+     * @param enUU 企业UU号
+     * @param userUU 用户UU号
+     * @param table 表名
+     * @param category 分类(sale or purc)
+     * @param sourceIds 需要设置已读的id
+     * @return 删除数据数量
+     */
+    @Modifying
+    @Query("delete from UserOrders o where o.userUU=:userUU and o.enUU=:enUU and o.table=:table and o.category=:category and o.sourceId in :sourceIds")
+    Integer delete(@Param("enUU") Long enUU, @Param("userUU") Long userUU, @Param("table") String table, @Param("category") String category, @Param("sourceIds") Long... sourceIds);
 }

+ 9 - 6
src/main/java/com/uas/platform/b2b/service/MakeOrderService.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service;
 
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.data.domain.Page;
 
@@ -26,7 +27,7 @@ public interface MakeOrderService {
 	/**
 	 * 批量保存、修改委外加工单
 	 * 
-	 * @param items
+	 * @param orders
 	 * @return
 	 */
 	public void saveOrders(List<MakeOrder> orders);
@@ -71,7 +72,7 @@ public interface MakeOrderService {
 	/**
 	 * 批量回复
 	 * 
-	 * @param orderItemIdString
+	 * @param orderIdString
 	 *            回复的明细ID的字符串数组
 	 */
 	public List<MakeOrderReply> reply(String[] orderIdString);
@@ -79,7 +80,7 @@ public interface MakeOrderService {
 	/**
 	 * 查找订单明细的回复记录
 	 * 
-	 * @param orderItemId
+	 * @param orderId
 	 *            订单明细ID
 	 * @return
 	 */
@@ -149,7 +150,7 @@ public interface MakeOrderService {
 	/**
 	 * 分页查找已结案订单
 	 * 
-	 * @param pageinfo
+	 * @param pageInfo
 	 * @param filter
 	 * @return
 	 */
@@ -158,7 +159,7 @@ public interface MakeOrderService {
 	/**
 	 * 分页查找所有订单
 	 * 
-	 * @param pageinfo
+	 * @param pageInfo
 	 * @param filter
 	 * @return
 	 */
@@ -232,9 +233,11 @@ public interface MakeOrderService {
 
 	Integer getPurchaseOrderUnreadCount();
 
-    List<Object[]> getMakeOrderCount(String category);
+	Map<String, Integer> getMakeOrderCount(String category);
 
     void setReadByOrder(String category, Long[] sourceId);
 
 	List<Long> getUnreadIds(String category);
+
+    Integer setReadByState(String category);
 }

+ 9 - 6
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryMouldService.java

@@ -8,13 +8,14 @@ import com.uas.search.b2b.model.SPage;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 public interface PurchaseInquiryMouldService {
 
 	/**
 	 * 批量保存、修改采购询价
 	 * 
-	 * @param inquirymould
+	 * @param inquiryMould
 	 *            询价
 	 * @return
 	 */
@@ -64,7 +65,7 @@ public interface PurchaseInquiryMouldService {
 	/**
 	 * 用询价单明细ID查找询价单明细
 	 * 
-	 * @param id
+	 * @param itemId
 	 * @return
 	 */
 	public PurchaseInquiryMouldItem findItemById(Long itemId);
@@ -86,7 +87,7 @@ public interface PurchaseInquiryMouldService {
 	/**
 	 * 报价信息(不)采纳之后,写到平台
 	 * 
-	 * @param inquiryItems
+	 * @param inquiryMoulds
 	 */
 	public void onReplyDecide(List<PurchaseInquiryMould> inquiryMoulds);
 
@@ -128,7 +129,7 @@ public interface PurchaseInquiryMouldService {
 	/**
 	 * B2B回复报价
 	 * 
-	 * @param inquiryMouldItem
+	 * @param inquiryMould
 	 */
 	public PurchaseInquiryMould reply(PurchaseInquiryMould inquiryMould);
 
@@ -228,13 +229,15 @@ public interface PurchaseInquiryMouldService {
 
 	/**
 	 * 买家反提交
-	 * @param longs
+	 * @param ids
 	 */
 	void reCheck(Long[] ids);
 
-    List<Object[]> getInquiryMouldCount(String category);
+	Map<String, Integer> getInquiryMouldCount(String category);
 
     void setReadByOrder(String category, Long[] sourceId);
 
 	List<Long> getUnreadIds(String category);
+
+    Integer setReadByState(String category);
 }

+ 3 - 1
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.service;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
@@ -252,7 +253,7 @@ public interface PurchaseInquiryService {
 	 * @param category 分类(sale or purc)
 	 * @return 根据单据状态获取未读单据数量 Object[0]为数量,Object[1]为单据状态
 	 */
-    List<Object[]> getInquiryCount(String category);
+	Map<String, Integer> getInquiryCount(String category);
 
 	/**
 	 * 设置订单已读
@@ -268,4 +269,5 @@ public interface PurchaseInquiryService {
 	 */
 	List<Long> getUnreadIds(String category);
 
+	Integer setReadByState(String category);
 }

+ 3 - 1
src/main/java/com/uas/platform/b2b/service/PurchaseNoticeService.java

@@ -311,10 +311,12 @@ public interface PurchaseNoticeService {
 
 	void setReadByOrder(String category, Long[] sourceId);
 
-    List<Object[]> getNoticeCount(String category);
+    Map<String, Integer> getNoticeCount(String category);
 
 	SPage<PurchaseNotice> findDoneNoticesByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter);
 
+    Integer setReadByState(String category);
+
     /**
      * 通过ids查询发货信息
      *

+ 5 - 2
src/main/java/com/uas/platform/b2b/service/PurchaseOrderChangeService.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service;
 
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.data.domain.Page;
 
@@ -82,7 +83,7 @@ public interface PurchaseOrderChangeService {
 	/**
 	 * 回复单个明细
 	 * 
-	 * @param reply
+	 * @param change
 	 */
 	public PurchaseOrderChange reply(PurchaseOrderChange change);
 
@@ -111,5 +112,7 @@ public interface PurchaseOrderChangeService {
 
 	public void setReadByOrder(String category, Long[] sourceId);
 
-	List<Object[]> getChangeCount(String category);
+	Map<String, Integer> getChangeCount(String category);
+
+    Integer setReadByState(String category);
 }

+ 16 - 5
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -38,7 +38,7 @@ public interface PurchaseOrderService {
 	 * 分页查找订单,包括明细
 	 * 
 	 * @param pageInfo
-	 * @param keyword
+	 * @param filter
 	 * @return
 	 */
 	public Page<PurchaseOrderAll> findAllDetailByPageInfo(PageInfo pageInfo, SearchFilter filter);
@@ -95,7 +95,7 @@ public interface PurchaseOrderService {
 	 * 分页查找订单,包括明细
 	 * 
 	 * @param pageInfo
-	 * @param keyword
+	 * @param filter
 	 * @return
 	 */
 	public Page<PurchaseOrderAll> findAllOrdersDetailByPageInfo(PageInfo pageInfo, SearchFilter filter);
@@ -104,7 +104,7 @@ public interface PurchaseOrderService {
 	 * 分页查找订单,包括明细
 	 * 
 	 * @param pageInfo
-	 * @param keyword
+	 * @param filter
 	 * @return
 	 */
 	public SPage<PurchaseOrderAll> findOrdersByPageInfo(PageInfo pageInfo, SearchFilter filter);
@@ -382,7 +382,18 @@ public interface PurchaseOrderService {
 	 * @param category 分类(sale or purc)
 	 * @return 根据单据状态获取未读单据数量 Object[0]为数量,Object[1]为单据状态
 	 */
-	List<Object[]> getOrderCount(String category);
+	Map<String, Integer> getOrderCount(String category);
+
+    Integer setReadByState(String category);
 
-	public void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu);
+    /**
+     * 批量回复日志记录
+     *
+     * @param idString
+     * @param username
+     * @param userip
+     * @param enuu
+     * @param useruu
+     */
+    public void replyByBatch(String idString, String username, String userip, Long enuu, Long useruu);
 }

+ 2 - 1
src/main/java/com/uas/platform/b2b/service/PurchaseProofingService.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service;
 
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.data.domain.Page;
 
@@ -243,7 +244,7 @@ public interface PurchaseProofingService {
 
     Integer getApprovalUnreadCount();
 
-    List<Object[]> getProofingCount(String sale);
+    Map<String, Integer> getProofingCount(String sale);
 
 	List<Long> getUnreadIds(String sale);
 

+ 2 - 1
src/main/java/com/uas/platform/b2b/service/PurchaseTenderService.java

@@ -10,6 +10,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by dongbw on 17/03/07 14:15.
@@ -193,7 +194,7 @@ public interface PurchaseTenderService {
      */
     void publishOrSave(PurchaseTender purchaseTender, List<TenderContactInfo> contactInfos);
 
-    List<Object[]> getTenderCount(String category);
+    Map<String, Integer> getTenderCount(String category);
 
     List<Long> getUnreadIds(String category);
 

+ 57 - 5
src/main/java/com/uas/platform/b2b/service/impl/MakeOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.event.MakeOrderSaveEvent;
@@ -458,12 +459,35 @@ public class MakeOrderServiceImpl implements MakeOrderService {
 	}
 
 	@Override
-	public List<Object[]> getMakeOrderCount(String category) {
-		List<Long> ids = getUnreadIds(category);
-		if (CollectionUtils.isEmpty(ids)){
-			return new ArrayList<>();
+	public Map<String, Integer> getMakeOrderCount(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+        Map<String, Integer> map = new HashMap<>();
+		Integer repliedCount = 0; // 已回复数量
+		Integer notReplyCount = 0; // 待回复数量
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return map;
 		}
-		return makeOrderDao.getUnreadCountEveryStatus(ids);
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				if (repliedCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+					repliedCount = repliedCount + makeOrderDao.findRepliedId(ids).size();
+				}
+				if (notReplyCount < 100) {
+					notReplyCount = notReplyCount + makeOrderDao.findNotReplyId(ids).size();
+				}
+				if (notReplyCount > 99 && repliedCount > 99) {
+					break;
+				}
+			}
+		} else {
+			repliedCount = repliedCount + makeOrderDao.findRepliedId(unreadIds).size();
+			notReplyCount = notReplyCount + makeOrderDao.findNotReplyId(unreadIds).size();
+		}
+        map.put("replied", repliedCount);
+        map.put("notReply", notReplyCount);
+        map.put("all", repliedCount + notReplyCount);
+        return map;
 	}
 
 	@Override
@@ -476,4 +500,32 @@ public class MakeOrderServiceImpl implements MakeOrderService {
 	public List<Long> getUnreadIds(String category) {
 		return userOrderDao.getUnreadIds(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "make$orders", category);
 	}
+
+	@Override
+	@Transactional
+	public Integer setReadByState(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Integer deleteCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return deleteCount;
+		}
+		List<Long> repliedIds = null;
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				repliedIds = makeOrderDao.findRepliedId(ids);
+				if (repliedIds.size() != 0) {
+					deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+							SystemSession.getUser().getUserUU(), "make$orders", category, repliedIds.toArray(new Long[repliedIds.size()]));
+				}
+			}
+		} else {
+			repliedIds = makeOrderDao.findRepliedId(unreadIds);
+			if (repliedIds.size() != 0) {
+				deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+						SystemSession.getUser().getUserUU(), "make$orders", category, repliedIds.toArray(new Long[repliedIds.size()]));
+			}
+		}
+		return deleteCount;
+	}
 }

+ 4 - 3
src/main/java/com/uas/platform/b2b/service/impl/PagingReleaseDetailServiceImpl.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -28,12 +29,14 @@ public class PagingReleaseDetailServiceImpl implements PagingReleaseDetailServic
      * @param releaseDetails
      */
     @Override
+    @Transactional
     public void setRead(List<PagingReleaseDetail> releaseDetails) {
         if (!CollectionUtils.isEmpty(releaseDetails)) {
             for (PagingReleaseDetail releaseDetail : releaseDetails) {
                 releaseDetail.setReadStatus(Constant.YES);
                 releaseDetail.setReadDate(new Date());
                 pagingReleaseDetailDao.save(releaseDetail);
+                userOrderDao.delete(releaseDetail.getVendUU(), releaseDetail.getVendUserUU(), releaseDetail.getPagingRelease().getTable(), releaseDetail.getPagingRelease().getCategory(), releaseDetail.getPagingRelease().getSourceId());
             }
         }
     }
@@ -51,9 +54,7 @@ public class PagingReleaseDetailServiceImpl implements PagingReleaseDetailServic
             detail.setReadDate(new Date());
             pagingReleaseDetailDao.save(detail);
             // 将对应的单据设置成已读
-            userOrderDao.setReadStatus(detail.getVendUU(), detail.getVendUserUU(),
-                    detail.getPagingRelease().getTable(), detail.getPagingRelease().getCategory(),
-                    (short) Status.READ.value(), detail.getPagingRelease().getSourceId());
+            userOrderDao.delete(detail.getVendUU(), detail.getVendUserUU(), detail.getPagingRelease().getTable(), detail.getPagingRelease().getCategory(), detail.getPagingRelease().getSourceId());
         }
     }
 }

+ 57 - 5
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryMouldServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.InquiryMould;
@@ -536,12 +537,35 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 	}
 
 	@Override
-	public List<Object[]> getInquiryMouldCount(String category) {
-		List<Long> ids = getUnreadIds(category);
-		if (CollectionUtils.isEmpty(ids)){
-			return new ArrayList<>();
+	public Map<String, Integer> getInquiryMouldCount(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Map<String, Integer> map = new HashMap<>();
+		Integer repliedCount = 0; // 已报价数量
+		Integer notReplyCount = 0; // 待报价数量
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return map;
 		}
-		return purchaseInquiryMouldDao.getUnreadCountEveryStatus(ids);
+		if (unreadIds.size() > 1000) { // 超过1000条需要拆分,不然会报错
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				if (repliedCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+					repliedCount = repliedCount + purchaseInquiryMouldDao.findRepliedId(ids).size();
+				}
+				if (notReplyCount < 100) {
+					notReplyCount = notReplyCount + purchaseInquiryMouldDao.findNotReplyId(ids).size();
+				}
+				if (notReplyCount > 99 && repliedCount > 99) {
+					break;
+				}
+			}
+		} else {
+			repliedCount = repliedCount + purchaseInquiryMouldDao.findRepliedId(unreadIds).size();
+			notReplyCount = notReplyCount + purchaseInquiryMouldDao.findNotReplyId(unreadIds).size();
+		}
+		map.put("replied", repliedCount);
+		map.put("notReply", notReplyCount);
+		map.put("all", repliedCount + notReplyCount);
+		return map;
 	}
 
     @Override
@@ -554,4 +578,32 @@ public class PurchaseInquiryMouldServiceImpl implements PurchaseInquiryMouldServ
 	public List<Long> getUnreadIds(String category) {
 		return userOrderDao.getUnreadIds(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "v$purc$inquiry_mould", category);
 	}
+
+	@Override
+	@Transactional
+	public Integer setReadByState(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Integer deleteCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return deleteCount;
+		}
+		List<Long> repliedIds = null;
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				repliedIds = purchaseInquiryMouldDao.findRepliedId(ids);
+				if (repliedIds.size() != 0) {
+					deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+							SystemSession.getUser().getUserUU(), "v$purc$inquiry_mould", category, repliedIds.toArray(new Long[repliedIds.size()]));
+				}
+			}
+		} else {
+			repliedIds = purchaseInquiryMouldDao.findRepliedId(unreadIds);
+			if (repliedIds.size() != 0) {
+				deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+						SystemSession.getUser().getUserUU(), "v$purc$inquiry_mould", category, repliedIds.toArray(new Long[repliedIds.size()]));
+			}
+		}
+		return deleteCount;
+	}
 }

+ 56 - 23
src/main/java/com/uas/platform/b2b/service/impl/PurchaseInquiryServiceImpl.java

@@ -2,10 +2,7 @@ package com.uas.platform.b2b.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.uas.message.mail.service.MailService;
-import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.core.util.DateFormatUtils;
-import com.uas.platform.b2b.core.util.ThreadTask;
-import com.uas.platform.b2b.core.util.ThreadUtils;
+import com.uas.platform.b2b.core.util.*;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.QuotationDown;
@@ -782,27 +779,35 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	}
 
 	@Override
-	public List<Object[]> getInquiryCount(String category) {
-		List<Long> ids = getUnreadIds(category);
-		if (CollectionUtils.isEmpty(ids)){
-			return new ArrayList<>();
-		}
-		List<Object[]> list = new ArrayList<>();
-		Object[] objects = new Object[2];
-		objects[0] = purchaseInquiryItemDao.getOfferCount(ids);
-		objects[1] = 201;
-		if (objects[0] == null){
-			objects[0] = 0;
+	public Map<String, Integer> getInquiryCount(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Map<String, Integer> map = new HashMap<>();
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return map;
 		}
-        list.add(objects);
-        objects = new Object[2];
-		objects[0] = purchaseInquiryItemDao.getNotOfferCount(ids);
-		objects[1] = 200;
-		if (objects[0] == null){
-			objects[0] = 0;
+		Integer offerCount = 0; // 已报价数量
+		Integer notOfferCount = 0; // 未报价数量
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				if (offerCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+                    offerCount = offerCount + purchaseInquiryItemDao.getOfferCount(ids);
+				}
+				if (notOfferCount < 100) {
+                    notOfferCount = notOfferCount + purchaseInquiryItemDao.getNotOfferCount(ids);
+				}
+				if (offerCount > 99 && notOfferCount > 99) {
+					break;
+				}
+			}
+		} else {
+            offerCount = offerCount + purchaseInquiryItemDao.getOfferCount(unreadIds);
+            notOfferCount = notOfferCount + purchaseInquiryItemDao.getNotOfferCount(unreadIds);
 		}
-        list.add(objects);
-		return list;
+		map.put("replied", offerCount);
+		map.put("notReply", notOfferCount);
+		map.put("all", offerCount+notOfferCount);
+		return map;
 	}
 
 	@Override
@@ -815,4 +820,32 @@ public class PurchaseInquiryServiceImpl implements PurchaseInquiryService {
 	public List<Long> getUnreadIds(String category) {
 		return userOrderDao.getUnreadIds(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "v$purc$inquiryitems", category);
 	}
+
+	@Override
+	@Transactional
+	public Integer setReadByState(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Integer deleteCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return 0;
+		}
+		List<Long> repliedIds = null;
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				repliedIds = purchaseInquiryItemDao.findRepliedId(ids);
+				if (repliedIds.size() != 0) {
+					deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+							SystemSession.getUser().getUserUU(), "v$purc$inquiryitems", category, repliedIds.toArray(new Long[repliedIds.size()]));
+				}
+			}
+		} else {
+			repliedIds = purchaseInquiryItemDao.findRepliedId(unreadIds);
+			if (repliedIds.size() != 0) {
+				deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+						SystemSession.getUser().getUserUU(), "v$purc$inquiryitems", category, repliedIds.toArray(new Long[repliedIds.size()]));
+			}
+		}
+		return deleteCount;
+	}
 }

+ 117 - 38
src/main/java/com/uas/platform/b2b/service/impl/PurchaseNoticeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.PurchaseNotify;
@@ -159,8 +160,9 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			@Override
 			public Predicate toPredicate(Root<PurchaseNotice> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				if (filter != null) {
-					if (!CollectionUtils.isEmpty(filter.getDistribute()))
+					if (!CollectionUtils.isEmpty(filter.getDistribute())) {
 						pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
+					}
 				}
 				if (StringUtils.hasText(keyword)) {
 					List<Object> lists = new ArrayList<>();
@@ -170,12 +172,14 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 					}
 					pageInfo.expression(PredicateUtils.in("id", lists, false));
 				}
-				if (fromDate != null)
+				if (fromDate != null) {
 					pageInfo.expression(PredicateUtils.in("id", purchaseNoticeDao.findByFromDate(
 							SystemSession.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-				if (endDate != null)
+				}
+				if (endDate != null) {
 					pageInfo.expression(PredicateUtils.in("id", purchaseNoticeDao
 							.findByEndDate(SystemSession.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+				}
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
@@ -187,12 +191,15 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			@Override
 			public Predicate toPredicate(Root<PurchaseNotice> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				if (filter != null) {
-					if (!CollectionUtils.isEmpty(filter.getDistribute()))
+					if (!CollectionUtils.isEmpty(filter.getDistribute())) {
 						pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
-					if (filter.getFromDate() != null)
+					}
+					if (filter.getFromDate() != null) {
 						pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
-					if (filter.getEndDate() != null)
+					}
+					if (filter.getEndDate() != null) {
 						pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+					}
 				}
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
@@ -212,12 +219,15 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			@Override
 			public Predicate toPredicate(Root<PurchaseNotice> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				if (filter != null) {
-					if (!CollectionUtils.isEmpty(filter.getDistribute()))
+					if (!CollectionUtils.isEmpty(filter.getDistribute())) {
 						pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
-					if (filter.getFromDate() != null)
+					}
+					if (filter.getFromDate() != null) {
 						pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
-					if (filter.getEndDate() != null)
+					}
+					if (filter.getEndDate() != null) {
 						pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+					}
 				}
 				pageInfo.expression(
 						PredicateUtils.or(PredicateUtils.isNull("end"), PredicateUtils.ne("end", Constant.YES, false)));
@@ -242,6 +252,7 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 	public Page<PurchaseNotice> findDoneByPageInfo(final PageInfo pageInfo, final String keyword, final Long fromDate,
 			final Long endDate) {
 		return purchaseNoticeDao.findAll(new Specification<PurchaseNotice>() {
+			@Override
 			public Predicate toPredicate(Root<PurchaseNotice> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				pageInfo.filter("status", Status.REPLIED.value());
 				pageInfo.expression(
@@ -254,12 +265,14 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 					}
 					pageInfo.expression(PredicateUtils.in("id", lists, false));
 				}
-				if (fromDate != null)
+				if (fromDate != null) {
 					pageInfo.expression(PredicateUtils.in("id", purchaseNoticeDao.findByFromDate(
 							SystemSession.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-				if (endDate != null)
+				}
+				if (endDate != null) {
 					pageInfo.expression(PredicateUtils.in("id", purchaseNoticeDao
 							.findByEndDate(SystemSession.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+				}
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
@@ -274,8 +287,9 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 	public void send(List<SaleSendItem> sendItems) {
 		saleSendItemDao.save(sendItems);
 		for (SaleSendItem item : sendItems) {
-			if (item.getNoticeId() != null)
+			if (item.getNoticeId() != null) {
 				purchaseNoticeDao.updateBySend(item.getNoticeId());
+			}
 		}
 	}
 
@@ -392,14 +406,17 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 //			if (sends.size() > 0) {
 //				throw new IllegalOperatorException("发货单号重复,无法发货!提示:多个物料一起发货请选择批量发货。");
 //			}
-			if (notice.getEnd() != null && notice.getEnd() == Constant.YES)
+			if (notice.getEnd() != null && notice.getEnd() == Constant.YES) {
 				throw new IllegalOperatorException("客户已经取消了本次送货提醒,请刷新重试!");
+			}
 			double thisQty = 0;
-			for (SaleSendItem item : send.getSendItems())
+			for (SaleSendItem item : send.getSendItems()) {
 				thisQty += item.getQty();
+			}
 			double endQty = (notice.getEndQty() == null ? 0.0 : notice.getEndQty()) + thisQty;
-			if (endQty > notice.getQty())
+			if (endQty > notice.getQty()) {
 				throw new IllegalOperatorException("累计发货数量将超出本次送货提醒的需求数!");
+			}
 			PurchaseOrder order = notice.getOrderItem().getOrder();
 			send.setCurrency(order.getCurrency());
 			send.setBackStatus((short) Status.NOT_UPLOAD.value());
@@ -470,8 +487,9 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 					} else {
 						double thisQty = item.getQty();
 						double endQty = (notice.getEndQty() == null ? 0.0 : notice.getEndQty()) + thisQty;
-						if (endQty > notice.getQty())
+						if (endQty > notice.getQty()) {
 							throw new IllegalOperatorException("累计发货数量将超出本次送货提醒的需求数!");
+						}
 						item.setNotice(notice);
 						if (item.getNumber() == null || item.getNumber() == 0) {// 带了序号则不重设序号,不带这重设序号
 							item.setNumber(++number);
@@ -514,8 +532,9 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 			@Override
 			public Predicate toPredicate(Root<SaleSendAll> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				if (filter != null) {
-					if (!CollectionUtils.isEmpty(filter.getDistribute()))
+					if (!CollectionUtils.isEmpty(filter.getDistribute())) {
 						pageInfo.expression(PredicateUtils.in("custUU", filter.getDistribute(), false));
+					}
 				}
 				if (StringUtils.hasText(keyword)) {
 					List<Object> lists = new ArrayList<>();
@@ -528,12 +547,14 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 					}
 					pageInfo.expression(PredicateUtils.in("id", lists, false));
 				}
-				if (fromDate != null)
+				if (fromDate != null) {
 					pageInfo.expression(PredicateUtils.in("id", saleSendAllDao.findByFromDate(
 							SystemSession.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-				if (endDate != null)
+				}
+				if (endDate != null) {
 					pageInfo.expression(PredicateUtils.in("id", saleSendAllDao
 							.findByEndDate(SystemSession.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+				}
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
@@ -591,18 +612,20 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 		SaleSendItem sendItem = saleSendItemDao.findOne(sendItemId);
 		int totalCount = saleSendItemDao.getTotalCountBySendId(sendItem.getSend().getId());
 		int verifyCount = saleSendItemDao.getFullVerifyCountBySendId(sendItem.getSend().getId());
-		if (verifyCount == totalCount)
+		if (verifyCount == totalCount) {
 			sendItem.getSend().setVerifystatus(Constant.YES);
-		else
+		} else {
 			sendItem.getSend().setVerifystatus(Constant.NO);
+		}
 		saleSendItemDao.save(sendItem);
 	}
 
 	@Override
 	public SaleSendAll findSaleSendById(Long id) {
 		SaleSendAll send = saleSendAllDao.findOne(id);
-		if (send == null)
+		if (send == null) {
 			throw new IllegalOperatorException("您查找的发货单不存在!");
+		}
 		return send;
 	}
 
@@ -644,7 +667,7 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 		// 获取条码生成规则,判断规则是否审核,已审核,根据规则拼接
 		B2bCodeSet barcodeSet = b2bCodeSetDao.findByEnUUAndType(custUU, "BATCH");
 		if (barcodeSet != null) {// 条码生成规则不为空,已审核
-			if (!barcodeSet.getStatuscode().equals("AUDITED")) {
+			if (!"AUDITED".equals(barcodeSet.getStatuscode())) {
 				throw new IllegalOperatorException("请先审核条码生成规则!");
 			}
 		} else {
@@ -655,7 +678,7 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 		if (outboxSet == null) {
 			throw new IllegalOperatorException("请先维护外箱生成规则!");
 		}
-		if (!outboxSet.getStatuscode().equals("AUDITED")) {
+		if (!"AUDITED".equals(outboxSet.getStatuscode())) {
 			throw new IllegalOperatorException("请先审核外箱生成规则!");
 		}
 		for (SaleSendItem item : sendItem) {
@@ -760,19 +783,19 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 		// 拼接
 		code.append(formPlat);// 平台标识
 		code.append(lpad(lenprid, pr_id));// PR_ID物料ID的长度
-		if (dataStr.equals("YYMMDD")) {// 日期
+		if ("YYMMDD".equals(dataStr)) {// 日期
 			SimpleDateFormat YMD = new SimpleDateFormat("yyMMdd");
 			date = YMD.format(new Date());
-		} else if (dataStr.equals("YYMM")) {
+		} else if ("YYMM".equals(dataStr)) {
 			SimpleDateFormat YM = new SimpleDateFormat("yyMM");
 			date = YM.format(new Date());
-		} else if (dataStr.equals("MMDD")) {
+		} else if ("MMDD".equals(dataStr)) {
 			SimpleDateFormat MD = new SimpleDateFormat("MMdd");
 			date = MD.format(new Date());
 		}
 		code.append(date);// 日期
 		barcodeSet.setMaxdate(date);
-		if (!("").equals(maxdate) && null != maxdate && (!date.equals("0"))
+		if (!("").equals(maxdate) && null != maxdate && (!"0".equals(date))
 				&& (Integer.valueOf(maxdate) > Integer.valueOf(date))) {// 如果当前日期大于上次日期
 			code.append(lpad(lennum, "1"));// 流水重新开始
 			barcodeSet.setMaxnum((long) 2);// 流水号增加1
@@ -794,19 +817,19 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 				lenprid = barcodeSet.getLenprid().intValue();
 		code.append(formPlat);// 平台标识
 		code.append(lpad(lenprid, pr_id));// PR_ID物料ID的长度
-		if (dataStr.equals("YYMMDD")) {
+		if ("YYMMDD".equals(dataStr)) {
 			SimpleDateFormat YMD = new SimpleDateFormat("yyMMdd");
 			date = YMD.format(new Date());
-		} else if (dataStr.equals("YYMM")) {
+		} else if ("YYMM".equals(dataStr)) {
 			SimpleDateFormat YM = new SimpleDateFormat("yyMM");
 			date = YM.format(new Date());
-		} else if (dataStr.equals("MMDD")) {
+		} else if ("MMDD".equals(dataStr)) {
 			SimpleDateFormat MD = new SimpleDateFormat("MMdd");
 			date = MD.format(new Date());
 		}
 		code.append(date);// 日期
 		barcodeSet.setMaxdate(date);
-		if (!("").equals(maxdate) && null != maxdate && (!date.equals("0"))
+		if (!("").equals(maxdate) && null != maxdate && (!"0".equals(date))
 				&& (Integer.valueOf(maxdate) > Integer.valueOf(date))) {// 如果当前日期大于上次日期
 			code.append(lpad(lennum, "1"));// 流水重新开始
 			barcodeSet.setMaxnum((long) 2);// 流水号增加1
@@ -915,7 +938,7 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 		SaleSend saleSend = saleSendDao.findOne(id);
 		Long custUU = saleSend.getCustUU();
 		String caller;
-		if (type.equals("Bar")) {
+		if ("Bar".equals(type)) {
 			caller = "B2B!BarPrint";
 		} else {
 			caller = "B2B!OutBoxPrint";
@@ -1001,12 +1024,40 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 	}
 
 	@Override
-	public List<Object[]> getNoticeCount(String category) {
-		List<Long> ids = getUnreadIds(category);
-		if (CollectionUtils.isEmpty(ids)){
-			return new ArrayList<>();
+	public Map<String, Integer> getNoticeCount(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Map<String, Integer> map = new HashMap<>(3);
+		// 已回复数量
+		Integer repliedCount = 0;
+		// 未回复数量
+		Integer notReplyCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return map;
+		}
+		// 超过1000条需要拆分,不然会报错
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				// 超过100不再查询,页面显示99+,减少服务器负担
+				if (repliedCount < 100) {
+					repliedCount = repliedCount + purchaseNoticeDao.findRepliedId(ids).size();
+				}
+				if (notReplyCount < 100) {
+					notReplyCount = notReplyCount + purchaseNoticeDao.findNotReplyId(ids).size();
+				}
+				// 当需要查询的数量大于99时停止循环,减少不必要的操作
+				if (notReplyCount > 99 && repliedCount > 99) {
+					break;
+				}
+			}
+		} else {
+			repliedCount = repliedCount + purchaseNoticeDao.findRepliedId(unreadIds).size();
+			notReplyCount = notReplyCount + purchaseNoticeDao.findNotReplyId(unreadIds).size();
 		}
-		return purchaseNoticeDao.getUnreadCountEveryStatus(ids);
+		map.put("replied", repliedCount);
+		map.put("notReply", notReplyCount);
+		map.put("all", repliedCount + notReplyCount);
+		return map;
 	}
 
 	@Override
@@ -1019,4 +1070,32 @@ public class PurchaseNoticeServiceImpl implements PurchaseNoticeService {
 	public void setReadByOrder(String category, Long[] sourceId) {
 		userOrderDao.setReadStatus(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(), "purc$notice", category, (short) Status.READ.value(), sourceId);
 	}
+
+	@Override
+	@Transactional
+	public Integer setReadByState(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Integer deleteCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return deleteCount;
+		}
+		List<Long> repliedIds = null;
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				repliedIds = purchaseNoticeDao.findRepliedId(ids);
+				if (repliedIds.size() != 0) {
+					deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+							SystemSession.getUser().getUserUU(), "purc$notice", category, repliedIds.toArray(new Long[repliedIds.size()]));
+				}
+			}
+		} else {
+			repliedIds = purchaseNoticeDao.findRepliedId(unreadIds);
+			if (repliedIds.size() != 0) {
+				deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+						SystemSession.getUser().getUserUU(), "purc$notice", category, repliedIds.toArray(new Long[repliedIds.size()]));
+			}
+		}
+		return deleteCount;
+	}
 }

+ 64 - 8
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderChangeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.SaleDownChangeReply;
@@ -17,6 +18,7 @@ import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.PageParams;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.map.HashedMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -420,14 +422,68 @@ public class PurchaseOrderChangeServiceImpl implements PurchaseOrderChangeServic
 	}
 
 	@Override
-	public List<Object[]> getChangeCount(String category) {
-		List<Long> ids = getUnreadIds(category);
-		if (CollectionUtils.isEmpty(ids)){
-			return new ArrayList<>();
+	public Map<String, Integer> getChangeCount(String category) {
+        List<Long> unreadIds = getUnreadIds(category);
+        Map<String, Integer> map = new HashMap<>();
+        Integer repliedCount = 0; // 已处理数量
+        Integer notReplyCount = 0; // 待确认数量
+        Integer unNeedReply = 0; // 无趣确认数量
+        if (CollectionUtils.isEmpty(unreadIds)){
+            return map;
+        }
+        if (unreadIds.size() > 1000) {
+            List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+            for (List<Long> ids : idsArray) {
+                if (repliedCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+                    repliedCount = repliedCount + purchaseOrderChangeDao.findRepliedId(ids).size();
+                }
+                if (notReplyCount < 100) {
+                    notReplyCount = notReplyCount + purchaseOrderChangeDao.findNotReplyId(ids).size();
+                }
+                if (notReplyCount < 100) {
+                    unNeedReply = unNeedReply + purchaseOrderChangeDao.getNotNeedReplyId(ids).size();
+                }
+                if (notReplyCount > 99 && repliedCount > 99 && unNeedReply > 99) {
+                    break;
+                }
+            }
+        } else {
+            repliedCount = repliedCount + purchaseOrderChangeDao.findRepliedId(unreadIds).size();
+            notReplyCount = notReplyCount + purchaseOrderChangeDao.findNotReplyId(unreadIds).size();
+            unNeedReply = unNeedReply + purchaseOrderChangeDao.getNotNeedReplyId(unreadIds).size();
+        }
+        map.put("replied", repliedCount);
+        map.put("notReply", notReplyCount);
+        map.put("unNeedReply", unNeedReply);
+        map.put("all", repliedCount+notReplyCount+unNeedReply);
+        return map;
+	}
+
+	@Override
+	@Transactional
+	public Integer setReadByState(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Integer deleteCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return deleteCount;
+		}
+		List<Long> repliedIds = null;
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				repliedIds = purchaseOrderChangeDao.findRepliedId(ids);
+				if (repliedIds.size() != 0) {
+					deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+							SystemSession.getUser().getUserUU(), "purc$changes", category, repliedIds.toArray(new Long[repliedIds.size()]));
+				}
+			}
+		} else {
+			repliedIds = purchaseOrderChangeDao.findRepliedId(unreadIds);
+			if (repliedIds.size() != 0) {
+				deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+						SystemSession.getUser().getUserUU(), "purc$changes", category, repliedIds.toArray(new Long[repliedIds.size()]));
+			}
 		}
-		List<Object[]> list = purchaseOrderChangeDao.getUnreadCountEveryStatus(ids);
-		Integer count = purchaseOrderChangeDao.getNotNeedReplyCount(ids);
-		list.add(new Object[]{count, "unNeedReply"});
-		return list;
+		return deleteCount;
 	}
 }

+ 59 - 6
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.event.PurchaseOrderEndReleaseEvent;
@@ -1216,12 +1217,37 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public List<Object[]> getOrderCount(String category){
-        List<Long> ids = getUnreadIds(category);
-        if (CollectionUtils.isEmpty(ids)){
-            return new ArrayList<>();
-        }
-        return purchaseOrderDao.getUnreadCountEveryStatus(ids);
+	public Map<String, Integer> getOrderCount(String category){
+		List<Long> unreadIds = getUnreadIds(category);
+		Map<String, Integer> map = new HashMap<>();
+		// 已回复数量
+		Integer repliedCount = 0;
+		// 未回复数量
+		Integer notReplyCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return map;
+		}
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				if (repliedCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+					repliedCount = repliedCount + purchaseOrderDao.findRepliedId(ids).size();
+				}
+				if (notReplyCount < 100) {
+					notReplyCount = notReplyCount + purchaseOrderDao.findNotReplyId(ids).size();
+				}
+				if (notReplyCount > 99 && repliedCount > 99) {
+					break;
+				}
+			}
+		} else {
+			repliedCount = repliedCount + purchaseOrderDao.findRepliedId(unreadIds).size();
+			notReplyCount = notReplyCount + purchaseOrderDao.findNotReplyId(unreadIds).size();
+		}
+		map.put("replied", repliedCount);
+		map.put("notReply", notReplyCount);
+		map.put("all", repliedCount + notReplyCount);
+		return map;
 	}
 
     @Override
@@ -1229,4 +1255,31 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
         purchaseOrderItemDao.replyByBatch(idString, username, userip, enuu, useruu);
     }
 
+	@Override
+	@Transactional
+	public Integer setReadByState(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Integer deleteCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return deleteCount;
+		}
+		List<Long> repliedIds = null;
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				repliedIds = purchaseOrderDao.findRepliedId(ids);
+				if (repliedIds.size() != 0) {
+					deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+							SystemSession.getUser().getUserUU(), "purc$orders", category, repliedIds.toArray(new Long[repliedIds.size()]));
+				}
+			}
+		} else {
+			repliedIds = purchaseOrderDao.findRepliedId(unreadIds);
+			if (repliedIds.size() != 0) {
+				deleteCount = deleteCount + userOrderDao.delete(SystemSession.getUser().getEnterprise().getUu(),
+						SystemSession.getUser().getUserUU(), "purc$orders", category, repliedIds.toArray(new Long[repliedIds.size()]));
+			}
+		}
+		return deleteCount;
+	}
 }

+ 32 - 5
src/main/java/com/uas/platform/b2b/service/impl/PurchaseProofingServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.event.PurchaseProofingApprovalSaveEvent;
@@ -615,12 +616,38 @@ public class PurchaseProofingServiceImpl implements PurchaseProofingService {
 	}
 
 	@Override
-	public List<Object[]> getProofingCount(String category) {
-		List<Long> ids = getUnreadIds(category);
-		if (CollectionUtils.isEmpty(ids)){
-			return new ArrayList<>();
+	public Map<String, Integer> getProofingCount(String category) {
+		List<Long> unreadIds = getUnreadIds(category);
+		Map<String, Integer> map = new HashMap<>();
+		// 已送样数量
+		Integer repliedCount = 0;
+		// 待送样数量
+		Integer notReplyCount = 0;
+		if (CollectionUtils.isEmpty(unreadIds)){
+			return map;
 		}
-		return purchaseProofingItemDao.getUnreadCountEveryStatus(ids);
+		// 超过1000条需要拆分,不然会报错
+		if (unreadIds.size() > 1000) {
+			List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+			for (List<Long> ids : idsArray) {
+				if (repliedCount < 100) {  // 超过100不再查询,页面显示99+,减少服务器负担
+					repliedCount = repliedCount + purchaseProofingItemDao.findRepliedId(ids).size();
+				}
+				if (notReplyCount < 100) {
+					notReplyCount = notReplyCount + purchaseProofingItemDao.findNotReplyId(ids).size();
+				}
+				if (notReplyCount > 99 && repliedCount > 99) {
+					break;
+				}
+			}
+		} else {
+			repliedCount = repliedCount + purchaseProofingItemDao.findRepliedId(unreadIds).size();
+			notReplyCount = notReplyCount + purchaseProofingItemDao.findNotReplyId(unreadIds).size();
+		}
+		map.put("replied", repliedCount);
+		map.put("notReply", notReplyCount);
+		map.put("all", repliedCount + notReplyCount);
+		return map;
 	}
 
 	@Override

+ 39 - 15
src/main/java/com/uas/platform/b2b/service/impl/PurchaseTenderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.SplitArray;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.PurchaseTenderErp;
@@ -788,25 +789,48 @@ public class PurchaseTenderServiceImpl implements PurchaseTenderService {
     }
 
     @Override
-    public List<Object[]> getTenderCount(String category) {
-        List<Long> ids = getUnreadIds(category);
-        List<Object[]> list = new ArrayList<>();
-        if (CollectionUtils.isEmpty(ids)){
-            return list;
+    public Map<String, Integer> getTenderCount(String category) {
+        List<Long> unreadIds = getUnreadIds(category);
+        Map<String, Integer> map = new HashMap<>();
+        // 待投标/带评标数量
+        Integer notReplyCount = 0;
+        if (CollectionUtils.isEmpty(unreadIds)){
+            return map;
         }
-        Object[] objects = new Object[2];
+        // 客户需要显示待投标红点,供应商需要显示待评标红点
         if ("sale".equals(category)) {
-            objects[1] = "待投标";
-            objects[0] = purchaseTenderDao.getTenterCount(ids, SystemSession.getUser().getEnterprise().getUu());
+            // 超过1000条需要拆分,不然会报错
+            if (unreadIds.size() <= 1000) {
+                notReplyCount = purchaseTenderDao.getTenterCount(unreadIds,
+                        SystemSession.getUser().getEnterprise().getUu());
+            } else {
+                List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+                for (List<Long> ids : idsArray) {
+                    // 超过100不再查询,页面显示99+,减少服务器负担
+                    if (notReplyCount > 99){
+                        break;
+                    }
+                    notReplyCount = notReplyCount + purchaseTenderDao.getTenterCount(ids,
+                            SystemSession.getUser().getEnterprise().getUu());
+                }
+            }
         } else if ("purc".equals(category)){
-            objects[1] = "待评标";
-            objects[0] = purchaseTenderDao.getEvaluationCount(ids);
-        }
-        if (objects[0] == null){
-            objects[0] = 0;
+            if (unreadIds.size() <= 1000) {
+                notReplyCount = purchaseTenderDao.getEvaluationCount(unreadIds);
+            } else {
+                List<List<Long>> idsArray = SplitArray.splitAry(unreadIds, SplitArray.QUERY_MAX_NUMBER);
+                for (List<Long> ids : idsArray) {
+                    // 超过100不再查询,页面显示99+,减少服务器负担
+                    if (notReplyCount > 99) {
+                        break;
+                    }
+                    notReplyCount = notReplyCount + purchaseTenderDao.getEvaluationCount(ids);
+                }
+            }
         }
-        list.add(objects);
-        return list;
+        map.put("notReply", notReplyCount);
+        map.put("all", notReplyCount);
+        return map;
     }
 
     @Override

+ 1 - 1
src/main/resources/spring/context.xml

@@ -140,7 +140,7 @@
 
 	<bean id="entityManagerFactory"
 		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
-		<!-- <property name="persistenceUnitName" value="persistenceUnit" /> -->
+		<!--<property name="persistenceUnitName" value="persistenceUnit" />-->
 		<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml" />
 		<property name="packagesToScan" value="com.uas.platform" />
 		<property name="dataSource" ref="dataSource" />

+ 61 - 1
src/main/webapp/resources/js/index/app.js

@@ -3041,7 +3041,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 
         //获得各分类未阅读数量
         var getUnreadCount = function () {
-            getService().getUnreadCount(null, function (data) {
+            PurcOrderItem.getUnreadCount(null, function (data) {
                 $scope.unread = data;
             });
         };
@@ -3077,6 +3077,16 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
         };
 
+        $scope.setOrdersReadByState = function () {
+            if (!$scope.unread.replied || $scope.unread.replied == 0) {
+                return;
+            }
+            PurcOrderItem.setReadByState({}, function () {
+                getUnreadIds();
+                getUnreadCount();
+            });
+        };
+
         var getUnreadIds = function () {
         	PurcOrderItem.getUnreadIds({}, "", function (message) {
                 $scope.unreadCode = message.content;
@@ -3498,6 +3508,16 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
         };
 
+        $scope.setOrdersReadByState = function () {
+            if (!$scope.unread.replied || $scope.unread.replied == 0) {
+                return;
+            }
+            PurcChange.setReadByState({}, function () {
+                getUnreadIds();
+                getUnreadCount();
+            });
+        };
+
         //获取未读单据id
         var getUnreadIds = function (){
             PurcChange.getUnreadIds({}, "", function (message) {
@@ -3719,6 +3739,16 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
         };
 
+        $scope.setOrdersReadByState = function () {
+            if (!$scope.unread.replied || $scope.unread.replied == 0) {
+                return;
+            }
+            PurcInquiry.setReadByState({}, function () {
+                getUnreadIds();
+                getUnreadCount();
+            });
+        };
+
         var getUnreadIds = function () {
             PurcInquiry.getUnreadIds({}, "", function (message) {
                 $scope.unreadCode = message.content;
@@ -5518,6 +5548,16 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
         };
 
+        $scope.setOrdersReadByState = function () {
+            if (!$scope.unread.replied || $scope.unread.replied == 0) {
+                return;
+            }
+            PurcInquiryMould.setReadByState({}, function () {
+                getUnreadIds();
+                getUnreadCount();
+            });
+        };
+
         //获取未读单据id
         var getUnreadIds = function (){
             PurcInquiryMould.getUnreadIds({}, "", function (message) {
@@ -6602,6 +6642,16 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             });
         };
 
+        $scope.setOrdersReadByState = function () {
+            if (!$scope.unread.replied || $scope.unread.replied == 0) {
+                return;
+            }
+            PurcNotice.setReadByState({}, function () {
+                getUnreadIds();
+                getUnreadCount();
+            });
+        };
+
         var getUnreadIds = function () {
             PurcNotice.getUnreadIds({}, "", function (message) {
                 $scope.unreadCode = message.content;
@@ -11735,6 +11785,16 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 });
             };
 
+            $scope.setOrdersReadByState = function () {
+                if (!$scope.unread.replied || $scope.unread.replied == 0) {
+                    return;
+                }
+                MakeOrder.setReadByState({}, function () {
+                    getUnreadIds();
+                    getUnreadCount();
+                });
+            };
+
             var getUnreadIds = function () {
                 MakeOrder.getUnreadIds({}, "", function (message) {
                     $scope.unreadCode = message.content;

+ 4 - 0
src/main/webapp/resources/js/index/services/Make.js

@@ -51,6 +51,10 @@ define([ 'ngResource'], function() {
 				url: 'make/orders/setRead',
 				method: 'POST'
 			},
+			setReadByState:{
+				url: 'make/orders/setReadByState',
+				method: 'GET'
+			},
 			getUnreadIds:{
 				url: 'make/orders/getUnreadIds',
 				method: 'GET'

+ 20 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -100,6 +100,10 @@ define([ 'ngResource'], function() {
 				url: 'sale/orders/setRead',
 				method: 'POST'
 			},
+			setReadByState:{
+				url: 'sale/orders/setReadByState',
+				method: 'GET'
+			},
 			getUnreadIds:{
 				url: 'sale/orders/getUnreadIds',
 				method: 'GET'
@@ -268,6 +272,10 @@ define([ 'ngResource'], function() {
 				url: 'sale/changes/setRead',
 				method: 'POST'
 			},
+			setReadByState:{
+				url: 'sale/changes/setReadByState',
+				method: 'GET'
+			},
 			getUnreadIds:{
 				url: 'sale/changes/getUnreadIds',
 				method: 'GET'
@@ -378,6 +386,10 @@ define([ 'ngResource'], function() {
 				url: 'sale/inquiry/setRead',
 				method: 'POST'
 			},
+			setReadByState:{
+				url: 'sale/inquiry/setReadByState',
+				method: 'GET'
+			},
 			exportXls: {
 				url: 'sale/inquiry/xls/permission',
 				method: 'GET'
@@ -772,6 +784,10 @@ define([ 'ngResource'], function() {
 				url: 'sale/mould/setRead',
 				method: 'POST'
 			},
+			setReadByState:{
+				url: 'sale/mould/setReadByState',
+				method: 'GET'
+			},
 			getUnreadIds:{
 				url: 'sale/mould/getUnreadIds',
 				method: 'GET'
@@ -845,6 +861,10 @@ define([ 'ngResource'], function() {
 				url: 'sale/notice/setRead',
 				method: 'POST'
 			},
+			setReadByState:{
+				url: 'sale/notice/setReadByState',
+				method: 'GET'
+			},
 			getUnreadIds:{
 				url: 'sale/notice/getUnreadIds',
 				method: 'GET'

+ 1 - 1
src/main/webapp/resources/tpl/index/make/order.html

@@ -149,7 +149,7 @@
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done');setOrdersReadByState()">
 							已回复<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b>
 						</button>
 					</div>

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/change.html

@@ -125,7 +125,7 @@
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已处理
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done');setOrdersReadByState()">已处理
 							<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b>
 						</button>
 					</div>

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/inquiry.html

@@ -156,7 +156,7 @@
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-								ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已报价<b class="new-dot" ng-if="unread.replied>0">{{unread.replied>99?'99+':unread.replied}}</b></button>
+								ng-class="{'btn-info':active=='done'}" ng-click="setActive('done');setOrdersReadByState()">已报价<b class="new-dot" ng-if="unread.replied>0">{{unread.replied>99?'99+':unread.replied}}</b></button>
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/inquiry_mould.html

@@ -202,7 +202,7 @@ tbody td div.text-mould {
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已报价
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done');setOrdersReadByState()">已报价
 							<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b>
 						</button>
 					</div>

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/notice.html

@@ -203,7 +203,7 @@
                     </div>
                     <div class="btn-group btn-group-sm">
                         <button type="button" class="btn btn-default btn-line"
-                                ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已发货
+                                ng-class="{'btn-info':active=='done'}" ng-click="setActive('done');setOrdersReadByState()">已发货
                             <b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b>
                         </button>
                     </div>

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/order.html

@@ -167,7 +167,7 @@
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已回复<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b></button>
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done');setOrdersReadByState()">已回复<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b></button>
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"