Forráskód Böngészése

git-svn-id: https://192.168.57.71/svn/jsgkj@99 931142cf-59ea-a443-aa0e-51397b428577

xt_mayh 9 éve
szülő
commit
d4ef386d56
100 módosított fájl, 10518 hozzáadás és 0 törlés
  1. 395 0
      gkmb/trunk/Mooring/pom.xml
  2. 272 0
      gkmb/trunk/Mooring/src/main/java/com/baidu/ueditor/um/Uploader.java
  3. 35 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AgentConnectInfo.java
  4. 39 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AgentShipInfo.java
  5. 18 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AgentSubUser.java
  6. 61 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AlarmInfo.java
  7. 40 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorPointInfo.java
  8. 119 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorPositionApplyInfo.java
  9. 53 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorPositionInfo.java
  10. 54 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorageInfo.java
  11. 34 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ApplyAdjustInfo.java
  12. 18 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ApplyReleaseInfo.java
  13. 19 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AuditDepInfo.java
  14. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ChargeConfigInfo.java
  15. 17 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ConfigInfo.java
  16. 224 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/DynamicShip.java
  17. 16 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/FileInfo.java
  18. 33 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/HarbourInfo.java
  19. 21 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/IntegrityInfo.java
  20. 44 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ManageUser.java
  21. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/NoticeInfo.java
  22. 55 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/PilotageInfo.java
  23. 261 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ShipInfo.java
  24. 49 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/User.java
  25. 63 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/UserApplyUnit.java
  26. 34 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/UserMagerUnit.java
  27. 40 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/WeatherInfo.java
  28. 109 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AISData.java
  29. 34 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AISData4SingleShip.java
  30. 35 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AdjustAnchorPositionStatistic.java
  31. 34 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AgentSubUserParam.java
  32. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AgentUserParam.java
  33. 54 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AlarmInfoBO.java
  34. 30 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AlarmParam.java
  35. 14 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AlarmStatisticInfo.java
  36. 66 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionApplyAuditParam.java
  37. 173 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionApplyInfoBO.java
  38. 46 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionApplyParam.java
  39. 41 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionInfo.java
  40. 60 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionInfoBO.java
  41. 60 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorageInfoBO.java
  42. 27 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ApplyShipRealTime.java
  43. 32 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ApplyUnitAuditList.java
  44. 19 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/FileInfoBO.java
  45. 62 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/HarbourALLInfo.java
  46. 37 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/HarbourInfoBO.java
  47. 110 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/IntegrityBO.java
  48. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/LonLatDistrict.java
  49. 43 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ManageUserInfoBO.java
  50. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ManageUserInfoParam.java
  51. 37 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/NoticeInfoBO.java
  52. 33 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/NoticeInfoParam.java
  53. 36 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ShipPosition.java
  54. 21 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ShipSearch.java
  55. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ShipVo.java
  56. 25 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/TestAISData.java
  57. 70 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/UserApplyUnitBO.java
  58. 30 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/CacheName.java
  59. 52 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/EhcacheUtil.java
  60. 100 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/MooringCache.java
  61. 80 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/PrivilegeCache.java
  62. 118 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/UserCache.java
  63. 45 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cfg/ConfigPro.java
  64. 34 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cfg/ConfigProUtil.java
  65. 250 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/CommonUtil.java
  66. 339 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/Constants.java
  67. 17 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/KEY.java
  68. 483 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/RequestURL.java
  69. 290 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/ResponseSC.java
  70. 90 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AlarmController.java
  71. 460 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorController.java
  72. 957 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorageApplyController.java
  73. 133 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorageApplyControllerView.java
  74. 258 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorageLocalMangerView.java
  75. 194 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/BaseController.java
  76. 175 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/BaseView.java
  77. 85 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/ChargeController.java
  78. 175 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/ControlCenterControllerView.java
  79. 142 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/IntegrityController.java
  80. 45 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/MarineBoardControllerView.java
  81. 177 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/NoticeController.java
  82. 417 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/ShipController.java
  83. 74 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/TestController.java
  84. 74 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/UploadController.java
  85. 622 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/UserController.java
  86. 56 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/WeatherInfoController.java
  87. 44 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AisDao.java
  88. 47 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AlarmInfoDao.java
  89. 143 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AnchorDao.java
  90. 294 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AnchorageApplyDao.java
  91. 29 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ChargeConfigInfoDao.java
  92. 28 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ConfigDao.java
  93. 21 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/FileDao.java
  94. 57 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/IntegrityDao.java
  95. 8 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ManageUserDao.java
  96. 57 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/NoticeDao.java
  97. 80 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ShipDao.java
  98. 27 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/TestDao.java
  99. 185 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/UserDao.java
  100. 36 0
      gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/WeatherInfoDao.java

+ 395 - 0
gkmb/trunk/Mooring/pom.xml

@@ -0,0 +1,395 @@
+<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/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.loygra</groupId>
+	<artifactId>mooring</artifactId>
+	<version>1.0</version>
+	<packaging>war</packaging>
+	<name>mooring</name>
+
+	<properties>
+		<java-version>1.7</java-version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<org.springframework-version>4.0.1.RELEASE</org.springframework-version>
+	</properties>
+
+	<dependencies>
+
+
+		<!-- urlrewrite -->
+		<dependency>
+			<groupId>org.tuckey</groupId>
+			<artifactId>urlrewrite</artifactId>
+			<version>2.5.2</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.3.5</version>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-httpclient</groupId>
+			<artifactId>commons-httpclient</artifactId>
+			<version>3.0</version>
+		</dependency>
+
+		<!-- json-lib -->
+		<dependency>
+			<groupId>net.sf.json-lib</groupId>
+			<artifactId>json-lib</artifactId>
+			<version>2.4</version>
+			<classifier>jdk15</classifier>
+		</dependency>
+
+		<!-- jackson -->
+		<dependency>
+			<groupId>org.codehaus.jackson</groupId>
+			<artifactId>jackson-mapper-asl</artifactId>
+			<version>1.7.1</version>
+		</dependency>
+
+
+		<!-- spring -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-core</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-beans</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context-support</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-tx</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-aspects</artifactId>
+			<version>${org.springframework-version}</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-expression</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-oxm</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-web</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+		<!-- spring-websocket -->
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>3.1.0</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>2.3.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>2.3.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-websocket</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId> spring-messaging</artifactId>
+			<version>${org.springframework-version}</version>
+		</dependency>
+
+
+		<!-- logging -->
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.1.1</version>
+		</dependency>
+		<!-- slf4j -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+			<version>1.7.2</version>
+		</dependency>
+		<!-- log4j -->
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.14</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.xml</groupId>
+			<artifactId>jaxb-impl</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.xml</groupId>
+			<artifactId>jaxb-api</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>jstl</artifactId>
+			<version>1.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>taglibs</groupId>
+			<artifactId>standard</artifactId>
+			<version>1.1.2</version>
+		</dependency>
+
+
+		<!-- mybatis -->
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis</artifactId>
+			<version>3.1.1</version>
+		</dependency>
+		<!-- mybatis-spring -->
+		<dependency>
+			<groupId>org.mybatis</groupId>
+			<artifactId>mybatis-spring</artifactId>
+			<version>1.1.1</version>
+		</dependency>
+
+
+		<!-- dbcp -->
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>1.4</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-pool</groupId>
+			<artifactId>commons-pool</artifactId>
+			<version>1.6</version>
+		</dependency>
+
+		<!-- postgresql -->
+		<dependency>
+			<groupId>postgresql</groupId>
+			<artifactId>postgresql</artifactId>
+			<version>9.1-901.jdbc4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.directory.studio</groupId>
+			<artifactId>org.apache.commons.lang</artifactId>
+			<version>2.6</version>
+		</dependency>
+		<!-- <dependency> -->
+		<!-- <groupId>org.apache.directory.studio</groupId> -->
+		<!-- <artifactId>org.apache.commons.collections</artifactId> -->
+		<!-- <version>3.2.1</version> -->
+		<!-- </dependency> -->
+
+		<!-- quartz -->
+		<dependency>
+			<groupId>org.quartz-scheduler</groupId>
+			<artifactId>quartz</artifactId>
+			<version>1.8.4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.aspectj</groupId>
+			<artifactId>aspectjweaver</artifactId>
+			<version>1.6.11</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+
+
+		<dependency>
+			<groupId>cglib</groupId>
+			<artifactId>cglib</artifactId>
+			<version>2.2</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>1.14.8</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<!-- dom4j -->
+		<dependency>
+			<groupId>dom4j</groupId>
+			<artifactId>dom4j</artifactId>
+			<version>1.6.1</version>
+		</dependency>
+		<dependency>
+			<groupId>jaxen</groupId>
+			<artifactId>jaxen</artifactId>
+			<version>1.1.6</version>
+		</dependency>
+		<!-- dom4j -->
+
+
+		<!-- fileupload -->
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+			<version>1.2.2</version>
+		</dependency>
+		<!-- fileupload -->
+
+		<!-- echcache -->
+		<dependency>
+			<groupId>net.sf.ehcache</groupId>
+			<artifactId>ehcache</artifactId>
+			<version>2.10.0</version>
+		</dependency>
+		<!-- ehcache -->
+
+		<!-- jpinyin jar -->
+		<!-- <dependency> -->
+		<!-- <groupId>com.github.stuxuhai</groupId> -->
+		<!-- <artifactId>jpinyin</artifactId> -->
+		<!-- <version>1.0</version> -->
+		<!-- </dependency> -->
+		<!-- jpinyin jar -->
+
+		<!-- smartcn -->
+		<!-- <dependency> -->
+		<!-- <groupId>org.apache.lucene</groupId> -->
+		<!-- <artifactId>lucene-analyzers-smartcn</artifactId> -->
+		<!-- <version>5.2.1</version> -->
+		<!-- </dependency> -->
+		<!-- smartcn -->
+
+		<!-- 微信公众号 -->
+		<dependency>
+			<groupId>me.chanjar</groupId>
+			<artifactId>weixin-java-mp</artifactId>
+			<version>1.1.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.mail</groupId>
+			<artifactId>mail</artifactId>
+			<version>1.4.7</version>
+		</dependency>
+
+		<dependency>
+			<groupId>velocity</groupId>
+			<artifactId>velocity</artifactId>
+			<version>1.5</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity-tools</artifactId>
+			<version>2.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.4</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+			<version>3.9</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<directory>./build</directory>
+		<resources>
+			<resource>
+				<directory>src/main/java</directory>
+				<includes>
+					<!-- <include>**/*.java</include> -->
+					<include>**/*.xml</include>
+				</includes>
+			</resource>
+			<resource>
+				<directory>src/main/resources</directory>
+				<includes>
+					<include>**/*.xml</include>
+					<include>**/*.properties</include>
+				</includes>
+			</resource>
+		</resources>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>${java-version}</source>
+					<target>${java-version}</target>
+				</configuration>
+			</plugin>
+
+			<!-- <plugin> -->
+			<!-- <artifactId>maven-war-plugin</artifactId> -->
+			<!-- <version>2.3</version> -->
+			<!-- <configuration> -->
+			<!-- <warSourceDirectory>src/main/webapp</warSourceDirectory> -->
+			<!-- <failOnMissingWebXml>false</failOnMissingWebXml> -->
+			<!-- </configuration> -->
+			<!-- </plugin> -->
+
+		</plugins>
+	</build>
+</project>

+ 272 - 0
gkmb/trunk/Mooring/src/main/java/com/baidu/ueditor/um/Uploader.java

@@ -0,0 +1,272 @@
+package com.baidu.ueditor.um;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Random;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.fileupload.FileItemIterator;
+import org.apache.commons.fileupload.FileItemStream;
+import org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException;
+import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.fileupload.util.Streams;
+
+import sun.misc.BASE64Decoder;
+/**
+ * UEditor文件上传辅助类
+ *
+ */
+public class Uploader {
+	// 输出文件地址
+	private String url = "";
+	// 上传文件名
+	private String fileName = "";
+	// 状态
+	private String state = "";
+	// 文件类型
+	private String type = "";
+	// 原始文件名
+	private String originalName = "";
+	// 文件大小
+	private long size = 0;
+
+	private HttpServletRequest request = null;
+	private String title = "";
+
+	// 保存路径
+	private String savePath = "upload";
+	// 文件允许格式
+	private String[] allowFiles = { ".rar", ".doc", ".docx", ".zip", ".pdf",".txt", ".swf", ".wmv", ".gif", ".png", ".jpg", ".jpeg", ".bmp" };
+	// 文件大小限制,单位KB
+	private int maxSize = 10000;
+	
+	private HashMap<String, String> errorInfo = new HashMap<String, String>();
+
+	public Uploader(HttpServletRequest request) {
+		this.request = request;
+		HashMap<String, String> tmp = this.errorInfo;
+		tmp.put("SUCCESS", "SUCCESS"); //默认成功
+		tmp.put("NOFILE", "未包含文件上传域");
+		tmp.put("TYPE", "不允许的文件格式");
+		tmp.put("SIZE", "文件大小超出限制");
+		tmp.put("ENTYPE", "请求类型ENTYPE错误");
+		tmp.put("REQUEST", "上传请求异常");
+		tmp.put("IO", "IO异常");
+		tmp.put("DIR", "目录创建失败");
+		tmp.put("UNKNOWN", "未知错误");
+		
+	}
+
+	public void upload() throws Exception {
+		boolean isMultipart = ServletFileUpload.isMultipartContent(this.request);
+		if (!isMultipart) {
+			this.state = this.errorInfo.get("NOFILE");
+			return;
+		}
+		DiskFileItemFactory dff = new DiskFileItemFactory();
+		String savePath = this.getFolder(this.savePath);
+		dff.setRepository(new File(savePath));
+		try {
+			ServletFileUpload sfu = new ServletFileUpload(dff);
+			sfu.setSizeMax(this.maxSize * 1024);
+			sfu.setHeaderEncoding("utf-8");
+			FileItemIterator fii = sfu.getItemIterator(this.request);
+			while (fii.hasNext()) {
+				FileItemStream fis = fii.next();
+				if (!fis.isFormField()) {
+					this.originalName = fis.getName().substring(fis.getName().lastIndexOf(System.getProperty("file.separator")) + 1);
+					if (!this.checkFileType(this.originalName)) {
+						this.state = this.errorInfo.get("TYPE");
+						continue;
+					}
+					this.fileName = this.getName(this.originalName);
+					this.type = this.getFileExt(this.fileName);
+					this.url = savePath + "/" + this.fileName;
+					BufferedInputStream in = new BufferedInputStream(fis.openStream());
+					File file = new File(this.getPhysicalPath(this.url));
+					FileOutputStream out = new FileOutputStream( file );
+					BufferedOutputStream output = new BufferedOutputStream(out);
+					Streams.copy(in, output, true);
+					this.state=this.errorInfo.get("SUCCESS");
+					this.size = file.length();
+					//UE中只会处理单张上传,完成后即退出
+					break;
+				} else {
+					String fname = fis.getFieldName();
+					//只处理title,其余表单请自行处理
+					if(!fname.equals("pictitle")){
+						continue;
+					}
+                    BufferedInputStream in = new BufferedInputStream(fis.openStream());
+                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+                    StringBuffer result = new StringBuffer();  
+                    while (reader.ready()) {  
+                        result.append((char)reader.read());  
+                    }
+                    this.title = new String(result.toString().getBytes(),"utf-8");
+                    reader.close();  
+                    
+				}
+			}
+		} catch (SizeLimitExceededException e) {
+			this.state = this.errorInfo.get("SIZE");
+		} catch (InvalidContentTypeException e) {
+			this.state = this.errorInfo.get("ENTYPE");
+		} catch (FileUploadException e) {
+			this.state = this.errorInfo.get("REQUEST");
+		} catch (Exception e) {
+			this.state = this.errorInfo.get("UNKNOWN");
+		}
+	}
+	
+	/**
+	 * 接受并保存以base64格式上传的文件
+	 * @param fieldName
+	 */
+	public void uploadBase64(String fieldName){
+		String savePath = this.getFolder(this.savePath);
+		String base64Data = this.request.getParameter(fieldName);
+		this.fileName = this.getName("test.png");
+		this.url = savePath + "/" + this.fileName;
+		BASE64Decoder decoder = new BASE64Decoder();
+		try {
+			File outFile = new File(this.getPhysicalPath(this.url));
+			OutputStream ro = new FileOutputStream(outFile);
+			byte[] b = decoder.decodeBuffer(base64Data);
+			for (int i = 0; i < b.length; ++i) {
+				if (b[i] < 0) {
+					b[i] += 256;
+				}
+			}
+			ro.write(b);
+			ro.flush();
+			ro.close();
+			this.state=this.errorInfo.get("SUCCESS");
+		} catch (Exception e) {
+			this.state = this.errorInfo.get("IO");
+		}
+	}
+
+	/**
+	 * 文件类型判断
+	 * 
+	 * @param fileName
+	 * @return
+	 */
+	private boolean checkFileType(String fileName) {
+		Iterator<String> type = Arrays.asList(this.allowFiles).iterator();
+		while (type.hasNext()) {
+			String ext = type.next();
+			if (fileName.toLowerCase().endsWith(ext)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * 获取文件扩展名
+	 * 
+	 * @return string
+	 */
+	private String getFileExt(String fileName) {
+		return fileName.substring(fileName.lastIndexOf("."));
+	}
+
+	/**
+	 * 依据原始文件名生成新文件名
+	 * @return
+	 */
+	private String getName(String fileName) {
+		Random random = new Random();
+		return this.fileName = "" + random.nextInt(10000)
+				+ System.currentTimeMillis() + this.getFileExt(fileName);
+	}
+
+	/**
+	 * 根据字符串创建本地目录 并按照日期建立子目录返回
+	 * @param path 
+	 * @return 
+	 */
+	private String getFolder(String path) {
+		SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd");
+		path += "/" + formater.format(new Date());
+		File dir = new File(this.getPhysicalPath(path));
+		if (!dir.exists()) {
+			try {
+				dir.mkdirs();
+			} catch (Exception e) {
+				this.state = this.errorInfo.get("DIR");
+				return "";
+			}
+		}
+		return path;
+	}
+
+	/**
+	 * 根据传入的虚拟路径获取物理路径
+	 * 
+	 * @param path
+	 * @return
+	 */
+	private String getPhysicalPath(String path) {
+		String servletPath = this.request.getServletPath();
+		String realPath = this.request.getSession().getServletContext()
+				.getRealPath(servletPath);
+		return new File(realPath).getParent() +"/" +path;
+	}
+
+	public void setSavePath(String savePath) {
+		this.savePath = savePath;
+	}
+
+	public void setAllowFiles(String[] allowFiles) {
+		this.allowFiles = allowFiles;
+	}
+
+	public void setMaxSize(int size) {
+		this.maxSize = size;
+	}
+
+	public long getSize() {
+		return this.size;
+	}
+
+	public String getUrl() {
+		return this.url;
+	}
+
+	public String getFileName() {
+		return this.fileName;
+	}
+
+	public String getState() {
+		return this.state;
+	}
+	
+	public String getTitle() {
+		return this.title;
+	}
+
+	public String getType() {
+		return this.type;
+	}
+
+	public String getOriginalName() {
+		return this.originalName;
+	}
+}

+ 35 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AgentConnectInfo.java

@@ -0,0 +1,35 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class AgentConnectInfo {
+	
+	private Integer id;
+	// ID
+	private Integer ship_agent_id ;
+	// 申报使用单位ID
+	private String user_name ;
+	// 姓名
+	private String email;
+	
+	private String phone;
+	
+	private String id_no ;
+	
+	private Long id_file_code ;
+	// 身份证图片id
+	private Date insert_time ;
+	// 插入时间
+	private Integer insert_user_id ;
+	// 插入userid
+	
+}

+ 39 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AgentShipInfo.java

@@ -0,0 +1,39 @@
+package com.loygra.mooring.bean;
+
+import java.sql.Timestamp;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AgentShipInfo extends ShipInfo {
+	/**
+	 * pk
+	 */
+	private Long id;
+	/**
+	 * 船代公司ID
+	 */
+	private Integer agent_company_id;
+	/**
+	 * mmsi
+	 */
+	private String mmsi;
+	/**
+	 * 添加时间
+	 */
+	private Timestamp insert_time;
+	/**
+	 * 删除标记
+	 */
+	private Integer delete_flag;
+	// 船舶种类代码名称
+	private String cbzldmmc;
+	private String nation;
+	private Integer begin;
+	private Integer end;
+}

+ 18 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AgentSubUser.java

@@ -0,0 +1,18 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AgentSubUser {
+
+	private Integer id;
+	private Integer agent_user_id;
+	private Date insert_time;
+}

+ 61 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AlarmInfo.java

@@ -0,0 +1,61 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AlarmInfo {
+	// pk
+	private Long id;
+	// 港口ID
+	private Integer harbour_code;
+	// 分类
+	private Integer category;
+	// 类型
+	private Integer alarm_type;
+	// 锚地ID
+	private Integer anchorage_id;
+	// 锚位ID
+	private Integer anchorposition_id;
+	// 船舶ID
+	private Integer ship_id;
+	// 申报计划ID
+	private Long apply_id;
+	// 添加时间
+	private Date insert_time;
+	// 关联用户类型
+	private Integer relate_type;
+	// 公告ID
+	private Integer notice_id;
+	// MMSI
+	private String mmsi;
+	// operate
+	private Integer operate;
+	// 删除标记
+	private Integer delete_flag;
+
+	public Map<String, Object> getMapParam() {
+		Map<String, Object> param = new HashMap<String, Object>();
+		param.put("id", id);
+		param.put("harbour_code", harbour_code);
+		param.put("category", category);
+		param.put("alarm_type", alarm_type);
+		param.put("anchorage_id", anchorage_id);
+		param.put("anchorposition_id", anchorposition_id);
+		param.put("ship_id", ship_id);
+		param.put("apply_id", apply_id);
+		param.put("relate_type", relate_type);
+		param.put("mmsi", mmsi);
+		param.put("delete_flag", delete_flag);
+		param.put("operate", operate);
+		return param;
+	}
+}

+ 40 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorPointInfo.java

@@ -0,0 +1,40 @@
+package com.loygra.mooring.bean;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPointInfo {
+	/**
+	 * pk
+	 */
+	private Integer id;
+	/**
+	 * 港口code
+	 */
+	private Integer harbour_code;
+	/**
+	 * 锚位ID
+	 */
+	private Integer anchor_id;
+	/**
+	 * 界点名称
+	 */
+	private String name;
+	/**
+	 * 经度
+	 */
+	private Double longitute;
+	/**
+	 * 纬度
+	 */
+	private Double latitute;
+	/**
+	 * 状态
+	 */
+	private Integer status;
+}

+ 119 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorPositionApplyInfo.java

@@ -0,0 +1,119 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * 锚地使用计划申请
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionApplyInfo {
+	// id
+	private Long id;
+	// 申请公司ID
+	private Integer agent_company_id;
+	// 船舶呼号
+	private String cbhh;
+	// 船舶编号
+	private String ship_id;
+	// 来港code
+	private Integer from_harbour_code;
+	// 停靠港code
+	private Integer park_harbour_code;
+	// 下一挂靠港code
+	private Integer to_harbour_code;
+	// 贸易类型
+	private Integer trade_type;
+	// 长度
+	private Double length;
+	// 货物
+	private String goods;
+	// 船舶吃水
+	private String cbcs;
+	// 净吨
+	private Double net_tons;
+	// 载吨
+	private Double total_tons;
+	// 船舶类型
+	private Integer apply_ship_type;
+	// 船舶联系方式
+	private String ship_contact;
+	// 申请计划的状态
+	private Integer status;
+	// 计划停泊时间
+	private Date plan_park_time;
+	// 计划离泊时间
+	private Date plan_leave_time;
+	// 实际锚泊时间
+	private Date modify_park_time;
+	// 实际离泊时间
+	private Date modify_leave_time;
+	// 修改时间审核标记
+	private Integer modify_time_audit_flag;
+	// 实际停泊时间
+	private Date actual_park_time;
+	// 实际离泊时间
+	private Date actual_leave_time;
+	// 诚信分值
+	private String integrity;
+	// 申请港口Id
+	private Integer apply_harbour_code;
+	// 服从异地调剂
+	private Integer adjust_flag;
+	// 申请提交时间
+	private Date apply_time;
+	// 核准港口code
+	private Integer audit_harbour_code;
+	// 核准锚地ID
+	private Integer audit_anchorage_id;
+	// 核准锚位ID
+	private Long audit_anchor_positon_id;
+	// 审核用户ID
+	private Long audit_user_id;
+	// 预计金额
+	private Double plan_price;
+	// 实际金额
+	private Double actual_price;
+	// 审核时间
+	private Date audit_time;
+	// 备注
+	private String remark;
+	// mmsi
+	private String mmsi;
+	//实际停泊经度
+	private Double actual_park_lon;
+	//实际停泊纬度
+	private Double actual_park_lat;
+	// 联系人
+	private String contact_person;
+	// 行驶方向
+	private Integer apply_ship_forward_type;
+	// 是否本港船舶
+	private Integer apply_ship_harbour_type;
+	// 停泊理由
+	private String park_reason;
+	// 来港名称
+	private String from_harbour_name;
+	// 去港名称
+	private String to_harbour_name;
+
+	// 异港调剂港口号,多个以逗号分隔
+	private String adjust_harbour_codes;
+	// 危化品分类
+	private Integer danger_goods_category;
+	//
+	// 危化品分类名称
+	private String danger_goods_category_name;
+	// 申请类型
+	private Integer apply_type;
+}

+ 53 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorPositionInfo.java

@@ -0,0 +1,53 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionInfo {
+	private Integer id;
+	// 锚地ID
+	private Integer anchorage_id;
+	// 港口id
+	private Integer harbour_code;
+	// 锚地名称
+	private String name;
+	// 锚地类型
+	private Integer type;
+	// 锚泊类型
+	private Integer mooring_type;
+	// 中心经度
+	private Double center_longitute;
+	// 中心纬度
+	private Double center_latitute;
+	// 锚位等级
+	private Integer position_level;
+	// 宽度
+	private Double length;
+	// 宽度
+	private Double width;
+	// 是否省控锚位
+	private Integer attach_flag;
+	//修改省控锚位
+	private Integer modify_attach_flag;
+	//修改省控锚位
+	private Integer modify_attach_audit_status;
+	// 排序
+	private Integer seq;
+	// 状态
+	private Integer status;
+	// 划分时间
+	private Date divide_time;
+	// 划分人员
+	private Integer divide_user_id;
+	//深度
+	private Double deep;
+	//等级名称
+	private String level_name;
+}

+ 54 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AnchorageInfo.java

@@ -0,0 +1,54 @@
+package com.loygra.mooring.bean;
+
+import java.util.List;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorageInfo {
+
+	private Integer id;
+
+	// 港口id
+	private Integer harbour_code;
+
+	// 服务港口ID列表,以-分割
+	private String serve_harbour_codes;
+
+	// 锚地名称
+	private String name;
+	// 建设单位
+	private String organization;
+	// 位置
+	private String position;
+	// 地质
+	private String geology;
+	// 长度
+	private Double length;
+	// 宽度
+	private Double width;
+	// 深度
+	private String deep;
+	// 面积
+	private Double square;
+	// 半径
+	private Double radius;
+	// 用途
+	private String purpose;
+	// 锚泊方式,多个以-分割
+	private String anchor_type;
+	// 浮筒个数
+	private Integer buoy_num;
+
+	// 锚泊艘数
+	private Integer anchorpostion_num;
+	// 最大锚泊能力
+	private String capacity;
+	//界标
+	List<AnchorPointInfo> points;
+}

+ 34 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ApplyAdjustInfo.java

@@ -0,0 +1,34 @@
+package com.loygra.mooring.bean;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ApplyAdjustInfo {
+	private Long id;
+	private Long apply_id;
+	private Integer harbour_code;
+	private String harbour_code_name;
+	private Integer status;
+	private String remark;
+	//
+	private String status_name;
+	// 调剂港口,对于锚位的资源进行统计
+	private Integer available_position_num = 0;
+	// 货物类型统计
+	private Map<String, Integer> goods_statistic = new HashMap<String, Integer>();
+	// List<AdjustAnchorPositionStatistic> goods_statistic = new
+	// ArrayList<AdjustAnchorPositionStatistic>();
+	// 吨位类型统计
+	private Map<String, Integer> tons_statistic = new HashMap<String, Integer>();
+	// private List<AdjustAnchorPositionStatistic> tons_statistic = new
+	// ArrayList<AdjustAnchorPositionStatistic>();;
+	//
+}

+ 18 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ApplyReleaseInfo.java

@@ -0,0 +1,18 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ApplyReleaseInfo {
+
+	private Long id;
+	private Date release_time;
+	private Integer user_id;
+}

+ 19 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/AuditDepInfo.java

@@ -0,0 +1,19 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class AuditDepInfo {
+	private Long id;
+	private Integer apply_id;
+	private Integer from_harbour_code;
+	private Integer to_harbour_code;
+	private Date submit_time;
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ChargeConfigInfo.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.bean;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ChargeConfigInfo {
+
+	private Integer id;
+	// 港口号
+	private Integer harbour_code;
+	// rate1
+	private Integer param1;
+	// rate2
+	private Integer param2;
+	// rate3
+	private Integer param3;
+	// rate4
+	private Double param4;
+	// rate4
+	private Double param5;
+	// rate6
+	private Double param6;
+}

+ 17 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ConfigInfo.java

@@ -0,0 +1,17 @@
+package com.loygra.mooring.bean;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class ConfigInfo {
+	private Integer id;
+	private String type_name;
+	private String name;
+	private Integer value;
+	private String category;
+}

+ 224 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/DynamicShip.java

@@ -0,0 +1,224 @@
+package com.loygra.mooring.bean;
+
+import com.alibaba.fastjson.annotation.JSONField; 
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by mayh on 2016/4/5.
+ */
+public class DynamicShip implements Serializable {
+    private String mmsi;  //船舶MMSI
+    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
+    private Date time;  //实时信号时间
+    private float lon;   //经度
+    private float lat;   //纬度
+    private float course;//航迹向
+    private float truehead;//船首向
+    private String name;   //船名
+    private int ship_type;//船舶以及货物类型
+    private int imo;   //船舶imo
+    private int status;//航行状态
+    private float speed; //航行速度
+    private String eta;   //预计到港时间
+    private String dest;  //目的港
+    private int length;//船长
+    private int width;  //船宽
+    private String callsign;//呼号
+    private String flag;   //船旗
+    private String build;   //建造时间
+    private String port;    //船籍港
+
+    private Integer alarm_status = 0; //0:正常;1:黄色预警; 2:红色报警
+
+    public String getMmsi() {
+        return mmsi;
+    }
+
+    public void setMmsi(String mmsi) {
+        this.mmsi = mmsi;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    /**
+     * 由于返回的船舶时间是long型 并且除了1000 所以获取之后需要乘以1000L
+     * @param time
+     */
+    public void setTime(Date time) {
+        this.time = new Date(time.getTime() * 1000L);
+    }
+
+    public float getLon() {
+        return lon;
+    }
+
+    public void setLon(float lon) {
+        this.lon = lon;
+    }
+
+    public float getLat() {
+        return lat;
+    }
+
+    public void setLat(float lat) {
+        this.lat = lat;
+    }
+
+    public float getCourse() {
+        return course;
+    }
+
+    public void setCourse(float course) {
+        this.course = course;
+    }
+
+    public float getTruehead() {
+        return truehead;
+    }
+
+    public void setTruehead(float truehead) {
+        this.truehead = truehead;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getShip_type() {
+        return ship_type;
+    }
+
+    public void setShip_type(int ship_type) {
+        this.ship_type = ship_type;
+    }
+
+    public int getImo() {
+        return imo;
+    }
+
+    public void setImo(int imo) {
+        this.imo = imo;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public float getSpeed() {
+        return speed;
+    }
+
+    public void setSpeed(float speed) {
+        this.speed = speed;
+    }
+
+    public float getLength() {
+        return length;
+    }
+
+    public void setLength(int length) {
+        this.length = length;
+    }
+
+    public float getWidth() {
+        return width;
+    }
+
+    public void setWidth(int width) {
+        this.width = width;
+    }
+
+    public String getEta() {
+        return eta;
+    }
+
+    public void setEta(String eta) {
+        this.eta = eta;
+    }
+
+    public String getDest() {
+        return dest;
+    }
+
+    public void setDest(String dest) {
+        this.dest = dest;
+    }
+
+    public String getCallsign() {
+        return callsign;
+    }
+
+    public void setCallsign(String callsign) {
+        this.callsign = callsign;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public String getBuild() {
+        return build;
+    }
+
+    public void setBuild(String build) {
+        this.build = build;
+    }
+
+    public String getPort() {
+        return port;
+    }
+
+    public void setPort(String port) {
+        this.port = port;
+    }
+
+    public Integer getAlarm_status() {
+        return alarm_status;
+    }
+
+    public void setAlarm_status(Integer alarm_status) {
+        this.alarm_status = alarm_status;
+    }
+
+    @Override
+    public String toString() {
+        return "DynamicShip{" +
+                "mmsi='" + mmsi + '\'' +
+                ", time=" + time +
+                ", lon=" + lon +
+                ", lat=" + lat +
+                ", course=" + course +
+                ", truehead=" + truehead +
+                ", name='" + name + '\'' +
+                ", ship_type='" + ship_type + '\'' +
+                ", imo='" + imo + '\'' +
+                ", status='" + status + '\'' +
+                ", speed=" + speed +
+                ", eta='" + eta + '\'' +
+                ", dest='" + dest + '\'' +
+                ", length=" + length +
+                ", width=" + width +
+                ", callsign='" + callsign + '\'' +
+                ", flag='" + flag + '\'' +
+                ", build='" + build + '\'' +
+                ", port='" + port + '\'' +
+                ", alarm_status=" + alarm_status +
+                '}';
+    }
+}

+ 16 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/FileInfo.java

@@ -0,0 +1,16 @@
+package com.loygra.mooring.bean;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class FileInfo {
+	private Long id;
+	private String name;
+	private String fix;
+	private Long file_size;
+}

+ 33 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/HarbourInfo.java

@@ -0,0 +1,33 @@
+package com.loygra.mooring.bean;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class HarbourInfo {
+
+	// id
+	private Integer id;
+	
+	// 港口名称
+	private String name;
+	
+	// 港口代码
+	private Integer code ;
+	
+	// 自然海岸线长度
+	private Integer coastline;
+	
+	// 经度
+	private double longitute ;
+	
+	// 纬度
+	private double latitue ;
+	
+	// 联系方式
+	private double contact ;
+}

+ 21 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/IntegrityInfo.java

@@ -0,0 +1,21 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class IntegrityInfo {
+
+	private Integer id;
+	private Integer apply_id;
+	private Integer integrity_code;
+	private Integer integrity_name;
+	private Double score;
+	private Date insert_time;
+}

+ 44 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ManageUser.java

@@ -0,0 +1,44 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class ManageUser {
+	
+	//用户ID,与对应User表中的ID相同
+	private Long id;
+	
+	//港口ID
+	private Integer harbourId;
+	
+	private Integer mooringId;
+	
+	private String username;
+	
+	private String password;
+	
+	private String email ;
+	
+	//单位名称
+	private String companyName;
+	
+	//单位地址
+	private String address;
+	
+	//传真号码
+	private String fax;
+	
+	//电话号码
+	private String telphone;
+	
+	//插入时间
+	private Date insertTime;
+	private Integer insertUserId;
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/NoticeInfo.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NoticeInfo {
+	private Integer id;
+	private String title;
+	private Integer status;
+	private Integer type;
+	private Date time;
+	private Integer insert_user_id;
+	private Integer insert_relate_type;
+	private String insert_user_name;
+	private String notice_level;
+	private Long file_id;
+	private String file_fix;
+	private String content;
+	private String unit_name;
+	private String remark;
+}

+ 55 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/PilotageInfo.java

@@ -0,0 +1,55 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class PilotageInfo {
+	//pk
+	private Integer id;
+	//状态(1今日进江,2今日出江,3今日移泊,4明日进江,5明日出江,6明日移泊)
+	private Integer type;
+	//船舶编号
+	private String ship_id;
+	//船舶名称
+	private String ship_name;
+	//船舶国籍
+	private String nationality;
+	//长度
+	private String ship_len;
+	//吃水
+	private String depth_water;
+	//代理
+	private String proxy;
+	//船舶类型
+	private String ship_type;
+	//始发地
+	private String begin_local;
+	//目的地
+	private String dest_local;
+	//开航时间
+	private String begin_date;
+	//抵宝时间
+	private String arrival_bao_date;
+	//宝交通船
+	private String bao_traffic_ship;
+	//通宝段引航员
+	private String tbao_pilot;
+	//江阴以上引航员
+	private String jyin_pilot;
+	//抵港时间
+	private String arrival_harbour_date;
+	//引领备注
+	private String remark;
+	//数据添加时间
+	private Date insert_time;
+	//
+	//状态(1今日进江,2今日出江,3今日移泊,4明日进江,5明日出江,6明日移泊)
+	private String type_name;
+}

+ 261 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/ShipInfo.java

@@ -0,0 +1,261 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ShipInfo {
+	/**
+	 * pk
+	 */
+	private Long id;
+	/**
+	 * 船舶编号(规则为中国籍船舶使用A+船舶初次登记号;外国籍船舶使用B+IMO编号;港澳船舶使用C+牌簿号,考虑到未来的“二岸三通”问题,预留D+
+	 * 台湾船舶标识号。)
+	 */
+	private String cbbh;
+	/**
+	 * 船舶分类(A:中国籍船舶 B:外国籍船舶 C:港澳船舶)
+	 */
+	private String cbfl;
+	/**
+	 * 船舶登记号(P(表示临时证书号,可选)+4位发证机构编码+2位年+6位顺序号)
+	 */
+	private String cbdjh;
+	/**
+	 * 中文船名
+	 */
+	private String zwcm;
+	/**
+	 * 英文船名
+	 */
+	private String ywcm;
+	/**
+	 * 初次登记号
+	 */
+	private String ccdjh;
+	/**
+	 * 船检登记号
+	 */
+	private String cjdjh;
+	/**
+	 * 船舶呼号
+	 */
+	private String cbhh;
+	/**
+	 * IMO编号
+	 */
+	private String imobh;
+	/**
+	 * 牌簿号
+	 */
+	private String pbh;
+	/**
+	 * 国籍代码
+	 */
+	private String gjdm;
+	/**
+	 * 海船内河船标志
+	 */
+	private String hcnhcbz;
+	/**
+	 * 航线
+	 */
+	private String hx;
+	/**
+	 * 航区代码
+	 */
+	private String hqdm;
+	/**
+	 * 船籍港代码
+	 */
+	private String cjgdm;
+	/**
+	 * 船籍港
+	 */
+	private String cjg;
+	/**
+	 * 船舶种类代码
+	 */
+	private String cbzldm;
+	/**
+	 * 船体材料代码
+	 */
+	private String ctcldm;
+	/**
+	 * 建成日期
+	 */
+	private Date jcrq;
+
+	/**
+	 * 造船厂
+	 */
+	private String zcc;
+	/**
+	 * 船舶长度(米)
+	 */
+	private Double cbcd;
+	/**
+	 * 船舶型深(米)
+	 */
+	private Double cbxs;
+	/**
+	 * 船舶型宽(米)
+	 */
+	private Double cbxk;
+	/**
+	 * 总吨
+	 */
+	private Double zd;
+	/**
+	 * 净吨
+	 */
+	private Double jd;
+	/**
+	 * 总载重吨
+	 */
+	private Double zzzd;
+	/**
+	 * 主机种类代码
+	 */
+	private String zjzldm;
+	/**
+	 * 主机数量(个)
+	 */
+	private Double zjsl;
+	/**
+	 * 主机功率(kw)
+	 */
+	private Double zjgl;
+	/**
+	 * 推进器种类代码
+	 */
+	private Double tjqzldm;
+	/**
+	 * 推进器数量(个)
+	 */
+	private Double tjqsl;
+	/**
+	 * 夏季满载吃水
+	 */
+	private Double xjmzcs;
+	/**
+	 * 核定抗风等级
+	 */
+	private Double hdkfdj;
+	/**
+	 * 最小干舷
+	 */
+	private Double zxgx;
+	/**
+	 * 箱位
+	 */
+	private Double xw;
+	/**
+	 * 车位
+	 */
+	private Double cw;
+	/**
+	 * 客位
+	 */
+	private Double kw;
+	/**
+	 * 航速(节)
+	 */
+	private Double hs;
+	/**
+	 * 船舶所有人
+	 */
+	private String cbsyr;
+	/**
+	 * 船舶经营人
+	 */
+	private String cbjyr;
+	/**
+	 * 所属省级海事机构
+	 */
+	private String sssjhsjg;
+	/**
+	 * 船级社代码
+	 */
+	private String cjsdm;
+	/**
+	 * 最低安全配员人数
+	 */
+	private Double zdaqpyrs;
+	/**
+	 * 救生设备最大人数
+	 */
+	private Double jssbzdrs;
+	/**
+	 * IC卡号
+	 */
+	private String ickh;
+	/**
+	 * 条形码
+	 */
+	private String txm;
+	/**
+	 * 船舶标识号
+	 */
+	private String cbbsh;
+	/**
+	 * 备注
+	 */
+	private String bz;
+	/**
+	 * fkbz
+	 */
+	private String fkbz;
+	/**
+	 * djbz
+	 */
+	private String djbz;
+	/**
+	 * lzbz
+	 */
+	private String lzbz;
+	/**
+	 * jgdm
+	 */
+	private String jgdm;
+	/**
+	 * czsj
+	 */
+	private Date czsj;
+	/**
+	 * czydm
+	 */
+	private String czydm;
+	/**
+	 * gxbz
+	 */
+	private String gxbz;
+	/**
+	 * xxly
+	 */
+	private String xxly;
+	/**
+	 * mrut
+	 */
+	private Date mrut;
+	/**
+	 * mtime
+	 */
+	private Date mtime;
+	/**
+	 * 英文船名去空格
+	 */
+	private String ywcm2;
+	/**
+	 * 船舶名称
+	 * 
+	 */
+	private String cbmc;
+}

+ 49 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/User.java

@@ -0,0 +1,49 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class User {
+
+	private Integer id;
+	// 用户ID
+	private String name;
+	// 用户名
+	private String password;
+
+	private String email;
+
+	private String login_name;
+
+	private Integer relate_type;
+	// 账户信息关联的ID
+	private Integer status;
+	// 账户状态
+	private Date register_time;
+	// 注册时间
+	private Date lastest_login_time;
+	// 最后登录时间
+
+	private String ukey;
+	// 用户KEY
+	private String active_code;
+
+	private Date active_code_time;
+	// active time
+	// 备注
+	private String remark;
+	//
+	private String status_name;
+	//部门或单位名称
+	private String dep_name;
+	//港口code:申报单位为账户审核港口code、港口管理单位为港口code、省厅为南京港code、海事局为南京港code
+	private Integer harbour_code;
+	
+}

+ 63 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/UserApplyUnit.java

@@ -0,0 +1,63 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class UserApplyUnit {
+
+	private Long id;
+	// ID
+	private Integer audit_harbour_id;
+	// 账户审核港口ID
+	private String company_name;
+	// 公司名称
+	private String legal_person_name;
+	// 法人姓名
+	private String legal_person_id;
+	// 法人身份证号
+	private Long legal_person_id_file_code;
+	// 法人身份证照片
+	private String licence_id;
+	// 公司营业执照号
+	private Long licence_file_code;
+	// 公司营业执照照片号
+	private String occ_id;
+	// 组织id
+	private Long occ_file_code;
+	//财务人员联系方式
+	private String finacial_user_contact;
+	// 组织机构代码照片号
+	private String address;
+	// 公司地址
+	private String fax;
+	// 公司传真
+	private String telphone;
+	// 公司电话
+	private Date register_time;
+	// 注册时间
+	private Integer integrity_score;
+	// 诚信分值
+	private Date audit_time;
+	// 审核时间
+	private Long audit_user_id;
+	// 审核人员
+	// 备注
+	private String remark;
+
+	// ----------扩展字段---------------------------
+	private String audit_harbour_name;
+	//
+	// ------------联系人信息-------
+	private String contact_user_name ;
+	private String contact_email;
+	private String contact_phone;
+	private String occ_fix_name;
+	private String licence_fix_name;
+}

+ 34 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/UserMagerUnit.java

@@ -0,0 +1,34 @@
+package com.loygra.mooring.bean;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class UserMagerUnit {
+	
+	private Long id;
+	//用户ID
+	private Long harbour_id ;
+	// 港口ID
+	private Integer mooring_id ;
+	// 锚地ID
+	private String company_name ;
+	// 公司名称
+	private String address ;
+	
+	private String fax ;
+	
+	private String telphone ;
+	
+	private Date insert_time ;
+	
+	private Long insert_user_id ;
+	// 添加人员
+	
+}

+ 40 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bean/WeatherInfo.java

@@ -0,0 +1,40 @@
+package com.loygra.mooring.bean;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class WeatherInfo {
+	// ID
+	private Integer id;
+	// 港口code
+	private Integer harbour_code;
+	// 城市名称
+	private String city_name;
+	// 天气概况
+	private String cond;
+	// 天气图片代码
+	private String cond_code ;
+	// 温度
+	private String temperature;
+	// 湿度
+	private String humidity;
+	// 降雨量
+	private String rainfall;
+	// 压力
+	private String pressure;
+	// 能见度
+	private String visibility;
+	// 风向(度)
+	private String wind_degree;
+	// 风向
+	private String wind_direction;
+	// 风级
+	private String wind_level;
+	// 风速
+	private String wind_speed;
+}

+ 109 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AISData.java

@@ -0,0 +1,109 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * ais实体
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AISData {
+	/**
+	 * 船舶MMSI
+	 */
+	private String mmsi;
+	/**
+	 * 实时信号时间
+	 */
+	private Date time;
+	/**
+	 * 经度
+	 */
+	private Double lon;
+	/**
+	 * 纬度
+	 */
+	private Double lat;
+	/**
+	 * 航迹向
+	 */
+	private Double course;
+	/**
+	 * 船首向
+	 */
+	private Double truehead;
+	/**
+	 * 船名
+	 */
+	private String name;
+	/**
+	 * 船舶以及货物类型
+	 */
+	private String ship_type;
+	/**
+	 * 船舶IMO
+	 */
+	private String imo;
+	/**
+	 * 航行状态
+	 */
+	private String status;
+	/**
+	 * 
+	 * 航行速度
+	 */
+	private Double speed;
+	/**
+	 * 预计到港时间
+	 */
+	private String eta;
+	/**
+	 * 目的港
+	 */
+	private String dest;
+	/**
+	 * 船长
+	 */
+	private Double length;
+	/**
+	 * 船宽
+	 */
+	private Double width;
+	/**
+	 * 呼号
+	 */
+	private String callsign;
+	/**
+	 * 船旗
+	 */
+	private String flag;
+	/**
+	 * 建造时间
+	 */
+	private String build;
+	/**
+	 * 船籍港
+	 */
+	private String port;
+	private Integer match;
+	private Integer danger;
+	private String sbdlb;
+
+	private String status_name;
+	private String ship_type_name;
+	//预警状态
+	private Integer alarm_status;
+	private String alarm_name;
+}

+ 34 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AISData4SingleShip.java

@@ -0,0 +1,34 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * ais单船数据
+ * 
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AISData4SingleShip {
+	/**
+	 * 船舶MMSI
+	 */
+	private String mmsi;
+	private String x;
+	private String y;
+	private String imo;
+	private String time;
+	private String callsign;
+	private String shipname;
+	private Integer status;
+	// {mmsi:"100900074",time:"1467113843",x:"117.8947",y:"38.4558",cog:"1262",true_head:"511",
+	//sog:"8",nav_status:"0",srcid:"100",shipname:"",ship_type:"0",imo:"0",eta:"0",dest:"",
+	//destportid:"",draught:"0",length:"0",width:"0",callsign:"",flag:"",match:2,danger:0,sbdlb:""}]
+}

+ 35 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AdjustAnchorPositionStatistic.java

@@ -0,0 +1,35 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * 调剂锚位的统计
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AdjustAnchorPositionStatistic {
+	// 港口code
+	private Integer harbour_code;
+	// 吨位统计
+	private Integer tons_type;
+	// 吨位统计
+	private String tons_type_name;
+	// 货物类型统计
+	private Integer goods_type;
+	// 货物类型统计
+	private String goods_type_name;
+	// 吨位统计数量
+	private Integer tons_type_num = 0;
+	// 货物统计数量
+	private Integer goods_type_num = 0;
+	// 可用锚位数量
+	private Integer available_position_num = 0;
+}

+ 34 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AgentSubUserParam.java

@@ -0,0 +1,34 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AgentSubUserParam {
+	// 用户ID
+	private Integer id;
+	// 用户状态
+	private Integer status;
+	// 用户名
+	private String name;
+	// 密码
+	private String password;
+	// email
+	private String email;
+	// relate_type
+	private Integer relate_type;
+	private String ukey;
+	//父账户ID
+	private Integer agent_user_id;
+	
+	// 用户状态
+	private String status_name;
+	//插入时间
+	private Date insert_time;
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AgentUserParam.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AgentUserParam {
+	// 用户ID
+	private Integer id;
+	// 用户状态
+	private Integer status;
+	// 用户名
+	private String name;
+	// 公司名
+	private String agent_company_name;
+	// 备注
+	private String remark;
+	// 法人名称
+	private String legal_person_name;
+	// 企业注册号
+	private String licence_id;
+	// 机构号
+	private String occ_id;
+}

+ 54 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AlarmInfoBO.java

@@ -0,0 +1,54 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AlarmInfoBO {
+	// pk
+	private Long id;
+	// 港口ID
+	private Integer harbour_code;
+	// 港口名称
+	private String harbour_name;
+	// 分类
+	private Integer category;
+	// 分类名称
+	private String category_name;
+	// 类型
+	private Integer alarm_type;
+	// 预警类型名称
+	private String alarm_type_name;
+	// 锚地ID
+	private Integer anchorage_id;
+	// 锚地名称
+	private String anchorage_name;
+	// 锚位ID
+	private Integer anchorposition_id;
+	// 锚位名称
+	private String anchorposition_name;
+	// 船舶ID
+	private Integer ship_id;
+	// 申报计划ID
+	private Long apply_id;
+	// 用户类型
+	private Integer related_type;
+	// mmsi
+	private String mmsi;
+	// 公告ID
+	private Integer notice_id;
+	// 公告名称
+	private String notice_title;
+	// 船舶名称
+	private String ship_name;
+	// 添加时间
+	private Date insert_time;
+	// 删除标记
+	private Integer delete_flag;
+}

+ 30 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AlarmParam.java

@@ -0,0 +1,30 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AlarmParam {
+	// 船舶名称
+	private String ship_name;
+	// 锚位类型
+	private Integer anchor_position_type;
+	// 省控自控类型
+	private Integer attach_flag;
+	// 船舶编号
+	private String cbbh;
+	// 港口code
+	private Integer harbour_code;
+	// 分类
+	private Integer category;
+	// 类型
+	private Integer alarm_type;
+	private Integer begin;
+	private Integer end;
+	//
+	private Integer operate;
+}

+ 14 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AlarmStatisticInfo.java

@@ -0,0 +1,14 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AlarmStatisticInfo {
+	private String category;
+	private Integer num;
+}

+ 66 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionApplyAuditParam.java

@@ -0,0 +1,66 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionApplyAuditParam {
+	// 计划ID
+	private Integer apply_id;
+	// 锚地ID
+	private Integer anchorage_id;
+	// 港口id
+	private Integer harbour_code;
+	// 锚位ID
+	private Integer anchor_position_id;
+	// 审核状态
+	private Integer status;
+	// 核准号
+	private Long audit_no;
+	// 审核备注
+	private String remark;
+	// 计划锚泊时间
+	private Date plan_park_time;
+	// 计划离泊时间
+	private Date plan_leave_time;
+	// 实际锚泊时间
+	private Date actual_park_time;
+	// 实际离泊时间
+	private Date actual_leave_time;
+	// 修改锚泊时间
+	private Date modify_park_time;
+	// 修改离泊时间
+	private Date modify_leave_time;
+	// 修改时间审核标记
+	private Integer modify_time_audit_flag;
+	// 诚信code,多个以-分割
+	private String integrity;
+	// 申请提交审核港口
+	private Integer apply_harbour_code;
+	// 预计金额
+	private Double plan_price;
+	// 实际金额
+	private Double actual_price;
+	// 业务类型
+	private Integer trade_type;
+
+	// 操作类型,1港口管理单位初步核准通过
+	private Integer operate;
+	private Integer user_id;
+	// 审核港口
+	private Integer audit_harbour_code;
+	// 实际停泊经度
+	private Double actual_park_lon;
+	// 实际停泊纬度
+	private Double actual_park_lat;
+	// 实时经度
+	private Double real_time_lon;
+	// 实时纬度
+	private Double real_time_lat;
+}

+ 173 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionApplyInfoBO.java

@@ -0,0 +1,173 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+import java.util.List;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.loygra.mooring.bean.ApplyAdjustInfo;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * 锚地使用计划申请BO
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionApplyInfoBO {
+	// id
+	private Long id;
+	// 申请公司ID
+	private Integer agent_company_id;
+	// 船舶呼号
+	private String cbhh;
+	// mmsi
+	private String mmsi;
+	// 船舶编号
+	private String ship_id;
+	// 来港code
+	private Integer from_harbour_code;
+	// 停靠港code
+	private Integer park_harbour_code;
+	// 下一挂靠港code
+	private Integer to_harbour_code;
+	// 贸易类型
+	private Integer trade_type;
+	// 长度
+	private Double length;
+	// 货物
+	private String goods;
+	// 船舶吃水
+	private String cbcs;
+	// 净吨
+	private Double net_tons;
+	// 载吨
+	private Double total_tons;
+	// 船舶类型
+	private Integer apply_ship_type;
+	// 船舶联系方式
+	private String ship_contact;
+	// 申请计划的状态
+	private Integer status;
+	// 计划停泊时间
+	private Date plan_park_time;
+	// 计划离泊时间
+	private Date plan_leave_time;
+	// 修改锚泊时间
+	private Date modify_park_time;
+	// 修改离泊时间
+	private Date modify_leave_time;
+	// 修改时间审核标记
+	private Integer modify_time_audit_flag;
+	// 实际停泊时间
+	private Date actual_park_time;
+	// 实际离泊时间
+	private Date actual_leave_time;
+	// 诚信分值
+	private String integrity;
+	// 申请港口Id
+	private Integer apply_harbour_id;
+	// 服从异地调剂
+	private Integer adjust_flag;
+	// 申请提交时间
+	private Date apply_time;
+	// 核准港口code
+	private Integer audit_harbour_code;
+	// 核准锚地ID
+	private Integer audit_anchorage_id;
+	// 核准锚位ID
+	private Long audit_anchor_position_id;
+	// 审核用户ID
+	private Long audit_user_id;
+	// 预计金额
+	private Double plan_price;
+	// 实际金额
+	private Double actual_price;
+	// 审核时间
+	private Date audit_time;
+	// 备注
+	private String remark;
+	// 核准号
+	private String audit_no;
+	// 系统检测离泊时间
+	private Date detect_park_time;
+	// 系统检测锚泊时间
+	private Date detect_leave_time;
+	//实时经度
+	private Double real_time_lon;
+	//实时纬度
+	private Double real_time_lat;
+	//
+	// 以下为业务字段
+	//
+	// 单位名称
+	private String status_name;
+	// 单位名称
+	private String agent_company_name;
+	// 申报单位用户名称
+	private String agent_user_name;
+	// 船舶名称
+	private String ship_name;
+	// 船舶名称
+	private String ship_name_en;
+	// 船舶名称
+	private String ship_name_cn;
+	// 来港name
+	private String from_harbour_name;
+	// 停靠港name
+	private String park_harbour_name;
+	// 下一挂靠港name
+	private String to_harbour_name;
+	// 是否同意异港安排
+	private String adjust_flag_name;
+	// 安排
+	private String arrange_info;
+	// 核准港口code
+	private String audit_harbour_name;
+	// 核准锚地ID
+	private String audit_anchorage_name;
+	// 核准锚位ID
+	private String audit_anchor_position_name;
+	// 是否是省控锚位
+	private String attach_flag_name;
+	// 是否是省控锚位
+	private Integer attach_flag;
+	// 审核港口code
+	private String apply_harbour_name;
+
+	// 诚信分值
+	private String integrity_name;
+	// 贸易类型
+	private String trade_type_name;
+	// 船舶类型
+	private String apply_ship_type_name;
+	// 联系人
+	private String contact_person;
+	// 行驶方向
+	private Integer apply_ship_forward_type;
+	// 是否本港船舶
+	private Integer apply_ship_harbour_type;
+	// 停泊理由
+	private String park_reason;
+	//
+	// 行驶方向
+	private String apply_ship_forward_type_name;
+	// 是否本港船舶
+	private String apply_ship_harbour_type_name;
+	//调剂港口名称
+	private String adjust_harbour_names;
+	//
+	// 调剂列表
+	private List<ApplyAdjustInfo> adjustInfos;
+	// 危化品分类
+	private Integer danger_goods_category;
+	//
+	// 危化品分类名称
+	private String danger_goods_category_name;
+}

+ 46 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionApplyParam.java

@@ -0,0 +1,46 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionApplyParam {
+	// 船舶名称
+	private String ship_name;
+	// 锚位类型
+	private Integer anchor_position_type;
+	// 省控自控类型
+	private Integer attach_flag;
+	// 船舶编号
+	private String cbbh;
+	// 港口code
+	private Integer harbour_code;
+	// 审核状态
+	private Integer status;
+	// 公司名称
+	private String company_name;
+	// to_harbour_code
+	private Integer to_harbour_code;
+	// 货物名称
+	private String goods;
+	// 是否服从调剂
+	private Integer adjust_flag;
+	// 申请开始时间
+	private Date apply_time_begin;
+	// 申请结束时间
+	private Date apply_time_end;
+
+	// 操作类型
+	private Integer operate;
+	// 省厅发布申报计划的类型
+	// 1申报计划,2增补计划
+	private Integer apply_release_type;
+	//下载xls类型:1xls
+	private Integer export_type;
+}

+ 41 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionInfo.java

@@ -0,0 +1,41 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionInfo {
+	private Integer id;
+	// 锚地ID
+	private Integer anchorage_id;
+	// 港口id
+	private Integer harbour_code;
+	// 锚地名称
+	private String name;
+	// 锚地类型
+	private String type;
+	// 中心经度
+	private Double center_longitute;
+	// 中心纬度
+	private Double center_latitute;
+	// 锚位等级
+	private Integer position_level;
+	// 宽度
+	private Double length;
+	// 宽度
+	private Double width;
+	// 是否省控锚位
+	private Integer attach_flag;
+	// 状态
+	private Integer status;
+	// 划分时间
+	private Date divide_time;
+	// 划分人员
+	private Integer divide_user_id;
+}

+ 60 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorPositionInfoBO.java

@@ -0,0 +1,60 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorPositionInfoBO {
+	private Integer id;
+	// 锚地ID
+	private Integer anchorage_id;
+	// 港口id
+	private Integer harbour_code;
+	// 锚位名称
+	private String name;
+	// 锚位类型
+	private String type;
+	// 停泊类型
+	private String mooring_type;
+	// 中心经度
+	private Double center_longitute;
+	// 中心纬度
+	private Double center_latitute;
+	// 锚位等级
+	private Integer position_level;
+	// 宽度
+	private Double length;
+	// 宽度
+	private Double width;
+	// 是否省控锚位
+	private Integer attach_flag;
+	//修改省控锚位
+	private Integer modify_attach_flag;
+	//修改省控锚位
+	private Integer modify_attach_audit_status;
+	// 状态
+	private Integer status;
+	// 划分时间
+	private Date divide_time;
+	// 划分人员
+	private Integer divide_user_id;
+	//深度
+	private Double deep;
+	//等级
+	private String level_name;
+	//
+	//
+	private String type_name;
+	private String mooring_type_name;
+	private String position_level_name="";
+	private String attach_flag_name;
+	private String status_name;
+	private String anchorage_name;
+	private String harbour_name;
+}

+ 60 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/AnchorageInfoBO.java

@@ -0,0 +1,60 @@
+package com.loygra.mooring.bo;
+
+import java.util.List;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.loygra.mooring.bean.AnchorPointInfo;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class AnchorageInfoBO {
+
+	private Integer id;
+
+	// 港口id
+	private Integer harbour_code;
+
+	// 服务港口ID列表,以-分割
+	private String serve_harbour_codes;
+
+	// 锚地名称
+	private String name;
+	// 建设单位
+	private String organization;
+	// 位置
+	private String position;
+	// 地质
+	private String geology;
+	// 长度
+	private Double length;
+	// 宽度
+	private Double width;
+	// 深度
+	private String deep;
+	// 面积
+	private Double square;
+	// 半径
+	private Double radius;
+	// 用途
+	private String purpose;
+	// 锚泊方式,多个以-分割
+	private String anchor_type;
+	// 浮筒个数
+	private Integer buoy_num;
+
+	// 锚泊艘数
+	private Integer anchorpostion_num;
+	// 最大锚泊能力
+	private String capacity;
+	// 锚位信息
+	private List<AnchorPositionInfo> anchorPositionInfos;
+	// 锚地界点信息
+	private List<AnchorPointInfo> anchorPointInfos;
+	// 港口名称
+	private String harbour_name;
+}

+ 27 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ApplyShipRealTime.java

@@ -0,0 +1,27 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * 计划所在船舶的实时位置
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ApplyShipRealTime {
+	// 计划ID
+	private Integer apply_id;
+	// 经度
+	private Double lon;
+	// 纬度
+	private Double lat;
+	// 船ID
+	private Integer ship_id;
+}

+ 32 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ApplyUnitAuditList.java

@@ -0,0 +1,32 @@
+package com.loygra.mooring.bo;
+
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class ApplyUnitAuditList {
+
+	private Integer id ;
+
+	private String name ;
+	
+	private String username ;
+	
+	private String companyName ;
+	
+	private String phone;
+	
+	private String email ;
+	
+	private String telphone;
+	
+	private String fax ;
+	
+	private Integer status ;
+	
+}

+ 19 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/FileInfoBO.java

@@ -0,0 +1,19 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.loygra.mooring.cfg.ConfigPro;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class FileInfoBO {
+	private Long id;
+	private String name;
+	private String fix;
+	private Long file_size;
+	private String domain = ConfigPro.IMAGE_DOMAIN;
+}

+ 62 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/HarbourALLInfo.java

@@ -0,0 +1,62 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.loygra.mooring.util.DateUtils;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class HarbourALLInfo {
+
+	// 港区ID
+	private Integer code;
+	// 港区名称定位
+	private String harbour_name;
+	// 锚地数量
+	private Integer anchorage_num;
+	// 锚位数量
+	private Integer anchor_postion_num;
+	// 剩余锚位数量
+	private Integer enable_anchor_postion_num;
+	// 实际使用数量
+	private Integer actual_use_anchor_postion_num;
+	// 已排队申请数量
+	private Integer apply_anchor_postion_num;
+	// 已核准预留锚位
+	private Integer will_park_anchor_postion_num;
+	// 港口联系方式
+	private String contact;
+	// 允许提交计划标记,0不允许,1允许
+	private Integer apply_allow_flag = getApplyInfo_allow_flag();
+
+	/**
+	 * 
+	 * 当天09:00到当天的12:00不允许申请
+	 * 
+	 * @return
+	 */
+	private Integer getApplyInfo_allow_flag() {
+		Integer flag = 0;
+		try {
+//			// 当天09:00
+//			Date date1 = DateUtils.parse(DateUtils.simple, DateUtils.format(DateUtils.dtSimple, new Date()) + " 09:00");
+//			// 当天12:00
+//			Date date2 = DateUtils.parse(DateUtils.simple, DateUtils.format(DateUtils.dtSimple, new Date()) + " 12:00");
+//			if (new Date().after(date1) && new Date().before(date2)) {
+//				flag = 0;
+//			} else {
+//				flag = 1;
+//			}
+			flag=1;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return flag;
+	}
+}

+ 37 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/HarbourInfoBO.java

@@ -0,0 +1,37 @@
+package com.loygra.mooring.bo;
+
+import java.util.List;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * 港口-锚位-锚地信息BO
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class HarbourInfoBO {
+	// id
+	private Long id;
+	// 名称
+	private String name;
+	// 代码
+	private Integer code;
+	// 自然海岸线长度
+	private Integer coastline;
+	// 经度
+	private Double longitute;
+	// 纬度
+	private Double latitute;
+	// 联系方式
+	private double contact;
+	// 锚地信息
+	List<AnchorageInfoBO> anchorageInfos = null;
+}

+ 110 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/IntegrityBO.java

@@ -0,0 +1,110 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class IntegrityBO {
+	private Integer id;
+	private Integer agent_company_id;
+	private Integer ship_id;
+	private String ship_name;
+	private Integer audit_harbour_code;
+	private String audit_harbour_name;
+	// 实际停泊时间
+	private Date actual_park_time;
+	// 实际离泊时间
+	private Date actual_leave_time;
+	private Integer integrity_code;
+	private String integrity_name;
+	private Double score;
+	private Date insert_time;
+	private String agent_user_name;
+	private Integer integrity_status;
+	private Integer integrity_count;
+	private String telphone;
+	private String address;
+	private Integer integrity_score;
+	private Integer appeal_status;
+	private String appeal_request_content;
+	private String appeal_audit_content;
+	//
+	private String appeal_status_name;
+	
+	//
+	// 申请提交时间
+	private Date apply_time;
+	// 锚泊港口
+	private String harbour_name;
+	//船舶吃水
+	private String cbcs;
+	// 长度
+	private Double length;
+	// 货物
+	private String goods;
+	// 来港code
+	private String from_harbour_name;
+	// 下一挂靠港code
+	private String to_harbour_name;
+	//是否同意异港安排
+	private String adjust_flag_name;
+	//净吨
+	private Double net_tons;
+	//贸易类型
+	private String trade_type_name;
+	//船舶类型
+	private String apply_ship_type_name;
+	//船舶联系方式
+	private String ship_contact_phone;
+	// 计划停泊时间
+	private Date plan_park_time;
+	// 计划离泊时间
+	private Date plan_leave_time;
+	// 核准锚地ID
+	private String audit_anchorage_name;
+	// 核准锚位ID
+	private String audit_anchor_position_name;
+	//计划审核状态
+	private String apply_status_name;
+	
+	//预计金额
+	private Double apply_plan_price;
+	//实际金额
+	private Double apply_actual_price;
+	
+	// 操作类型
+	private Integer operate_type;
+
+	public String getIntegrity_status_name() {
+		integrity_status = 1;
+		if (integrity_score == null) {
+			return "正常";
+		} else if (integrity_score < 60) {
+			integrity_status = 2;
+			return "黑名单";
+		}
+		return "正常";
+	}
+
+//	public String getAppeal_status_name() {
+//		if (appeal_status == null || appeal_status == 0) {
+//			return "-";
+//		} else if (appeal_status == 1) {
+//			return "申诉中";
+//		} else if (appeal_status == 2) {
+//			return "申诉成功";
+//		} else if (appeal_status == 3) {
+//			return "申诉失败";
+//		}
+//		return "-";
+//	}
+
+	private Integer end;
+	private Integer begin;
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/LonLatDistrict.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * 船舶经纬度区域实体
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class LonLatDistrict {
+	private Integer harbour_code;
+	private Integer anchor_id;
+	private String leftLon;
+	private String bottomLat;
+	private String rightLon;
+	private String topLat;
+	private boolean alarm;
+}

+ 43 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ManageUserInfoBO.java

@@ -0,0 +1,43 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ManageUserInfoBO {
+	private Integer id;
+	// 用户ID
+	private String name;
+	//
+	private String email;
+	//
+	private Integer relate_type;
+	// 账户信息关联的ID
+	private Integer status;
+	//
+	private String ukey;
+	// 港口code
+	private Integer harbour_code;
+	// 港口name
+	private String harbour_name;
+	// 管理单位名称
+	private String company_name;
+	// 注册时间
+	private Date register_time;
+	// 登录名
+	private String login_name;
+	// 单位地址
+	private String address;
+	// 传真号码
+	private String fax;
+	// 电话号码
+	private String telphone;
+	// 最后一次登录时间
+	private Date lastest_login_time;
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ManageUserInfoParam.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ManageUserInfoParam {
+
+	private Integer id;
+	// email
+	private String email;
+	// 港口code
+	private Integer harbour_code;
+	// 密码
+	private String password;
+	//登录名
+	private String login_name;
+	//单位地址
+	private String address;
+	//传真号码
+	private String fax;
+	//电话号码
+	private String telphone;
+}

+ 37 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/NoticeInfoBO.java

@@ -0,0 +1,37 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NoticeInfoBO {
+	private Integer id;
+	private String title;
+	private Integer status;
+	private Integer type;
+	private Date time;
+	private Integer insert_user_id;
+	private Integer insert_relate_type;
+	private String insert_user_name;
+	private String notice_level;
+	private Long file_id;
+	private Date modify_time;
+
+	private String content;
+	//
+	private String status_name;
+	private String notice_level_name;
+	private String type_name;
+	private String insert_unit_name;
+	private String file_fix;
+	private String file_name;
+	private Long file_size;
+	private String unit_name;
+	private String remark;
+}

+ 33 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/NoticeInfoParam.java

@@ -0,0 +1,33 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class NoticeInfoParam {
+	private Integer id;
+	private String title;
+	private Integer status;
+	private Integer type;
+	private Integer insert_user_id;
+	private Integer insert_relate_type;
+	private String insert_user_name;
+	private String notice_level;
+	private String file_id;
+	private String file_fix;
+	private String content;
+	//
+	private Date from_time;
+	private Date to_time;
+	//
+	private Integer begin;
+	private Integer end;
+	//
+	private Integer operate;
+}

+ 36 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ShipPosition.java

@@ -0,0 +1,36 @@
+package com.loygra.mooring.bo;
+
+import java.io.Serializable;
+import java.lang.reflect.Type;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * package org.mayh.http.model
+ * Author Administrator
+ * Created by 2015/7/23.
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ShipPosition implements Serializable, Type {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
+    private Integer sort; // 顺序
+    private String lat; // 纬度
+    private String lon; // 经度
+    private String time; // 时间
+    private String angle; // 度数
+ 
+    @Override
+    public String toString() {
+        return "ShipPosition [sort=" + sort + ", lat=" + lat + ", lon=" + lon + ", time=" + time + ", angle=" + angle
+                + "]";
+    }
+
+}

+ 21 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ShipSearch.java

@@ -0,0 +1,21 @@
+package com.loygra.mooring.bo;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.alibaba.fastjson.JSONArray;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ShipSearch {
+
+	private Integer pagecur = 0;
+	private Integer pagesize = 0;
+	private Integer amount = 0;
+	private Integer totals = 0;
+	private Integer tk = 0;
+	private JSONArray details;
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/ShipVo.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.bo;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * package org.mayh.http.model
+ * Author Administrator
+ * Created by 2015/7/23.
+ */
+@Data
+@NoArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class ShipVo implements Serializable {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
+    
+    private String mmsi;  //船舶MMSI
+    private List<ShipPosition> route; //船舶路径
+ 
+}

+ 25 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/TestAISData.java

@@ -0,0 +1,25 @@
+package com.loygra.mooring.bo;
+
+import java.util.List;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 
+ * ais实体
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+public class TestAISData {
+	private Integer seq = 0;
+	private List<AISData> ships = null;
+}

+ 70 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/UserApplyUnitBO.java

@@ -0,0 +1,70 @@
+package com.loygra.mooring.bo;
+
+import java.util.Date;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+public class UserApplyUnitBO {
+	
+	private Long id ;
+	//
+	//用户ID
+	private String name;	
+	private String email ;
+	// 账户状态
+	private Integer status ;
+	// 最后登录时间
+	private Date lastest_login_time ;
+	// 用户KEY
+	private String ukey ;
+	//
+	private String remark;
+	//
+	//
+	// ID
+	private Integer audit_harbour_id ;
+	// 账户审核港口ID
+	private String company_name ;
+	//公司名称
+	private String legal_person_name ;
+	// 法人姓名
+	private String legal_person_id ;
+	// 法人身份证号
+	private Long  legal_person_id_file_code ;
+	// 法人身份证照片
+	private String licence_id ;
+	// 公司营业执照号
+	private Long licence_file_code ;
+	// 公司营业执照照片号
+	private String occ_id ;
+	// 组织id
+	private Long occ_file_code ;
+	//财务人员联系方式
+	private String finacial_user_contact;
+	// 组织机构代码照片号
+	private String address ;
+	// 公司地址
+	private String fax;
+	// 公司传真
+	private String telphone ;
+	// 公司电话
+	private Date register_time;
+	// 注册时间
+	private String integrity ;
+	// 诚信分值
+	private Date audit_time ;
+	// 审核时间
+	private Long audit_user_id ;
+	// 
+	private String status_name;
+	//
+	private String contact_user_name ;
+	private String contact_email;
+	private String contact_phone;
+}

+ 30 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/CacheName.java

@@ -0,0 +1,30 @@
+package com.loygra.mooring.cache;
+
+import java.util.Date;
+
+/**
+ * 
+ * cache的键名
+ * 
+ * @author Mayer.ng
+ *
+ */
+public class CacheName {
+
+	/**
+	 * 用户缓存 key:user_key value:User
+	 */
+	public final static String USER = "user";
+
+	/**
+	 * 权限缓存 key:url匹配掉参数后的串 value:权限值
+	 */
+	public final static String PRIVILEGE = "privilege";
+	
+	public static void main(String[] args) {
+		int a =12;
+		int b =5;
+//		System.out.println(Integer.toBinaryString(a&b));
+		System.out.println(new Date(1451301804L));
+	}
+}

+ 52 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/EhcacheUtil.java

@@ -0,0 +1,52 @@
+package com.loygra.mooring.cache;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
+import net.sf.ehcache.Element;
+@Service
+public class EhcacheUtil {
+	private static CacheManager manager;
+	@Autowired
+	public void setManager(CacheManager manager) {
+		EhcacheUtil.manager = manager;
+	}
+	public static CacheManager getCacheManager(){
+		return manager;
+	}
+	protected static void put(String cacheName, String key, Object value) {
+		Cache cache = manager.getCache(cacheName);
+		Element element = new Element(key, value);
+		cache.put(element);
+	}
+	
+
+	protected static Object get(String cacheName, String key) {
+		Cache cache = manager.getCache(cacheName);
+		Element element = cache.get(key);
+		return element == null ? null : element.getObjectValue();
+	}
+
+	protected static Cache getCache(String cacheName) {
+		return manager.getCache(cacheName);
+	}
+
+	protected static void remove(String cacheName, String key) {
+		Cache cache = manager.getCache(cacheName);
+		cache.remove(key);
+	}
+	
+	
+	public static void main(String[]args) throws InterruptedException{
+		// ApplicationContext ctx = new FileSystemXmlApplicationContext(new
+		// String[]{"D:/workspace/CDF/build/classes/rest-content.xml"});
+		// Cache cache=EhcacheUtil.getCache("SimplePageCachingFilter");
+		// cache.put(new Element("user:1", "张三"));
+		// Element ele=cache.get("user:1");
+		// System.out.println(ele.getObjectValue());
+		// EhcacheUtil.getCacheManager().shutdown();
+	}
+
+}

+ 100 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/MooringCache.java

@@ -0,0 +1,100 @@
+package com.loygra.mooring.cache;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.stereotype.Service;
+
+import com.loygra.mooring.bean.AnchorPointInfo;
+import com.loygra.mooring.bo.LonLatDistrict;
+import com.loygra.mooring.dao.AnchorDao;
+import com.loygra.mooring.util.Arith;
+import com.loygra.mooring.util.Point;
+import com.loygra.mooring.util.ResultMapUtils;
+
+@Service
+@DependsOn(value = "ehcacheUtil")
+public class MooringCache extends ResultMapUtils {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	@Autowired
+	private AnchorDao anchorDao;
+
+	/**
+	 * 
+	 * 锚地的界标边界
+	 */
+	public static List<LonLatDistrict> ANCHOR_LONTATS = new ArrayList<LonLatDistrict>();
+
+	@PostConstruct
+	protected void initCache() {
+		initAnchorPointsBorder();
+	}
+
+	/**
+	 * 初始化锚地边界
+	 */
+	public void initAnchorPointsBorder() {
+		System.out.println("初始化锚地边界开始...");
+		try {
+			List<AnchorPointInfo> points = anchorDao.selectAnchorPoints();
+			if (points != null && points.size() > 0) {
+				// 每次初始化需要将界标边界清空
+				ANCHOR_LONTATS = new ArrayList<LonLatDistrict>();
+				//
+				List<Point> po = new ArrayList<Point>();
+				Vector<Integer> anchorId = new Vector<Integer>();
+				anchorId.add(points.get(0).getAnchor_id());
+				for (int i = 0; i < points.size(); i++) {
+					AnchorPointInfo point = points.get(i);
+					if (anchorId.contains(point.getAnchor_id())) {
+						// 将同一个锚地的界标加入坐标
+						//如果是最后一个坐标
+						if(i == points.size()-1) {
+							// 遍历到一个不同的锚地
+							// 计算上一个界标的边界
+							LonLatDistrict lld = Arith.getBorder(po);
+							if(lld==null) {
+								System.exit(-1);
+							}
+							lld.setHarbour_code(points.get(i - 1).getHarbour_code());
+							lld.setAnchor_id(points.get(i - 1).getAnchor_id());
+							ANCHOR_LONTATS.add(lld);
+						}
+					} else {
+						// 遍历到一个不同的锚地
+						// 计算上一个界标的边界
+						LonLatDistrict lld = Arith.getBorder(po);
+						if(lld==null) {
+							System.exit(-1);
+						}
+						lld.setHarbour_code(points.get(i - 1).getHarbour_code());
+						lld.setAnchor_id(points.get(i - 1).getAnchor_id());
+						ANCHOR_LONTATS.add(lld);
+						//
+						po = new ArrayList<Point>();
+						//
+						anchorId.add(point.getAnchor_id());
+					}
+					Point p = new Point();
+					p.setX(point.getLongitute());
+					p.setY(point.getLatitute());
+					//
+					po.add(p);
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		System.out.println("初始化锚地边界结束...");
+	}
+}

+ 80 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/PrivilegeCache.java

@@ -0,0 +1,80 @@
+package com.loygra.mooring.cache;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.stereotype.Service;
+
+import com.loygra.mooring.bean.ConfigInfo;
+import com.loygra.mooring.dao.ConfigDao;
+import com.loygra.mooring.util.LogUtil;
+import com.loygra.mooring.util.ResultMapUtils;
+
+@Service
+@DependsOn(value = "ehcacheUtil")
+public class PrivilegeCache extends ResultMapUtils {
+	@Autowired
+	private ConfigDao configDao;
+
+	@PostConstruct
+	protected void initCache() {
+		initConfig();
+	}
+
+	/**
+	 * 初始化user 缓存
+	 */
+	public void initConfig() {
+		try {
+			List<ConfigInfo> list = configDao.selectAllConfigs();
+			if (list != null) {
+				for (ConfigInfo obj : list) {
+					if("REQUEST_PRIVILEGE".equals(obj.getCategory())) {
+						EhcacheUtil.put(CacheName.PRIVILEGE, obj.getType_name(), obj.getValue());
+					}
+				}
+			}
+		} catch (Exception e) {
+			LogUtil.errorLog(e.getMessage());
+		}
+	}
+
+	/**
+	 * 根据类型获取权限值
+	 * 
+	 * @param user_key
+	 * @return
+	 */
+	public static Integer getPrivilegeValueByType(String filterURL) {
+		return (Integer) EhcacheUtil.get(CacheName.PRIVILEGE, filterURL);
+	}
+
+	public static void main(String[] args) {
+		// ApplicationContext ac = new
+		// ClassPathXmlApplicationContext("rest-context.xml");
+		// long startTime=System.currentTimeMillis();
+		// CoreUserInfoDao coreUserInfoDao = (CoreUserInfoDao)
+		// ac.getBean("coreUserInfoDaoImpl", CoreUserInfoDao.class);
+		// long endTime=System.currentTimeMillis();
+		// System.out.println(endTime-startTime);
+
+		// for(int i=0;i<12;i++){
+		// boolean flag=isLimitPhoneValidateCodeNum("15250987497");
+		// try {
+		// Thread.sleep(200);
+		// } catch (InterruptedException e) {
+		// // TODO Auto-generated catch block
+		// e.printStackTrace();
+		// }
+		// if(flag){
+		// System.out.println(flag);
+		// }else
+		// putPhoneValidateCodeNum("15250987497");
+		//
+		// }
+
+	}
+}

+ 118 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cache/UserCache.java

@@ -0,0 +1,118 @@
+package com.loygra.mooring.cache;
+
+import java.util.List;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.stereotype.Service;
+
+import com.loygra.mooring.bean.User;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.dao.UserDao;
+import com.loygra.mooring.util.LogUtil;
+import com.loygra.mooring.util.ResultMapUtils;
+
+@Service
+@DependsOn(value = "ehcacheUtil")
+public class UserCache extends ResultMapUtils {
+	@Autowired
+	private UserDao userDao;
+
+	@PostConstruct
+	protected void initCache() {
+		initUserCache();
+		new RequestURL();
+	}
+
+	/**
+	 * 初始化user 缓存
+	 */
+	public void initUserCache() {
+		try {
+			List<User> list = userDao.getAllUsers();
+			if (list != null) {
+				for (User obj : list) {
+					EhcacheUtil.put(CacheName.USER, obj.getUkey(), obj);
+				}
+			}
+		} catch (Exception e) {
+			LogUtil.errorLog(e.getMessage());
+		}
+	}
+
+	/**
+	 * 获取用户id
+	 * 
+	 * @param user_key
+	 * @return
+	 */
+	public static Integer getUserIdByKey(String user_key) {
+		User user = (User) EhcacheUtil.get(CacheName.USER, user_key);
+		if(user!=null) {
+			return user.getId();
+		}
+		return null;
+	}
+
+	/**
+	 * 获取用户type
+	 * 
+	 * @param user_key
+	 * @return
+	 */
+	public static Integer getUserTypeByKey(String user_key) {
+		User user = (User) EhcacheUtil.get(CacheName.USER, user_key);
+		if(user!=null) {
+			return user.getRelate_type();
+		}
+		return null;
+	}
+	
+	/**
+	 * 获取用户id
+	 * 
+	 * @param user_key
+	 * @return
+	 */
+	public static User getUserByKey(String user_key) {
+		return (User) EhcacheUtil.get(CacheName.USER, user_key);
+	}
+
+	/**
+	 * 添加用户缓存
+	 * 
+	 * @param user_key
+	 * @return
+	 */
+	public static void putUser(User user) {
+		EhcacheUtil.put(CacheName.USER, user.getUkey(),user);
+	}
+
+	public static void main(String[] args) {
+		// ApplicationContext ac = new
+		// ClassPathXmlApplicationContext("rest-context.xml");
+		// long startTime=System.currentTimeMillis();
+		// CoreUserInfoDao coreUserInfoDao = (CoreUserInfoDao)
+		// ac.getBean("coreUserInfoDaoImpl", CoreUserInfoDao.class);
+		// long endTime=System.currentTimeMillis();
+		// System.out.println(endTime-startTime);
+
+		// for(int i=0;i<12;i++){
+		// boolean flag=isLimitPhoneValidateCodeNum("15250987497");
+		// try {
+		// Thread.sleep(200);
+		// } catch (InterruptedException e) {
+		// // TODO Auto-generated catch block
+		// e.printStackTrace();
+		// }
+		// if(flag){
+		// System.out.println(flag);
+		// }else
+		// putPhoneValidateCodeNum("15250987497");
+		//
+		// }
+
+	}
+}

+ 45 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cfg/ConfigPro.java

@@ -0,0 +1,45 @@
+package com.loygra.mooring.cfg;
+
+import com.loygra.mooring.common.CommonUtil;
+
+/**
+ * config 属性文件
+ * 
+ * @author yuwenhao
+ *
+ */
+public class ConfigPro {
+	public final static long VERSION = System.currentTimeMillis();
+
+	public final static String TITLE = "江苏沿江港口锚泊调度中心信息化系统";
+	public final static String LOCAL_DOMAIN = ConfigProUtil.getProperty("local.domain");
+
+	public static String IMAGE_DOMAIN = ConfigProUtil.getProperty("image.domain");
+
+	// "0".equals(ConfigProUtil.getProperty("local.resource.domain.flag"))
+	// ? "mooring" : ;
+	private static String LOCAL_SERVER_NAME = ConfigProUtil.getProperty("local.server_name");
+	// "0".equals(ConfigProUtil.getProperty("local.resource.domain.flag"))
+	// ? "mooring" : ConfigProUtil.getProperty("local.server_name");
+
+	public final static String LOACL_FILE_PATH = ConfigProUtil.getProperty("local.filePath");
+
+	// 定时任务是否启动
+	public final static boolean CRON_SERVICE_ACTIVE_FLAG = "1"
+			.equals(ConfigProUtil.getProperty("cron.service.active.flag"));
+	// 定时任务最大允许线程数量
+	public final static int CRON_SERVICE_THREAD_MAXNUM = CommonUtil
+			.parseInt(ConfigProUtil.getProperty("cron.service.thread.maxnum"));
+
+	// 本机请求地址
+	public final static String LOCAL_REQUEST_ADDR = LOCAL_DOMAIN + LOCAL_SERVER_NAME;
+
+	public static class Previlege {
+		// 权限位数:省海港船,需要权限给1,不需要权限给0
+		//
+		public static class AnchorPosition {
+			public final static String ANCHOR_POSITION_APPLY = ConfigProUtil.getPrevilegeValue("ANCHOR_POSITION_APPLY");
+		}
+	}
+
+}

+ 34 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/cfg/ConfigProUtil.java

@@ -0,0 +1,34 @@
+package com.loygra.mooring.cfg;
+
+import java.util.Properties;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.loygra.mooring.util.PropertiesUtil;
+
+public class ConfigProUtil {
+	private static Properties p = null;
+	private static String filePath = "config.properties";
+
+	public static String getProperty(String property) {
+		if (p == null)
+			p = PropertiesUtil.getProperties(filePath);
+		return (p.containsKey(property)) ? p.getProperty(property) : "";
+	}
+
+	/**
+	 * 取得权限code
+	 * 
+	 * @param previlegeKey
+	 * @return
+	 */
+	public static String getPrevilegeValue(String previlegeKey) {
+		if (p == null)
+			p = PropertiesUtil.getProperties(filePath);
+		//
+		if (new Boolean(p.getProperty("previlege", "false"))) {
+			return (p.containsKey(previlegeKey)) ? p.getProperty(previlegeKey) : StringUtils.EMPTY;
+		}
+		return StringUtils.EMPTY;
+	}
+}

+ 250 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/CommonUtil.java

@@ -0,0 +1,250 @@
+package com.loygra.mooring.common;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.security.MessageDigest;
+import java.sql.Timestamp;
+import java.util.Date;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * 工具类
+ * 
+ * @author Mayer.Ng
+ * 
+ */
+public class CommonUtil extends StringUtils {
+
+	/**
+	 * 
+	 * 获取字符串
+	 * 
+	 * @param str
+	 * @return
+	 */
+	public static String getString(Object o) {
+		if (o == null) {
+			return StringUtils.EMPTY;
+		}
+		return getString(o.toString());
+	}
+
+	/**
+	 * 
+	 * 获取字符串
+	 * 
+	 * @param str
+	 * @return
+	 */
+	public static String getString(String str) {
+		if (isNotEmpty(str)) {
+			return str.trim().replaceAll("\t", "").replace("\n", "").replace("\r", "");
+		}
+		return StringUtils.EMPTY;
+	}
+
+	/**
+	 * 
+	 * 获取字符串
+	 * 
+	 * @param str
+	 * @return
+	 */
+	public static String getQString(Object o) {
+		if (o == null) {
+			return "-";
+		}
+		return getString(o.toString());
+	}
+
+	/**
+	 * 
+	 * 获取字符串
+	 * 
+	 * @param str
+	 * @return
+	 */
+	public static String getQZeroString(Object o) {
+		if (o == null) {
+			return "0";
+		}
+		return getString(o.toString());
+	}
+
+	/**
+	 * 获取字符串
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static String getTrimString(Object obj) {
+		if (obj == null) {
+			return StringUtils.EMPTY;
+		}
+		return obj.toString().trim();
+	}
+
+	/**
+	 * 转化成长整型数值, 错误时返回-9999
+	 * 
+	 * @param o
+	 * @return
+	 */
+	public static Long parseLong(Object o) {
+		try {
+			if (o != null && isNotEmpty(o.toString().trim())) {
+				return Long.parseLong(o.toString().trim());
+			}
+		} catch (Exception e) {
+			// TODO: handle exception
+		}
+		return -9999L;
+	}
+
+	/**
+	 * 转化成长浮点数值, 错误时返回-9999
+	 * 
+	 * @param o
+	 * @return
+	 */
+	public static Double parseDouble(Object o) {
+		try {
+			if (o != null && isNotEmpty(o.toString().trim())) {
+				return Double.parseDouble(o.toString().trim());
+			}
+		} catch (Exception e) {
+			// TODO: handle exception
+		}
+		return -9999.0;
+	}
+
+	/**
+	 * 转化成整型数值, 错误时返回-9999
+	 * 
+	 * @param o
+	 * @return
+	 */
+	public static int parseInt(Object o) {
+		try {
+			if (o != null && isNotEmpty(o.toString().trim())) {
+				return Integer.parseInt(o.toString().trim());
+			}
+		} catch (Exception e) {
+			// TODO: handle exception
+		}
+		return -9999;
+	}
+
+	/**
+	 * 从字符输入流转字符串
+	 * 
+	 * @param in
+	 * @return
+	 * @throws Exception
+	 */
+	public static String inputStream2String(InputStream is) {
+		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+		StringBuilder sb = new StringBuilder();
+		String line = null;
+		try {
+			while ((line = reader.readLine()) != null) {
+				sb.append(line);
+			}
+		} catch (IOException e) {
+			// TODO: handle exception
+		} finally {
+			try {
+				is.close();
+			} catch (IOException e) {
+				// TODO: handle exception
+			}
+		}
+		return sb.toString();
+	}
+
+	/**
+	 * 填充目标对象的字符串到固定长度
+	 * 
+	 * @param src
+	 * @param quote
+	 * @param size
+	 * @return
+	 */
+	public static String fillStringWithQuote(Object src, String quote, int size) {
+		String str = getString(src);
+		int strSize = str.length();
+		// 只有在源长度小于需要填补的长度时才进行填充
+		String result = str;
+		if (strSize < size) {
+			for (int i = size - strSize; i > 0; i--) {
+				result = quote + result;
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 取得当前时间与参数时间的差额,如果minus不为空的话,则返回当前时间-参数时间-差额时间
+	 * 
+	 * @param ts
+	 * @param minus
+	 *            差额
+	 * @return
+	 */
+	public static long getMinusFromCurrent(Timestamp ts, Long... minus) {
+		long curTimeMill = System.currentTimeMillis();
+		if (minus.length > 0) {
+			return curTimeMill - ts.getTime() - minus[0];
+		}
+		return System.currentTimeMillis() - ts.getTime();
+	}
+
+	/**
+	 * @see getMinusFromCurrent()
+	 * 
+	 * @param date
+	 * @param minus
+	 *            差额
+	 * @return
+	 */
+	public static long getMinusFromCurrent(Date date, Long... minus) {
+		long curTimeMill = System.currentTimeMillis();
+		if (minus.length > 0) {
+			return curTimeMill - date.getTime() - minus[0];
+		}
+		return curTimeMill - date.getTime();
+	}
+
+	/**
+	 * 
+	 * @param s
+	 * @return
+	 */
+	public final static String MD5(String s) {
+		char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+		try {
+			byte[] btInput = s.getBytes();
+			// 获得MD5摘要算法的 MessageDigest 对象
+			MessageDigest mdInst = MessageDigest.getInstance("MD5");
+			// 使用指定的字节更新摘要
+			mdInst.update(btInput);
+			// 获得密文
+			byte[] md = mdInst.digest();
+			// 把密文转换成十六进制的字符串形式
+			int j = md.length;
+			char str[] = new char[j * 2];
+			int k = 0;
+			for (int i = 0; i < j; i++) {
+				byte byte0 = md[i];
+				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
+				str[k++] = hexDigits[byte0 & 0xf];
+			}
+			return new String(str);
+		} catch (Exception e) {
+		}
+		return s;
+	}
+}

+ 339 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/Constants.java

@@ -0,0 +1,339 @@
+package com.loygra.mooring.common;
+
+import java.io.File;
+
+public class Constants {
+	/**
+	 * 发布版本号
+	 */
+	public final static long RELEASE = System.currentTimeMillis() / 1000;
+
+	public static class ImgAddr {
+		private static final String BASE = File.separator + "lexingbox" + File.separator + "file" + File.separator
+				+ "cdf" + File.separator + "img" + File.separator;
+		// 头像 ,虚拟地址
+		public static final String USER_PORTRAIT_VIRTUAL = "/a1/";
+		// 头像 ,物理地址
+		public static final String USER_PORTRAIT_PHYSICS = BASE + "user" + File.separator + "portrait" + File.separator;
+
+		// 营业执照及附件 ,虚拟地址
+		public static final String IMG_LICENCE_VIRTUAL = "/a2/";
+		// 营业执照及附件 ,物理地址
+		public static final String IMG_LICENCE_PHYSICS = BASE + "user" + File.separator + "licence" + File.separator;
+
+		// 项目封面 ,虚拟地址
+		public static final String ITEM_COVER_VIRTUAL = "/b1/";
+		// 项目封面 ,物理地址
+		public static final String ITEM_COVER_PHYSICS = BASE + "item" + File.separator + "cover" + File.separator;
+	}
+
+	public static class Parameter {
+		/**
+		 * 24小时的毫秒数
+		 */
+		public static final Long VALIDATE_CODE_PERIOD = 24 * 60 * 60 * 1000L;
+	}
+
+	public static class Entity {
+
+		/**
+		 * 船舶代理公司用户
+		 */
+		public static final int USER_TYPE_AGENT = 1;
+		/**
+		 * 锚泊管理单位
+		 */
+		public static final int USER_TYPE_MANAGE = 2;
+		/**
+		 * 省厅用户
+		 */
+		public static final int USER_TYPE_DEPARTMENT = 3;
+		/**
+		 * 海事局用户
+		 */
+		public static final int USER_TYPE_MARITIME = 4;
+
+		/**
+		 * 船代公司子账户
+		 */
+		public static final int USER_TYPE_AGENT_SUB = 5;
+
+		/**
+		 * 自控锚位
+		 */
+		public static final int ANCHOR_POSITION_TYPE_MANAGE = 1;
+		/**
+		 * 省控锚位
+		 */
+		public static final int ANCHOR_POSITION_TYPE_DEP = 2;
+
+		/**
+		 * 今日进江
+		 */
+		public static final int PILOTAGE_STATUS_IN_RIVER_TODAY = 1;
+		/**
+		 * 今日出江
+		 */
+		public static final int PILOTAGE_STATUS_OUT_RIVER_TODAY = 2;
+		/**
+		 * 今日移泊
+		 */
+		public static final int PILOTAGE_STATUS_MOVE_TODAY = 3;
+		/**
+		 * 明日进江
+		 */
+		public static final int PILOTAGE_STATUS_IN_RIVER_TOMORROW = 4;
+		/**
+		 * 明日出江
+		 */
+		public static final int PILOTAGE_STATUS_OUT_RIVER_TOMORROW = 5;
+		/**
+		 * 明日移泊
+		 */
+		public static final int PILOTAGE_STATUS_MOVE_TOMORROW = 6;
+
+		/**
+		 * 锚泊方式:自由式抛单锚
+		 */
+		public static final int ANCHOR_POSITION_TYPE_FREE_SINGLE = 1;
+		/**
+		 * 锚泊方式:自由式抛单锚
+		 */
+		public static final String ANCHOR_POSITION_TYPE_FREE_SINGLE_NAME = "自由式抛单锚";
+		/**
+		 * 锚位申请使用计划:待审核
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_UNAUDIT = 1;
+		/**
+		 * 锚位申请使用计划:已发布
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_AUDIT_OK = 2;
+		/**
+		 * 锚位申请使用计划:已拒绝
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_AUDIT_NG = 3;
+		/**
+		 * 锚位申请使用计划:已靠泊
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_LEAVE_UNCHECKED = 4;
+
+		/**
+		 * 锚位申请使用计划:已离泊
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_LEAVE_UNFEE = 5;
+
+		/**
+		 * 锚位申请使用计划:已收费
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_FEE_OK = 6;
+
+		/**
+		 * 锚位申请使用计划:省厅审核中
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_DEP_AUDIT = 7;
+
+		/**
+		 * 锚位申请使用计划:待发布
+		 */
+		public static final int ANCHOR_POSITION_APPLY_STATUS_UN_PUBLISH = 8;
+
+		/**
+		 * 锚位申请使用计划:服从异港安排,1不服从
+		 */
+		public static final int ANCHOR_POSITION_APPLY_ADJUST_FLAG_NO = 1;
+
+		/**
+		 * 锚位申请使用计划:服从异港安排,2服从
+		 */
+		public static final int ANCHOR_POSITION_APPLY_ADJUST_FLAG_YES = 2;
+		/**
+		 * 修改计划时间,等待回复
+		 */
+		public static final int ANCHOR_POSITION_APPLY_MODIFY_TIME_WAITING = 1;
+		/**
+		 * 修改计划时间,同意
+		 */
+		public static final int ANCHOR_POSITION_APPLY_MODIFY_TIME_YES = 2;
+		/**
+		 * 修改计划时间,不同意
+		 */
+		public static final int ANCHOR_POSITION_APPLY_MODIFY_TIME_NO = 3;
+		/**
+		 * 业务类型
+		 */
+		public static final int ANCHOR_POSITION_APPLY_TRADE_TYPE_INSIDE = 1;
+		/**
+		 * 业务类型
+		 */
+		public static final int ANCHOR_POSITION_APPLY_TRADE_TYPE_OUTSIDE = 2;
+	}
+
+	public static class UserStatus {
+
+		/**
+		 * 船代用户已注册,未激活
+		 */
+		public static final int USER_REGISTER = 0;
+
+		/**
+		 * 用户激活,未审核
+		 */
+		public static final int USER_ACTIVED = 1;
+
+		/**
+		 * 用户审核,通过
+		 */
+		public static final int USER_AUDITED = 2;
+
+		/**
+		 * 用户未审核通过
+		 */
+		public static final int USER_UNAUDITED = 3;
+
+		/**
+		 * 待审核
+		 */
+		public static final int USER_SUBMIT = 4;
+
+		/**
+		 * 用户未审核通过,再次编辑提交
+		 */
+		public static final int USER_AGAIN_SUBMIT = 5;
+		/**
+		 * 用户被禁用
+		 */
+		public static final int USER_FORBIDDEN = 6;
+	}
+
+	public static class MailType {
+		// 注册
+		public static final int MAIL_REGISTER = 1;
+
+		// 忘记密码
+		public static final int MAIL_RESET_PASSWORD = 2;
+
+	}
+
+	/**
+	 * 引航记录
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class PILOTAGE_TYPE {
+		/**
+		 * 今日进江
+		 */
+		public static final int JRJJ = 1;
+		/**
+		 * 今日出江
+		 */
+		public static final int JRCJ = 2;
+		/**
+		 * 今日移泊
+		 */
+		public static final int JRYB = 3;
+		/**
+		 * 明日进江
+		 */
+		public static final int MRJJ = 4;
+		/**
+		 * 明日出江
+		 */
+		public static final int MRCJ = 5;
+		/**
+		 * 明日移泊
+		 */
+		public static final int MRYB = 6;
+	}
+
+	/**
+	 * 失信行为及其分值
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class Credit {
+		/**
+		 * 
+		 * 失信类型
+		 */
+		public static final String[] TYPES = new String[] { "1", "2", "3", "4" };
+		/**
+		 * 
+		 * 失信说明
+		 */
+		public static final String[] REMARKS = new String[] { "进入锚地船舶申报信息与实际情况不符", "船舶未按照规定停泊", "停泊期间不服从锚地管理单位指挥",
+				"拖欠锚泊相关费用" };
+
+		/**
+		 * 
+		 * 分值
+		 */
+		public static final int[] VALUES = new int[] { 1, 1, 1, 2 };
+
+	}
+
+	/**
+	 * 预警
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class Alarm {
+		/**
+		 * 
+		 * 正常
+		 */
+		public static final int OK = 1;
+		/**
+		 * 
+		 * 未按时离泊
+		 */
+		public static final int LEAVE_DELAY = 2;
+		/**
+		 * 
+		 * 非申报船舶停留
+		 */
+		public static final int UN_AUDIT_MOORING = 3;
+		/**
+		 * 
+		 * 未按时靠泊停留
+		 */
+		public static final int PARK_DELAY = 4;
+
+		/**
+		 * 
+		 * 走锚
+		 */
+		public static final int OUT_OF_ANCHOR_POSITION = 5;
+		/**
+		 * 
+		 * 停泊滞留
+		 */
+		public static final int PARK_OVERTIME = 6;
+	}
+
+	/**
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class Operate {
+		/**
+		 * 
+		 * 编辑计划信息
+		 */
+		public static final int MODIFY_APPLY_INFO = 1;
+		/**
+		 * 
+		 * 编辑计划时间信息
+		 */
+		public static final int MODIFY_APPLY_INFO_TIME_UPDATE = 2;
+		/**
+		 * 
+		 * 同意计划时间信息的修改
+		 */
+		public static final int MODIFY_APPLY_INFO_TIME_UPDATE_AUDIT = 3;
+	}
+}

+ 17 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/KEY.java

@@ -0,0 +1,17 @@
+package com.loygra.mooring.common;
+
+public final class KEY {
+	
+	public final static String PLAT_REPONSE_STATUS = "status";
+	public final static String PLAT_REPONSE_STATUS_MSG = "statusMsg";
+	public final static String PLAT_REPONSE_DATA = "data";
+	public final static String PLAT_REPONSE_PAGE = "page";
+	public final static String USER_KEY = "USER-KEY";
+	public final static String APP_KEY = "APP-KEY";
+	public final static String ACTIVE_CODE_KEY = "ACTIVE-CODE-KEY";
+	
+	public final static String CONTENT_TYPE="Content-Type";
+	public final static String APPLICATION_JSON="application/json";
+	
+	public final static String PLAT_REPONSE_EXTRA_DATA = "extraData";
+}

+ 483 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/RequestURL.java

@@ -0,0 +1,483 @@
+package com.loygra.mooring.common;
+
+/**
+ * 用户请求地址
+ * 
+ * @author Mayerng
+ * 
+ */
+public class RequestURL {
+
+	/**
+	 * 
+	 * 视图
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class VIEW {
+		public final static String VIEW_REGISTER = "/register";
+		public final static String VIEW_LOGIN = "/login";
+		public final static String VIEW_FORGET_PASSWORD = "/forget/password/{type}";
+		public final static String VIEW_EMAIL = "/email/{type}";
+		public final static String VIEW_APPLYACHOR_INDEX = "/applyAchor/index";
+		public final static String VIEW_AUDIT_INFO = "/audit/info";
+		public final static String VIEW_AUDIT_ACCOUNT = "/audit/account";
+		public final static String VIEW_ANCHORAGE_INDEX = "/anchorage/index";
+		public final static String VIEW_CONTROLCENTER = "/controlcenter";
+		public final static String VIEW_MARINEBOARD = "/marineboard";
+	}
+
+	/**
+	 * 
+	 * 用户
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class USER {
+		
+		/**
+		 * 用户注册请求
+		 */
+		public final static String CHECK_PASSWORD = "/passwordcomplex";
+		
+		/**
+		 * 用户注册请求
+		 */
+		public final static String USER_REGISTER = "/user/register";
+		/**
+		 * 用户登录
+		 */
+		public final static String USER_LOGIN = "/user/login";
+		/**
+		 * 用户退出账号
+		 */
+		public final static String USER_LOGOUT = "/user/logout";
+		/**
+		 * 重置密码
+		 */
+		public final static String USER_RESET_PASSWORD = "/user/reset/password";
+		/**
+		 * 忘记密码
+		 */
+		public final static String USER_FORGET_SERECT = "/user/forget/password";
+		/**
+		 * 更新用户状态
+		 */
+		public final static String UPDATE_USER_STATUS = "/update/user/status";
+		/**
+		 * 港口用户管理
+		 */
+		public final static String USER_HARBOUR = "/user/harbour";
+		/**
+		 * 船代公司用户管理
+		 */
+		public final static String USER_AGENT = "/user/agent";
+		/**
+		 * 船代公司用户管理
+		 */
+		public final static String USER_AGENT_ID = "/user/agent/{id}";
+		/**
+		 * 港口用户管理
+		 */
+		public final static String HARBOUR_USERS = "/harbour/users";
+		/**
+		 * 港口某用户
+		 */
+		public final static String USER_HARBOUR_USERID = "/user/harbour/{user_id}";
+	}
+
+	/**
+	 * 邮件
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class MAIL {
+		/**
+		 * 激活邮件
+		 */
+		public final static String USER_SEND_EMAIL_REGISTER = "/user/email/register";
+		/**
+		 * 发送找回密码邮件
+		 */
+		public final static String USER_SEND_EMAIL_RESETPASSWORD = "/user/email/resetpassword";
+
+		/**
+		 * 处理邮件总入口
+		 */
+		public final static String MAIL_REQUEST_PROCESS = "/mail/{type}/{active_code}";
+		/**
+		 * 处理邮件总入口
+		 */
+		public final static String MAIL_REQUEST_PROCESS_STR = "/service/mail/{0}/{1}";
+	}
+
+	/**
+	 * 
+	 * 船代
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class AGENT {
+		/**
+		 * 船代公司信息录入
+		 */
+		public final static String AGENT_USER_INFO = "/agent/user/info";
+
+		/**
+		 * 船代公司联系人信息
+		 */
+		public final static String AGENT_CONTACT_INFO = "/agent/contact/info";
+		/**
+		 * 获取申报单位审核信息
+		 */
+		public final static String APPLY_UNIT_INFO_LIST = "/apply/unit/info/list";
+		/**
+		 * 更新
+		 */
+		public final static String UPDATE_APPLY_UNIT = "/update/agent/status";
+
+	}
+
+	/**
+	 * 
+	 * AIS
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class AIS {
+		/**
+		 * 船舶动态信息
+		 */
+		public final static String SHIP_REAL_DATA = "/ship/realtime";
+		/**	
+		 * 船舶动态信息
+		 */
+		public final static String SHIP_REAL_DATA_HARBOUR = "/ship/{harbour_code}/realtime";
+		/**
+		 * 某mmsi船舶动态信息
+		 */
+		public final static String SHIP_REAL_DATA_MMSI = "/ship/realtime/{mmsi}";
+
+	}
+
+	/**
+	 * 港口
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class HARBOUR {
+		/**
+		 * 船代公司查询各港口信息
+		 */
+		public final static String AGENT_SEARCH_HARBOUR = "/search/all/harbour/info";
+	}
+
+	/**
+	 * 锚位
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class ACHORAGE {
+		/**
+		 * 某港口下面的锚地
+		 */
+		public final static String HARBOUR_ACHORAGE = "/harbour/achorage";
+		/**
+		 * 某港口锚地下面的锚位
+		 */
+		public final static String HARBOUR_ACHORAGE_POSITION = "/harbour/achorage/{achorage_id}/postion";
+		/**
+		 * 某港口下面的锚位
+		 */
+		public final static String HARBOUR_POSITION = "/harbour/{harbour_code}/postion";
+		/**
+		 * 某港口锚地下面的省控自控锚位
+		 */
+		public final static String HARBOUR_ACHORAGE_POSITION_ATTACH = "/harbour/achorage/{achorage_id}/{attach_flag}/postion";
+		/**
+		 * 锚地信息
+		 */
+		public final static String ANCHORAGE = "/anchorage";
+		/**
+		 * 锚地基本信息
+		 */
+		public final static String ACHORAGE_ID = "/achorage/{id}";
+		/**
+		 * 锚地界标信息
+		 */
+		public final static String ANCHORAGE_POINT = "/anchorage/point";
+		/**
+		 * 锚地界标信息
+		 */
+		public final static String ANCHORAGE_POINT_ID = "/anchorage/point/{id}";
+		/**
+		 * 锚位
+		 */
+		public final static String ANCHOR_POSITION = "/anchorposition";
+		/**
+		 * 锚位
+		 */
+		public final static String ANCHOR_POSITION_SEARCH = "/anchorposition/search";
+		/**
+		 * 锚位信息
+		 */
+		public final static String ANCHOR_POSITION_ID = "/anchorposition/{id}";
+		/**
+		 * 省厅需要审核的attach_flag需要审核的列表
+		 */
+		public final static String ANCHOR_POSITION_ATTACH_FLAG_UNAUDIT = "/achorageposition/attach_change";
+	}
+
+	/**
+	 * 锚位
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class ACHOR_POSITION {
+
+		/**
+		 * 
+		 * 
+		 * 锚位申请计划
+		 */
+		public final static String ANCHOR_POSITION_APPLY = "/anchorposition/apply";
+		/**
+		 * 某港口的排队的申请
+		 */
+		public final static String ANCHOR_POSITION_APPLY_PENDING_HARBOUR = "/anchorposition/apply/pending/{harbour_code}";
+		/**
+		 * 待审核的申请
+		 */
+		public final static String ANCHOR_POSITION_APPLY_UNAUDIT = "/anchorposition/apply/unaudit";
+		/**
+		 * 省厅待审核的申请
+		 */
+		public final static String ANCHOR_POSITION_APPLY_DEP_UNAUDIT = "/anchorposition/apply/dep/unaudit";
+		/**
+		 * 省厅发布
+		 */
+		public final static String ANCHOR_POSITION_APPLY_PUBLISH = "/anchorposition/apply/dep/publish";
+		/**
+		 * 申请详情
+		 */
+		public final static String ANCHOR_POSITION_APPLY_ID = "/anchorposition/apply/{id}";
+
+		/**
+		 * 省厅调剂
+		 */
+		public final static String ANCHOR_POSITION_APPLY_ID_DEP_ADJUST = "/anchorposition/apply/{id}/dep/adjust";
+
+		/**
+		 * 调剂港口
+		 */
+		public final static String ANCHOR_POSITION_APPLY_ADJUST_HARBOUR = "/anchorposition/apply/{id}/adjust";
+		/**
+		 * 港口单位日常管理的申请
+		 */
+		public final static String ANCHOR_POSITION_APPLY_MANAGE = "/anchorposition/apply/manage";
+		/**
+		 * 港口单位确认离泊的计划
+		 */
+		public final static String ANCHOR_POSITION_APPLY_LEAVE = "/anchorposition/apply/leave";
+
+		/**
+		 * 撤回计划
+		 */
+		public final static String ANCHOR_POSITION_APPLY_REVOKE = "/anchorposition/apply/revoke/{apply_id}";
+		/**
+		 * 更改审核通过后的计划的时间和备注
+		 */
+		public final static String ANCHOR_POSITION_APPLY_AUDIT_ID = "/anchorposition/apply/audited/{apply_id}";
+		/**
+		 * 离泊
+		 */
+		public final static String ANCHOR_POSITION_APPLY_LEAVE_ID = "/anchorposition/apply/leave/{apply_id}";
+
+		/**
+		 * 某港口的级联信息
+		 */
+		public final static String HARBOUR_ACHORAGE_POSITION_CASCADE = "/harbour/{harbour_code}/achorage/position";
+		/**
+		 * 锚位
+		 */
+		public final static String ANCHOR_POSITION_ID = "/anchorposition/{id}";
+		/**
+		 * 提交给省厅
+		 */
+		public final static String ANCHOR_POSITION_APPLY_SUBMMIT = "/anchorposition/apply/submit/{apply_id}";
+		/**
+		 * 省厅将转发过来的申请重新下达
+		 */
+		public final static String ANCHOR_POSITION_APPLY_DEP_DISPATCHER = "/anchorposition/apply/dispatcher";
+
+		/**
+		 * 省厅审核记录
+		 */
+		public final static String ANCHOR_POSITION_APPLY_DEP_AUDIT = "/anchorposition/dep";
+		/**
+		 * 计划时间
+		 */
+		public final static String ANCHOR_POSITION_APPLY_TIME = "/anchorposition/apply/time";
+		
+		/**
+		 * 某锚位下挂靠的申报计划
+		 */
+		public final static String ANCHOR_POSITION_APPLY_ANCHOR_POSITION = "/auditposition/{id}/apply";
+	}
+
+	/**
+	 * 
+	 * 船舶
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class SHIP {
+		/**
+		 * 从船舶库里面找出某条船
+		 */
+		public final static String SHIP_LIB = "/ship/lib/{cbbh}";
+		/**
+		 * 检索船代公司所属的船
+		 */
+		public final static String AGENT_SHIPS = "/agent/ships";
+		/**
+		 * 为船代公司增加船只信息
+		 */
+		public final static String AGENT_SHIP = "/agent/ship";
+		/**
+		 * 删除船代公司船只
+		 */
+		public final static String AGENT_SHIP_ID = "/agent/ship/{id}";
+		/**
+		 * 保存船代公司船只信息
+		 */
+		public final static String AGENT_SHIP_INFO = "/agent/update/ship/{id}";
+		/**
+		 * 引航记录
+		 */
+		public final static String PILOTAGE = "/pilotage";
+	}
+
+	/**
+	 * 
+	 * 通知
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class NOTICE {
+		/**
+		 * 通知
+		 */
+		public final static String NOTICE = "/notice";
+		/**
+		 * 带主键的通知信息
+		 */
+		public final static String NOTICE_ID = "/notice/{id}";
+		/**
+		 * 通知列表
+		 */
+		public final static String NOTICES = "/notices";
+
+		/**
+		 * 待发布通知列表
+		 */
+		public final static String NOTICES_SUSPENDING = "/notices/suspending";
+	}
+
+	/**
+	 * 
+	 * 公用
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class COMMON {
+		/**
+		 * 上传图片的地址
+		 */
+		public final static String UPLOAD = "/upload";
+
+		/**
+		 * 文件验证
+		 */
+		public final static String FILE_VALIDATION = "/file/validation";
+	}
+
+	/**
+	 * 
+	 * 报警
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class ALARM {
+		/**
+		 * 某港口的报警
+		 */
+		public final static String ALARM_HARBOUR_CODE = "/alarms/{harbour_code}";
+		/**
+		 * 某报警
+		 */
+		public final static String ALARM_ID = "/alarm/{id}";
+	}
+
+	/**
+	 * 收费
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class CHARGE {
+		/**
+		 * 港口收费
+		 */
+		public final static String CHARGE_HARBOUR_CODE = "/charge/{harbour_code}";
+		/**
+		 * 港口收费
+		 */
+		public final static String CHARGE_ID = "/charge/{id}";
+	}
+
+	/**
+	 * 诚信
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public static class INTEGRITY {
+		/**
+		 * 诚信列表
+		 */
+		public final static String INTEGRITY_SEARCH = "/integrity/search";
+		/**
+		 * 解除黑名单
+		 */
+		public final static String INTEGRITY_COMPANY_AVAILABLE = "/integrity/company/{agent_company_id}/available";
+
+		/**
+		 * 诚信
+		 */
+		public final static String INTEGRITY_ID = "/integrity/{id}";
+	}
+	
+	/**
+	 * 天气
+	 */
+	public static class WEATHER{
+		/**
+		 * 获取港口天气
+		 */
+		public final static String HARBOUR_WEATHER = "/weather/{harbour_id}";
+	}
+
+}

+ 290 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/common/ResponseSC.java

@@ -0,0 +1,290 @@
+package com.loygra.mooring.common;
+
+/**
+ * 服务器运行状态码
+ * 
+ * @author yuwenhao desction: 状态码:20502 2 05 02 服务级代码(1为系统级代码) 服务模块代码 具体代码
+ */
+public class ResponseSC {
+	// 系统代码定义 [1]
+	public enum SystemSC {
+		/**
+		 * 系统成功执行
+		 */
+		SYSTEM_OK(10001),
+		/**
+		 * 系统错误
+		 */
+		SYSTEM_ERROR(10002),
+		/**
+		 * 系统暂停
+		 */
+		SYSTEM_PAUSE(10003),
+		/**
+		 * 系统未知错误(数据库未知错误)
+		 */
+		SYSTEM_UNKOWN_ERROR(10004),
+		/**
+		 * 权限不够
+		 */
+		SYSTEM_PRIVILEGE_ERROR(10005);
+
+		private int code;
+
+		private SystemSC(int code) {
+			this.code = code;
+		}
+
+		@Override
+		public String toString() {
+			return String.valueOf(this.code);
+		}
+
+		public int getCode() {
+			return code;
+		}
+	}
+
+	// 服务代码定义[2]
+	// 公共代码定义[模块代码00]
+	public enum CommonSC {
+		/**
+		 * 无数据
+		 */
+		NO_DATA(20001),
+		/**
+		 * 参数错误
+		 */
+		PARAM_ERROR(20002),
+		/**
+		 * 分页参数错误
+		 */
+		PAGING_PARAM_ERROR(20003),
+		/**
+		 * 文件太大
+		 */
+		FILE_TOO_LARGE(20004),
+		/**
+		 * 不是图片格式
+		 */
+		NOT_IMG_FORMAT(20005),;
+		private int code;
+
+		private CommonSC(int code) {
+			this.code = code;
+		}
+
+		@Override
+		public String toString() {
+			return String.valueOf(this.code);
+		}
+
+		public int getCode() {
+			return code;
+		}
+
+	}
+
+	// code description: Get a single entity without records is NOT_EXIST
+	// Get multiple entities without records is NOT_FOUND
+
+	// User模块代码定义 [模块代码01]
+	public enum UserSC {
+		/**
+		 * 找不到用户 (包含两层意思,1.用户不存在 2.指定条件找不到用户)
+		 * 
+		 */
+		NOT_FOUND_USER(20101),
+
+		/**
+		 * 手机号已注册
+		 */
+		PHONE_EXISTS(20102),
+		/**
+		 * 手机号不合法
+		 */
+		PHONE_ILLEGAL(20103),
+		/**
+		 * 密码错误
+		 */
+		PWD_ERROR(20104),
+		/**
+		 * /** 用户名已存在
+		 */
+		USERNAME_EXIST(20105),
+		/**
+		 * 用户没有激活
+		 */
+
+		PERMISSION_NOT_ENOUGH(20106),
+		/**
+		 * 没有验证码
+		 */
+		NO_VALIDATE(20107),
+		/**
+		 * 验证码已失效
+		 */
+		VALIDATE_FIAL(20108),
+		/**
+		 * 验证码错误
+		 */
+		VALIDATE_ERROR(20109),
+		/**
+		 * 验证码短信已达上限
+		 */
+		VALIDATE_CODE_SMS_UPPER_LIMIT(20110),
+		/**
+		 * 新密码和旧密码一样
+		 */
+		NEW_OLD_PASSWORD_SAME(20111),
+		/**
+		 * 图片验证码错误
+		 */
+		IMG_SECURITY_CODE_ERROR(20112),
+		/**
+		 * 授权信息不存在
+		 */
+		OAUTH_NOT_EXIST(20113),
+
+		/**
+		 * 验证码过期
+		 * 
+		 */
+		ACTIVE_CODE_DELAY(20114),
+		/**
+		 * 用户权限不够
+		 * 
+		 */
+		PRIVILEGE_NOT_ENOUGH(20115),
+
+		/**
+		 * 邮箱已经验证
+		 */
+		EMAIL_VAILDATED(20116),
+		/**
+		 * 用户被禁用
+		 * 
+		 */
+		FORBIDDEN(20117),
+		/**
+		 * 用户注册信息已存在,请核对注册信息。
+		 * 
+		 */
+		REGISTER_EXISTS(20118),
+		/**
+		 * 
+		 * 密码复杂性不够
+		 * 
+		 */
+		PASSWORD_COMPLEX_CHECK_FAILURE(20119);
+
+		private int code;
+
+		private UserSC(int code) {
+			this.code = code;
+		}
+
+		@Override
+		public String toString() {
+			return String.valueOf(this.code);
+		}
+
+		public int getCode() {
+			return code;
+		}
+	}
+
+	// 数据字典、常见问题、协议模块[模块代码10]
+	public enum CONSTANTSSC {
+		/**
+		 * 找不到项目
+		 * 
+		 */
+		NOT_FOUND_FAQ(21001),
+		/**
+		 * 找不到字典
+		 */
+		NOT_FOUND_DICTIONARY(21002);
+		private int code;
+
+		private CONSTANTSSC(int code) {
+			this.code = code;
+		}
+
+		@Override
+		public String toString() {
+			return String.valueOf(this.code);
+		}
+
+		public int getCode() {
+			return code;
+		}
+	}
+
+	/**
+	 * 锚泊状态码
+	 * 
+	 * @author Mayer.ng
+	 *
+	 */
+	public enum MooringSC {
+		/**
+		 * 找不到船舶
+		 * 
+		 */
+		NOT_FOUND_SHIP(21201),
+		/**
+		 * 经纬度不能构成正确的封闭形状
+		 * 
+		 */
+		POINT_UNCLOSED_ERROR(21202),
+
+		/**
+		 * 省厅有未核准的计划
+		 * 
+		 */
+		HAS_DEP_UN_AUDIT(21203),
+
+		/**
+		 * 省厅无可发布的核准计划
+		 * 
+		 */
+		HAS_DEP_NO_PUBLISH(21204),
+		/**
+		 * 省厅已经发布过计划
+		 * 
+		 */
+		ALREADY_PUBLISHED(21205),
+		/**
+		 * 禁止发布计划
+		 * 
+		 */
+		APPLY_SUBMIT_FORBIDDEN(21206),
+		/**
+		 * 计划停泊时间不能为空
+		 * 
+		 */
+		PLAN_PARK_TIME_NOT_NULL(21207),
+		/**
+		 * 请输入申报计划相关的船舶
+		 * 
+		 */
+		APPLY_SHIP_NOT_NULL(21208);
+
+		private int code;
+
+		private MooringSC(int code) {
+			this.code = code;
+		}
+
+		@Override
+		public String toString() {
+			return String.valueOf(this.code);
+		}
+
+		public int getCode() {
+			return code;
+		}
+	}
+
+}

+ 90 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AlarmController.java

@@ -0,0 +1,90 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bo.AlarmParam;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.AlarmService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class AlarmController extends BaseController {
+
+	private static final long serialVersionUID = 9056631235927850547L;
+	@Autowired
+	private AlarmService alarmService;
+
+	/**
+	 * 
+	 * 分页检索报警
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ALARM.ALARM_HARBOUR_CODE)
+	public ModelAndView selectAlarms(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @PathVariable Integer harbour_code,
+			@RequestBody AlarmParam ap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("harbour_code", harbour_code);
+				param.put("category", ap.getCategory());
+				param.put("alarm_type", ap.getAlarm_type());
+				resultMap = alarmService.getAlarms(getPageBean(paged), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 读取预警
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ALARM.ALARM_ID)
+	public ModelAndView readAlarm(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Long id,
+			@RequestParam(required = false) Long apply_id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("id", id);
+//				param.put("apply_id", apply_id);
+				resultMap = alarmService.readAlarm(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+}

+ 460 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorController.java

@@ -0,0 +1,460 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.AnchorPositionInfo;
+import com.loygra.mooring.bean.AnchorageInfo;
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.CommonUtil;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.AnchorageService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class AnchorController extends BaseController {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 9056631235927850547L;
+	@Autowired
+	private AnchorageService anchorageService;
+
+	/**
+	 * 
+	 * 检索某用户所在的港口的锚地列表 // 如果是管理单位用户 ,将userkey转换为harbourcode //
+	 * 如果是省厅用户,则获取参数里的harbour_code
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHORAGE.HARBOUR_ACHORAGE)
+	public ModelAndView selectAnchorageInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(required = false) Integer harbour_code,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestParam(value = "pageSize", required = false) Integer pageSize,
+			@RequestParam(required = false) Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				// 如果是管理单位用户 ,将userkey转换为harbourcode
+				// 如果是省厅用户,则获取参数里的harbour_code
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("id", id);
+				if (harbour_code != null) {
+					// harbour_code=-1的场合,检索库里面的所有锚位
+					if (harbour_code != -1) {
+						param.put("harbour_code", harbour_code);
+					}
+				} else {
+					param.put("user_id", UserCache.getUserIdByKey(user_key));
+				}
+				resultMap = anchorageService.selectAnchorageInfos(getPageBean(paged, pageSize), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 检索某用户所在的港口(的某锚地)的锚位列表,如果{achorage_id}=0表示检索该港口所有锚位
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHORAGE.HARBOUR_ACHORAGE_POSITION)
+	public ModelAndView selectAnchorPositionInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "pageSize", required = false) Integer pageSize,
+			@RequestParam(value = "paged", required = false) Integer paged, @PathVariable Integer achorage_id,
+			@RequestParam(value = "available_flag", required = false) Integer available_flag) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+
+				param.put("status", 1);
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				// // attach_flag自控1省控2
+				// Integer userType = UserCache.getUserTypeByKey(user_key);
+				// param.put("attach_flag", 1);
+				// if (userType == 3) {
+				// // 省厅
+				// param.put("attach_flag", 2);
+				// }
+				if (achorage_id != 0) {
+					param.put("anchorage_id", achorage_id);
+				}
+				// 是否可用锚位,0可用1不可用
+				param.put("available_flag", available_flag);
+				resultMap = anchorageService.selectAnchorPositionInfos(param, getPageBean(paged, pageSize));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据港口ID检索某港口下符合条件的锚位列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHORAGE.HARBOUR_POSITION)
+	public ModelAndView selectAnchorPositionInfosByHarbourId(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @PathVariable Integer harbour_code,
+			@RequestBody AnchorPositionInfo api) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("harbour_code", harbour_code);
+				param.put("anchorage_id", api.getAnchorage_id());
+				param.put("type", api.getType());
+				param.put("status", api.getStatus());
+				resultMap = anchorageService.selectAnchorPositionInfos(param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 检索锚地下的锚位信息,分为省控锚位和自动锚位的获取,如果attach_flag = 0 则为所有
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHORAGE.HARBOUR_ACHORAGE_POSITION_ATTACH)
+	public ModelAndView selectAnchorPositionAllInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer achorage_id,
+			@PathVariable Integer attach_flag, @RequestParam(required = false) Integer status,
+			@RequestParam(required = false) String anchorage_position_name,
+			@RequestParam(value = "pageSize", required = false) Integer pageSize,
+			@RequestParam(value = "paged", required = false) Integer paged) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				if (attach_flag != 0) {
+					param.put("attach_flag", attach_flag);
+				}
+				if (attach_flag != null) {
+					param.put("status", status);
+				}
+				param.put("anchorage_id", achorage_id);
+				param.put("anchorage_position_name", anchorage_position_name);
+				resultMap = anchorageService.selectAnchorPositionInfos(param, getPageBean(paged, pageSize));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 
+	 * 
+	 * 取代这个方法:selectAnchorPositionAllInfos
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHORAGE.ANCHOR_POSITION_SEARCH)
+	public ModelAndView selectAnchorPositionAllInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestBody(required = true) AnchorPositionInfo api) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("harbour_code", api.getHarbour_code());
+				param.put("anchorage_id", api.getAnchorage_id());
+				param.put("attach_flag", api.getAttach_flag());
+				resultMap = anchorageService.selectAnchorPositionInfos(param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 检索某港口的港口,锚位,锚地信息
+	 * 
+	 * 省级用户检索所有信息: harbour_code输入-1,省级用户检索某港口信息:harbour_code输入当前harbour_code
+	 * 港口用户输入:harbour_code输入0
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.HARBOUR_ACHORAGE_POSITION_CASCADE)
+	public ModelAndView selectHarbourCascadeInfoById(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer harbour_code) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("ukey", user_key);
+				param.put("harbour_code", harbour_code);
+				resultMap = anchorageService.selectHarbourCascadeInfoById(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据ID检索锚地的基本信息
+	 * 
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHORAGE.ACHORAGE_ID)
+	public ModelAndView selectAnchorageBasicInfoById(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("id", id);
+				resultMap = anchorageService.selectAnchorageBasicInfoById(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据ID检索锚位的基本信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_ID)
+	public ModelAndView selectAnchorPositionBasicInfoById(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("ukey", user_key);
+				param.put("id", id);
+				resultMap = anchorageService.selectAnchorPositionBasicInfoById(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 添加锚地
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHORAGE.ANCHORAGE)
+	public ModelAndView addAnchorageInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody AnchorageInfo ai) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = anchorageService.isAnchoragePointSharp(ai.getPoints());
+				if (CommonUtil.parseInt(resultMap.get(KEY.PLAT_REPONSE_STATUS)) == ResponseSC.SystemSC.SYSTEM_OK
+						.getCode()) {
+					resultMap = anchorageService.addAnchorageInfo(user_key, ai);
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 添加锚位
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHORAGE.ANCHOR_POSITION)
+	public ModelAndView addAnchoragePositionInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AnchorPositionInfo api) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = anchorageService.addAnchorPositionInfo(api);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 修改锚地
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ACHORAGE.ACHORAGE_ID)
+	public ModelAndView modifyAnchorageInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody AnchorageInfo ai,
+			@PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				ai.setId(id);
+				resultMap = anchorageService.isAnchoragePointSharp(ai.getPoints());
+				if (CommonUtil.parseInt(resultMap.get(KEY.PLAT_REPONSE_STATUS)) == ResponseSC.SystemSC.SYSTEM_OK
+						.getCode()) {
+					resultMap = anchorageService.modifyAnchorageInfo(ai);
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 修改锚位
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ACHORAGE.ANCHOR_POSITION_ID)
+	public ModelAndView modifyAnchoragePositionInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id,
+			@RequestBody AnchorPositionInfo api) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				api.setId(id);
+				resultMap = anchorageService.modifyAnchorPositionInfo(api);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 检索省厅用户需要审核锚位归属状态改变的列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHORAGE.ANCHOR_POSITION_ATTACH_FLAG_UNAUDIT)
+	public ModelAndView selectAttachFlagChangedAnchorPositionInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("modify_attach_audit_status", 1);
+				resultMap = anchorageService.selectAnchorPositionInfos(param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	@RequestMapping(method = RequestMethod.GET, value = "/achorPosition/achorageId")
+	public String achorPositionWin(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam(value = "paged", required = false) Integer paged, Model model, Integer achorage_id) {
+		Map<String, Object> resultMap = null;
+		try {
+			Map<String, Object> param = new HashMap<String, Object>();
+			param.put("anchorage_id", achorage_id);
+			resultMap = anchorageService.selectAnchorPositionInfos(param, getPageBean(paged));
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		System.out.println(resultMap);
+		model.addAttribute("result", resultMap);
+		return "/localAnchorageManger/anchor_position_win";
+	}
+}

+ 957 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorageApplyController.java

@@ -0,0 +1,957 @@
+package com.loygra.mooring.controller;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.httpclient.util.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.AnchorPositionApplyInfo;
+import com.loygra.mooring.bean.ApplyAdjustInfo;
+import com.loygra.mooring.bo.AnchorPositionApplyAuditParam;
+import com.loygra.mooring.bo.AnchorPositionApplyParam;
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.CommonUtil;
+import com.loygra.mooring.common.Constants;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.AnchorageApplyService;
+import com.loygra.mooring.util.DateUtils;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class AnchorageApplyController extends BaseController {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 8066046820583035311L;
+	@Autowired
+	private AnchorageApplyService anchorageApply;
+
+	/**
+	 * 船代公司查询 江苏省各港口 的详细信息
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.HARBOUR.AGENT_SEARCH_HARBOUR)
+	public ModelAndView getALLHarbourInfo(HttpServletRequest req, HttpServletResponse resp) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = anchorageApply.getAllHarbourInfo();
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 添加锚位计划申请
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY)
+	public ModelAndView addAnchorPositionApplyInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AnchorPositionApplyInfo apai) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				apai.setAgent_company_id(UserCache.getUserIdByKey(user_key));
+				resultMap = anchorageApply.insertAnchorPositionApplyInfo(apai);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据用户查询申请计划信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY)
+	public ModelAndView getAnchorPositionApplyInfosByUserId(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("agent_company_id", UserCache.getUserIdByKey(user_key));
+				param.put("ship_name", apap.getShip_name());
+				param.put("harbour_code", apap.getHarbour_code());
+				// param.put("status", apap.getStatus());
+				// operate==1检索未交费的申请,operate==2检索交费的申请
+				 param.put("operate", apap.getOperate());
+				param.put("status", apap.getStatus());
+				param.put("apply_time_begin", apap.getApply_time_begin());
+				param.put("apply_time_end", apap.getApply_time_end());
+				resultMap = anchorageApply.selectAnchorPositionApplyList(resp,getPageBean(paged), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+	
+	
+	/**
+	 * 
+	 * 根据用户查询申请计划信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY)
+	public ModelAndView expAnchorPositionApplyInfosByUserId(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam(value = "ukey", required = true) String user_key,
+			@RequestParam(required = false) String ship_name,
+			@RequestParam(required = false) Integer harbour_code,
+			@RequestParam Integer operate,
+			@RequestParam Integer export_type,
+			@RequestParam(required = false) Integer status,
+			@RequestParam(required = false) String apply_time_begin,
+			@RequestParam(required = false) String apply_time_end) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("agent_company_id", UserCache.getUserIdByKey(user_key));
+				param.put("ship_name", ship_name);
+				param.put("harbour_code", harbour_code);
+				// param.put("status", apap.getStatus());
+				// operate==1检索未交费的申请,operate==2检索交费的申请
+				 param.put("operate", operate);
+				param.put("status", status);
+				param.put("apply_time_begin", DateUtils.parse(DateUtils.dtSimple, apply_time_begin));
+				param.put("apply_time_end", DateUtils.parse(DateUtils.dtSimple, apply_time_end));
+				
+				param.put("export_type", export_type);
+				resultMap = anchorageApply.selectAnchorPositionApplyList(resp,getPageBean(1), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * 检索某港口排队申请的列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_PENDING_HARBOUR)
+	public ModelAndView selectPendingAnchorPositionApplyListByHarbourCode(HttpServletRequest req,
+			HttpServletResponse resp, @RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @PathVariable Integer harbour_code,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("apply_harbour_code", harbour_code);
+				// param.put("agent_company_id",
+				// UserCache.getUserIdByKey(user_key));
+				if (apap != null) {
+					if (CommonUtil.isNotEmpty(apap.getShip_name())) {
+						param.put("ship_name", apap.getShip_name());
+					}
+				}
+				resultMap = anchorageApply.selectPendingAnchorPositionApplyListByHarbourCode(getPageBean(paged), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据登录用户的港口号检索待审核的申请列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_UNAUDIT)
+	public ModelAndView selectUnAuditAnchorPositionApplyList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				if (apap != null) {
+					param.put("ship_name", apap.getShip_name());
+					param.put("adjust_flag", apap.getAdjust_flag());
+					param.put("company_name", apap.getCompany_name());
+					param.put("attach_flag", apap.getAttach_flag());
+					param.put("to_harbour_code", apap.getTo_harbour_code());
+					param.put("goods", apap.getGoods());
+					param.put("apply_time_begin", apap.getApply_time_begin());
+					param.put("apply_time_end", apap.getApply_time_end());
+					param.put("apply_release_type", apap.getApply_release_type());
+					param.put("export_type", apap.getExport_type());
+				}
+				resultMap = anchorageApply.selectUnAuditAnchorPositionApplyList(resp, param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 导出EXCEL:根据登录用户的港口号检索待审核的申请列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_UNAUDIT)
+	public ModelAndView expUnAuditAnchorPositionApplyList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam String user_key, @RequestParam Integer export_type,
+			@RequestParam Integer apply_release_type) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				param.put("export_type", export_type);
+				param.put("apply_release_type", apply_release_type);
+				resultMap = anchorageApply.selectUnAuditAnchorPositionApplyList(resp, param, getPageBean(1));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return null;// getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 检索省厅的待审核申请列表
+	 * 
+	 * @param param
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_DEP_UNAUDIT)
+	public ModelAndView selectUnAuditAnchorPositionApplyList4DepUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				if (apap != null) {
+					param.put("ship_name", apap.getShip_name());
+					param.put("apply_harbour_code", apap.getHarbour_code());
+					param.put("company_name", apap.getCompany_name());
+					param.put("to_harbour_code", apap.getTo_harbour_code());
+					param.put("goods", apap.getGoods());
+					param.put("adjust_flag", apap.getAdjust_flag());
+					param.put("apply_time_begin", apap.getApply_time_begin());
+					param.put("apply_time_end", apap.getApply_time_end());
+					param.put("apply_release_type", apap.getApply_release_type());
+					//
+					param.put("user_id", UserCache.getUserIdByKey(user_key));
+				}
+				resultMap = anchorageApply.selectUnAuditAnchorPositionApplyList4DepUser(resp, getPageBean(paged),
+						param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * XLS导出:检索省厅的待审核申请列表
+	 * 
+	 * @param param
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_DEP_UNAUDIT)
+	public ModelAndView expUnAuditAnchorPositionApplyList4DepUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam String user_key, @RequestParam Integer export_type, @RequestParam String apply_release_type) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("export_type", export_type);
+				param.put("apply_release_type", apply_release_type);
+				//
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				resultMap = anchorageApply.selectUnAuditAnchorPositionApplyList4DepUser(resp, getPageBean(1), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return null;// getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 省厅发布计划
+	 * 
+	 * @param param
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_PUBLISH)
+	public ModelAndView releaseApplyInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				// 省厅发布申报计划的类型
+				// 1申报计划,2增补计划
+				param.put("apply_release_type", apap.getApply_release_type());
+				resultMap = anchorageApply.releaseApplyInfos(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据申请计划ID检索详情
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ID)
+	public ModelAndView getAnchorPositionApplyList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = anchorageApply.selectAnchorPositionApplyInfo(id);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 根据申请计划ID更新审核状态/或更新审核通过后计划的锚位安排
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ID)
+	public ModelAndView updateAnchorPositionAuditStatus(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id,
+			@RequestBody AnchorPositionApplyAuditParam apaap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				apaap.setApply_id(id);
+				apaap.setUser_id(UserCache.getUserIdByKey(user_key));
+				resultMap = anchorageApply.updateAnchorPositionApplyInfoAuditStatus(apaap);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 省厅调剂港口
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ID_DEP_ADJUST)
+	public ModelAndView updateAnchorPositionAuditStatusByDepAdjust(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id,
+			@RequestBody AnchorPositionApplyAuditParam apaap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				apaap.setApply_id(id);
+				resultMap = anchorageApply.updateAnchorPositionAuditStatusByDepAdjust(apaap);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 港口用户锚泊管理:检索审核状态2,4,5
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_MANAGE)
+	public ModelAndView selectManageAnchorPositionApplyList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				if (apap != null) {
+					param.put("apply_time_begin", apap.getApply_time_begin());
+					param.put("apply_time_end", apap.getApply_time_end());
+					param.put("ship_name", apap.getShip_name());
+					param.put("attach_flag", apap.getAttach_flag());
+				}
+				resultMap = anchorageApply.selectManageAnchorPositionApplyList(resp, param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * XLS导出:港口用户锚泊管理:检索审核状态2,4,5
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_MANAGE)
+	public ModelAndView expManageAnchorPositionApplyList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam String user_key, @RequestParam Integer export_type) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				param.put("export_type", export_type);
+				resultMap = anchorageApply.selectManageAnchorPositionApplyList(resp, param, getPageBean(1));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return null;// getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 港口用户检索的锚泊记录列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_LEAVE)
+	public ModelAndView selectMooringList4Harbour(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestBody AnchorPositionApplyParam apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				if (apap != null) {
+					param.put("ship_name", apap.getShip_name());
+					param.put("attach_flag", apap.getAttach_flag());
+					param.put("apply_time_begin", apap.getApply_time_begin());
+					param.put("apply_time_end", apap.getApply_time_end());
+				}
+				resultMap = anchorageApply.selectMooringList4Harbour(resp, param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * XLS导出:港口用户检索的锚泊记录列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_LEAVE)
+	public ModelAndView expMooringList4Harbour(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam String user_key, @RequestParam Integer export_type,
+			@RequestParam(required = false) String ship_name) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				param.put("export_type", export_type);
+				param.put("ship_name", ship_name);
+				resultMap = anchorageApply.selectMooringList4Harbour(resp, param, getPageBean(1));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return null;// getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 撤回申请计划
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_REVOKE)
+	public ModelAndView revokeAnchorPositionApply(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer apply_id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("apply_id", apply_id);
+				resultMap = anchorageApply.revokeAnchorPositionApply(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 港口管理单位更改已通过审核的申请计划的计划锚泊时间,计划离泊时间和备注
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_AUDIT_ID)
+	public ModelAndView updateTimeInfo4AuditApply(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer apply_id,
+			@RequestBody AnchorPositionApplyAuditParam apaap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("apply_id", apply_id);
+				if (apaap != null) {
+					param.put("plan_park_time", apaap.getPlan_park_time());
+					param.put("plan_leave_time", apaap.getPlan_leave_time());
+					param.put("remark", apaap.getRemark());
+				}
+				resultMap = anchorageApply.updateTimeInfo4AuditApply(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 港口管理单位确定船舶离泊:更新实际锚泊时刻,离泊时刻,诚信项目
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_LEAVE_ID)
+	public ModelAndView updateApplyInfo4Leave(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer apply_id,
+			@RequestBody AnchorPositionApplyAuditParam apaap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("apply_id", apply_id);
+				if (apaap != null) {
+					param.put("actual_park_time", apaap.getActual_park_time());
+					param.put("actual_leave_time", apaap.getActual_leave_time());
+					param.put("integrity", apaap.getIntegrity());
+				}
+				resultMap = anchorageApply.updateApplyInfo4Leave(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 港口管理单位将船代申请提交给省厅,并为省厅冗余审核记录
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_SUBMMIT)
+	public ModelAndView submmitAppy2Dep(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer apply_id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				AnchorPositionApplyAuditParam param = new AnchorPositionApplyAuditParam();
+				param.setApply_id(apply_id);
+				// 省厅审核标志
+				param.setStatus(Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_DEP_AUDIT);
+				resultMap = anchorageApply.submmitAppy2Dep(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 省厅将港口管理单位转过来的请求重新分发给其他港口 将apply_harbour_code改成最新的港口号, 将状态从省厅待审核改成审核通过
+	 * param需要的参数有:apply_id,apply_harbour_code
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_DEP_DISPATCHER)
+	public ModelAndView depUserDispatcherApply(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AnchorPositionApplyAuditParam param) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = anchorageApply.depUserDispatcherApply(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 删除未审核的使用计划
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.DELETE, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ID)
+	public ModelAndView deleteUnauditApply(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("id", id);
+				resultMap = anchorageApply.deleteUnauditApply(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 检索省厅的审核冗余记录:锚泊管理列表(list_type=1)/锚泊记录列表(list_type=2)
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_DEP_AUDIT)
+	public ModelAndView getDepAuditApplyInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @RequestBody AnchorPositionApplyParam apap,
+			@RequestParam(value = "list_type", required = false) Integer list_type) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("ship_name", apap.getShip_name());
+				param.put("cbhh", apap.getCbbh());
+				param.put("harbour_code", apap.getHarbour_code());
+				param.put("company_name", apap.getCompany_name());
+				param.put("to_harbour_code", apap.getTo_harbour_code());
+				param.put("goods", apap.getGoods());
+				param.put("adjust_flag", apap.getAdjust_flag());
+				param.put("attach_flag", apap.getAttach_flag());
+				param.put("apply_time_begin", apap.getApply_time_begin());
+				param.put("apply_time_end", apap.getApply_time_end());
+				if (list_type != null) {
+					if (list_type == 1) {
+						// 锚泊管理
+						param.put("statusArray", new Integer[] { Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_AUDIT_OK,
+								Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_LEAVE_UNCHECKED
+						});
+					} else if (list_type == 2) {
+						// 锚泊记录
+						param.put("statusArray", new Integer[] { Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_AUDIT_NG,
+								Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_LEAVE_UNFEE
+						});
+					}
+					resultMap = anchorageApply.getDepAuditApplyInfos(resp, getPageBean(paged), param);
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * XLS导出:检索省厅的审核冗余记录:锚泊管理列表(list_type=1)/锚泊记录列表(list_type=2)
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_DEP_AUDIT)
+	public ModelAndView expDepAuditApplyInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam String user_key, @RequestParam Integer export_type, @RequestParam Integer list_type,
+			@RequestParam(required = false) Integer harbour_code) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("export_type", export_type);
+				param.put("harbour_code", harbour_code);
+				param.put("list_type", list_type);
+				if (list_type != null) {
+					if (list_type == 1) {
+						// 锚泊管理
+						param.put("statusArray",
+								new Integer[] { Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_AUDIT_OK,
+										Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_LEAVE_UNCHECKED,
+										Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_LEAVE_UNFEE });
+					} else if (list_type == 2) {
+						// 锚泊记录
+						param.put("statusArray", new Integer[] { Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_AUDIT_NG,
+								Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_FEE_OK });
+					}
+				}
+				resultMap = anchorageApply.getDepAuditApplyInfos(resp, getPageBean(1), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * 更改计划时间与同意状态
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_TIME)
+	public ModelAndView updateTime(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AnchorPositionApplyInfo apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("apply_id", apap.getId());
+				Integer operate = null;
+				if (apap.getModify_time_audit_flag() == null) {
+					// 更改修改时间
+					param.put("modify_time_audit_flag", Constants.Entity.ANCHOR_POSITION_APPLY_MODIFY_TIME_WAITING);
+					param.put("modify_park_time", apap.getModify_park_time());
+					param.put("modify_leave_time", apap.getModify_leave_time());
+					operate = Constants.Operate.MODIFY_APPLY_INFO_TIME_UPDATE;
+				} else if (apap.getModify_time_audit_flag() == Constants.Entity.ANCHOR_POSITION_APPLY_MODIFY_TIME_YES
+						|| apap.getModify_time_audit_flag() == Constants.Entity.ANCHOR_POSITION_APPLY_MODIFY_TIME_NO) {
+					// 同意修改时间与否
+					param.put("modify_time_audit_flag", apap.getModify_time_audit_flag());
+					operate = Constants.Operate.MODIFY_APPLY_INFO_TIME_UPDATE_AUDIT;
+				}
+				resultMap = anchorageApply.updateApplyInfo(operate, param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 更改计划详情
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ID)
+	public ModelAndView updateApplyInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id,
+			@RequestBody AnchorPositionApplyInfo apap) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				Integer operate = Constants.Operate.MODIFY_APPLY_INFO;
+				param.put("apply_id", id);
+				param.put("ship_id", apap.getShip_id());
+				param.put("from_harbour_code", apap.getFrom_harbour_code());
+				param.put("to_harbour_code", apap.getTo_harbour_code());
+				param.put("length", apap.getLength());
+				param.put("goods", apap.getGoods());
+				param.put("cbcs", apap.getCbcs());
+				param.put("trade_type", apap.getTrade_type());
+				param.put("plan_park_time", apap.getActual_park_time());
+				param.put("plan_leave_time", apap.getPlan_leave_time());
+				param.put("adjust_flag", apap.getAdjust_flag());
+				param.put("net_tons", apap.getNet_tons());
+				param.put("apply_ship_type", apap.getApply_ship_type());
+				param.put("ship_contact", apap.getShip_contact());
+				param.put("status", Constants.Entity.ANCHOR_POSITION_APPLY_STATUS_UNAUDIT);
+				resultMap = anchorageApply.updateApplyInfo(operate, param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 检索调剂港口列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ADJUST_HARBOUR)
+	public ModelAndView getApplyAdjustInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Long id,
+			@RequestBody ApplyAdjustInfo aai) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				aai.setApply_id(id);
+				resultMap = anchorageApply.getAdjustInfos(aai);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+	
+	/**
+	 * 
+	 * 根据某锚位下面挂靠的计划
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.ACHOR_POSITION.ANCHOR_POSITION_APPLY_ANCHOR_POSITION)
+	public ModelAndView getApplyInfoByAuditPosition(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Long id,
+			@RequestBody Map<String, Object> param) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				param.put("audit_anchor_positon_id", id);
+				resultMap = anchorageApply.getApplyInfoByAuditPosition(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+}

+ 133 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorageApplyControllerView.java

@@ -0,0 +1,133 @@
+package com.loygra.mooring.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 锚地申报单位的 view Controller
+ * @author chenrj
+ *
+ */
+
+@Controller
+public class AnchorageApplyControllerView extends BaseController {	
+	
+	// 锚地申报单位 - 锚位申请  - 锚地预览
+	@RequestMapping(method=RequestMethod.GET,value="/anchorAllView")
+	public String getAnchorAllViewPage(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/anchorApply/anchor_all_view";
+	}
+	
+	//  锚地申报单位 - 船舶管理 
+	@RequestMapping(method=RequestMethod.GET,value="/shipManger")
+	public String getShipMangerPage(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/anchorApply/ship_manger";
+	}
+	
+	// 锚地申报单位 - 诚信管理
+	@RequestMapping(method=RequestMethod.GET,value="/creditMager")
+	public String getCreditMangerPage(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/anchorApply/creditMager";
+	}
+	
+	//锚地申报单位 - 锚位申请 -  锚位申请列表 
+	@RequestMapping(method=RequestMethod.GET,value="/anchorApplyListView")
+	public String getAnchorApplyListViewPage(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/anchorApply/anchor_apply_query";
+	}
+	
+	// 锚地申报单位 - 锚位申请 -  申请添加锚位 
+	@RequestMapping(method=RequestMethod.GET,value="/anchorApplyInfoAdd")
+	public String getAnchorApplyInfoAddPage(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchor_info_add";
+	}
+	
+	// 锚地申报单位 - 锚位申请  - 查看锚位申请信息
+	@RequestMapping(method=RequestMethod.GET,value="/checkViewAnchorInfo")
+	public String getCheckViewAnchorInfoPage(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchor_applyinfo_checkview";
+	}
+	
+	// 锚地申报单位 - 锚位申请  - 锚地总览 - 锚地列表
+	@RequestMapping(method=RequestMethod.GET,value="/anchorSpaceList")
+	public String getAnchorSpaceList(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchor_space_list";
+	}
+	
+	// 锚地申报单位 - 锚位申请  - 锚地总览 - 锚位列表
+	@RequestMapping(method=RequestMethod.GET,value="/anchorSpacePositionList")
+	public String getAnchorSpacePositionList(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchor_space_position_list";
+	}
+	
+	// 锚地申报单位 - 船舶管理 -   船舶管理 二级页面 添加或者修改船舶信息
+	@RequestMapping(method=RequestMethod.GET,value="/shipInfoAddOrEdit")
+	public String getShipInfoAddOrEditPage(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/ship_info_addoredit";
+	}
+	
+	// 锚地申报单位 - 船舶管理 -   船舶管理编辑页面
+	@RequestMapping(method=RequestMethod.GET,value="/ship/info/detail")
+	public String editShipInfoPage(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/ship_detail_info";
+	}
+	
+	// 锚地申报单位 - 锚位申请 - 我的锚位申请列表
+	@RequestMapping(method=RequestMethod.GET,value="/anchor/position/myapply/list")
+	public String getAnchorPositionList(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchor_position_list";
+	}
+	
+	// 锚地申报单位 - 锚位申请 - 我的锚位申请列表 - 锚位申请详情
+	@RequestMapping(method=RequestMethod.GET,value="/anchor/position/myapply/detail")
+	public String getAnchorPositionDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchor_position_detail";
+	}
+	
+	// 锚地申报单位 - 锚位申请 - 申请者列表
+	@RequestMapping(method=RequestMethod.GET,value="/anchor/position/applyer/list")
+	public String getAnchorPositionApplyList(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchorposition_apply_list";
+	}
+	
+	// 锚地申报单位 - 子账号 - 添加
+	@RequestMapping(method=RequestMethod.GET,value="/add/subaccount/list")
+	public String getAddsubAccountList(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/subAccountList";
+	}
+	
+	// 锚地申报单位 - 子账号 - 添加
+	@RequestMapping(method=RequestMethod.GET,value="/add/subaccount/list/detail")
+	public String getAddsubAccountListDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/subAccountDetail";
+	}
+	// 查询船代公司下船的信息
+	@RequestMapping(method=RequestMethod.GET,value="/search/ships")
+	public String getSearchShips(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/Apply_user_ships";
+	}
+	
+	// 进入详请申述页面
+	@RequestMapping(method=RequestMethod.GET,value="/solve/complains")
+	public String getSolveComplains(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/creditMagerDetailInfo";
+	}
+	// 港口下锚地数量
+	@RequestMapping(method=RequestMethod.GET,value="/harbour/anchorages")
+	public String getHarbourAnchorages(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/anchorageManger";
+	}
+	// 添加船舶信息
+	@RequestMapping(method=RequestMethod.GET,value="/ship/info/add")
+	public String getShipInfoAdd(HttpServletRequest req,HttpServletResponse resp){
+		return "/anchorApply/ship_info_add";
+	}
+}

+ 258 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/AnchorageLocalMangerView.java

@@ -0,0 +1,258 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.loygra.mooring.service.AnchorageService;
+import com.loygra.mooring.service.DataService;
+
+/**
+ * 当前锚地管理单位
+ * 
+ * @author chenrj
+ *
+ */
+
+@Controller
+public class AnchorageLocalMangerView extends BaseController {
+
+	@Autowired
+	private AnchorageService anchorageService;
+
+	@Autowired
+	private DataService dataService;
+
+	// 锚地管理 -总览
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorage/allview")
+	public String getAnchorageAllView(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorage_allview";
+	}
+
+	// 锚地管理 -锚地信息管理
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorage/manger")
+	public String getAnchorageMangerPage(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorageManger";
+	}
+
+	// 锚地管理 -锚地管理 信息的添加或者修改或者 详情
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorage/manger/edit")
+	public String getAnchorageMangerEdit(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorageMagerAddOrEdit";
+	}
+
+	// 锚地管理 - 锚位管理
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorage/manger/info")
+	public String getAnchorManger(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorPostionManger";
+	}
+
+	// 锚位管理 - 锚位管理信息编辑
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorage/manger/info/addorEdit")
+	public String getAnchorMangerInfoEdit(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorPostionMagerEdit";
+	}
+
+	// 锚位管理 - 预留锚位申请列表
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorage/reserve/apply")
+	public String getReserveAnchorApply(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/reserveAnchorPostionApply";
+	}
+
+	// 锚位审批 - 锚位申请列表
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorpostion/approval")
+	public String getAnchorageApproval(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorPostionApproval";
+	}
+
+	// 锚位审批 - 锚位申请列表 - 锚位审批详情
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorpostion/approval_detail/{harbour_code}")
+	public String getAnchorageApprovalDetail(HttpServletRequest req, HttpServletResponse resp,
+			@PathVariable Integer harbour_code) {
+		if (harbour_code != -1) { // harbour_code = -1 则是不需要检索是否有港口数据
+			// 需要把值传递给页面上
+			Map<String, Object> param = new HashMap<String, Object>();
+			param.put("harbour_code", harbour_code);
+			param = anchorageService.getAnchorageAvailableCount(param);
+			req.setAttribute("anchorPositionNum", param.get("data"));
+		} else {
+			req.setAttribute("anchorPositionNum", -1);
+		}
+		return "/localAnchorageManger/anchorPostionApprovalDetail";
+	}
+
+	// 锚位审批 - 锚位申请列表编辑
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorpostion/anchorageApplyEdit")
+	public String getAnchorageApplyEdit(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/anchorageApplyEdit";
+	}
+
+	// 锚位审批 - 离泊确认
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorpostion/unberthing")
+	public String getunberthing(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/unberthConfirm";
+	}
+
+	// 锚位审批 - 锚泊管理 - 修改页面
+	@RequestMapping(method = RequestMethod.GET, value = "/mooring/manager/edit")
+	public String getMooringManagerEdit(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/mooring_manager_edit";
+	}
+
+	// 锚位审批 - 离泊确认-离泊确认详情
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorpostion/unberthing_detail")
+	public String getUnberthingDetail(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/unberthConfirmDetail";
+	}
+
+	// 锚位审批 - 锚泊管理
+	@RequestMapping(method = RequestMethod.GET, value = "/anchorpostion/mooring/record")
+	public String getMooringRecord(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/mooring_record";
+	}
+
+	// 申报单位管理
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/manger")
+	public String getDeclareUnitManger(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declarUnitManger";
+	}
+
+	// 申报单位管理 - 申报单位账号审批
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/audit")
+	public String getDeclareUnitAudit(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declarUnitManger";
+	}
+
+	// 申报单位管理 - 申报单位账号审批 -编辑页面(公司信息)
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/company/info")
+	public String getDeclareUnitCompanyInfo(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declarUnitInfo";
+	}
+
+	// 申报单位管理 - 申报单位账号审批 -编辑页面(锚泊记录)
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/anchor/record")
+	public String getDeclareUnitAnchorRecord(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declareUnit_anchor_record";
+	}
+
+	// 申报单位管理 - 申报单位账号审批 -编辑页面(诚信记录)
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/credit/record")
+	public String getDeclareUnitCreditRecord(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declareUnitCreditRecord";
+	}
+
+	// 申报单位管理 - 申报单位诚信管理
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/credit/manger")
+	public String getDeclareUnitCredit(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declareUnitCredit";
+	}
+
+	// 申报单位管理 - 黑名单管理
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/blacklist")
+	public String getBlacklist(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/blackListManger";
+	}
+
+	// 申报单位管理 - 查看账号信息
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/audit/account/info")
+	public String getAuditAccountPage(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/declareUnitAccountInfo";
+	}
+
+	// 收费管理-收费规则设置
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/charge")
+	public String getChargePage(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/chargeList";
+	}
+
+	// 统计分析-锚泊统计分析
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/statistic/mooring")
+	public String getMooringStatisticPage(HttpServletRequest req, HttpServletResponse resp) {
+
+		return "/localAnchorageManger/mooringStatistic";
+	}
+
+	// 统计分析-失信行为统计分析
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/statistic/cheat")
+	public String getCheatStatisticPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/cheatStatistic";
+	}
+
+	// 费率详情
+	@RequestMapping(method = RequestMethod.GET, value = "/declareunit/chargelist/detail")
+	public String getChargeListDetailPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/chargeListDetail";
+	}
+
+	// 锚位信息列表
+	@RequestMapping(method = RequestMethod.GET, value = "/anchormanager/anchorposition/list")
+	public String getAnchorpositionListPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/anchor_space_position_list";
+	}
+
+	// 锚地编辑页面
+	@RequestMapping(method = RequestMethod.GET, value = "/anchormanager/anchorage/edit")
+	public String getAnchorageListPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/anchorage_info_edit";
+	}
+
+	// 锚位信息编辑页面
+	@RequestMapping(method = RequestMethod.GET, value = "/anchormanager/anchorposition/edit")
+	public String getAnchorpositionListEditPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/anchorposition_info_edit";
+	}
+	
+	// 待处理申诉列表
+	@RequestMapping(method = RequestMethod.GET, value = "/pending/complain/list")
+	public String getPendingComplainListPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/pendingRepresentationsList";
+	}
+	
+	// 待处理申诉详情
+	@RequestMapping(method = RequestMethod.GET, value = "/pending/complain/detail/info")
+	public String getPendingComplainDetailInfoPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/localAnchorageManger/creditMagerDetailInfo";
+	}
+	
+	// 提醒消息页面
+		@RequestMapping(method=RequestMethod.GET,value="/infos/tip")
+		public String getInfosTip(HttpServletRequest req,HttpServletResponse resp){
+			return "/localAnchorageManger/infostip";
+		}
+		
+		// 预警消息页面
+		@RequestMapping(method=RequestMethod.GET,value="/prealarm/info")
+		public String getPreAlarmInfo(HttpServletRequest req,HttpServletResponse resp){
+			return "/localAnchorageManger/preAlarmInfo";
+		}
+	
+}

+ 194 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/BaseController.java

@@ -0,0 +1,194 @@
+package com.loygra.mooring.controller;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.CommonUtil;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.util.JsonMarshaller;
+import com.loygra.mooring.util.PageBean;
+import com.loygra.mooring.util.ResultMapUtils;
+
+/**
+ * controller基类
+ * 
+ * @author Mayer.Ng
+ * 
+ */
+public class BaseController extends ResultMapUtils {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 6958323488831465360L;
+
+	/**
+	 * LOG
+	 */
+	protected final static Logger LOGGER = LoggerFactory.getLogger(BaseController.class);
+
+	private static String CONTENT_TYPE_JSON = "application/json";
+
+	/**
+	 * 默认返回的数据视图空对象
+	 */
+	private final static ModelAndView DEFAULT_MODEL_VIEW = new ModelAndView(StringUtils.EMPTY, StringUtils.EMPTY,
+			StringUtils.EMPTY);
+
+	/**
+	 * 设置响应请求头,返回数据视图
+	 * 
+	 * @param statusCode
+	 * @param data
+	 * @return
+	 */
+	protected ModelAndView getModelAndView(HttpServletResponse response, Map<String, Object> responseData) {
+		int statusCode = getStatusCode(responseData);
+		if (!isOk(statusCode)) {
+			putNullData(responseData);
+		}
+		putStatusMsg(responseData);
+		return new ModelAndView(StringUtils.EMPTY, StringUtils.EMPTY, responseData.getClass().cast(responseData));
+
+	}
+
+	/**
+	 * 设置响应请求头,返回数据视图
+	 * 
+	 * @param statusCode
+	 * @param data
+	 * @return
+	 */
+	protected ModelAndView getModelAndView(HttpServletResponse response, int statusCode, Object data) {
+		if (statusCode == ResponseSC.SystemSC.SYSTEM_OK.getCode() && data != null) {
+			return new ModelAndView(StringUtils.EMPTY, StringUtils.EMPTY, data.getClass().cast(data));
+		}
+		return DEFAULT_MODEL_VIEW;
+	}
+
+	/**
+	 * 设置响应请求头,返回页面视图
+	 * 
+	 * @param statusCode
+	 * @param data
+	 * @return
+	 */
+	protected ModelAndView getModelAndView(HttpServletResponse response, Map<String, Object> responseData,
+			String viewName, String modelName) {
+		int statusCode = getStatusCode(responseData);
+		if (!isOk(statusCode)) {
+			putNullData(responseData);
+		}
+		putStatusMsg(responseData);
+		return new ModelAndView(viewName, modelName, responseData.getClass().cast(responseData));
+	}
+
+	/**
+	 * 
+	 * unmarshall裸数据
+	 * 
+	 * @param contentType
+	 * @param body
+	 * @return
+	 */
+	protected Object unmarshal(String contentType, String body, Class<?> clazz) throws Exception {
+		if (CONTENT_TYPE_JSON.equalsIgnoreCase(contentType)) {
+			return JsonMarshaller.unmarshal(body, clazz);
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * unmarshall裸数据
+	 * 
+	 * @param contentType
+	 * @param body
+	 * @return
+	 */
+	protected Object unmarshals(String contentType, String body, Class<?> clazz) throws Exception {
+		if (CONTENT_TYPE_JSON.equalsIgnoreCase(contentType)) {
+			return JsonMarshaller.unmarshal2Objects(body, clazz);
+		}
+		return null;
+	}
+
+	/**
+	 * 分页参数验证
+	 */
+	public static boolean pagingParamValidation(int paged, int pageSize) {
+		if (paged <= 0 || pageSize <= 0)
+			return false;
+		if ((paged - 1) * pageSize < 0)
+			return false;
+		return true;
+	}
+
+	/**
+	 * 获取客户端ip
+	 * 
+	 * @param request
+	 * @return
+	 */
+	public String getRemoteAddr(HttpServletRequest request) {
+		String ip = request.getHeader(" x-forwarded-for ");
+		if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {
+			ip = request.getHeader(" Proxy-Client-IP ");
+		}
+		if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {
+			ip = request.getHeader(" WL-Proxy-Client-IP ");
+		}
+		if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {
+			ip = request.getRemoteAddr();
+		}
+		return ip;
+	}
+
+	/**
+	 * 获取PageBean
+	 * 
+	 * @return
+	 */
+	public PageBean getPageBean(Integer paged) {
+		PageBean pageBean = new PageBean();
+		if (paged != null && paged >0) {
+			pageBean.setPaged(paged);
+		}
+		return pageBean;
+	}
+	
+	/**
+	 * 获取PageBean
+	 * 
+	 * @return
+	 */
+	public PageBean getPageBean(Integer paged,Integer pageSize) {
+		PageBean pageBean = new PageBean();
+		if (paged != null && paged >0) {
+			pageBean.setPaged(paged);
+		}
+		if (pageSize != null && pageSize >0) {
+			pageBean.setPageSize(pageSize);
+		}
+		return pageBean;
+	}
+	
+	/**
+	 * ajax获取数据时,验证ukey权限
+	 * 
+	 * @param ukey
+	 * @return
+	 */
+	public boolean checkHttpHeaderUserKey(String ukey, Map<String, Object> resultMap) {
+		return CommonUtil.isNotEmpty(CommonUtil.getString(UserCache.getUserIdByKey(ukey)));
+	}
+
+}

+ 175 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/BaseView.java

@@ -0,0 +1,175 @@
+package com.loygra.mooring.controller;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.loygra.mooring.bean.User;
+import com.loygra.mooring.bean.WeatherInfo;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.service.UserService;
+import com.loygra.mooring.service.WeatherInfoService;
+
+/**
+ * 注册登陆 view controller
+ * 
+ * @author chenrj
+ *
+ */
+
+@Controller
+public class BaseView extends BaseController {
+
+	@Autowired
+	private UserService userService;
+	@Autowired
+	private WeatherInfoService weatherInfoService;
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -1920690865590494305L;
+
+	// 注册页面
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_REGISTER)
+	public String getRegisterPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/web/register";
+	}
+
+	// 登陆页面
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_LOGIN)
+	public String getLoginPage(HttpServletRequest req, HttpServletResponse resp) {
+		return "/web/login";
+	}
+
+	// 忘记密码页面
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_FORGET_PASSWORD)
+	public String getForgetPasswordPage(HttpServletRequest req, HttpServletResponse resp, @PathVariable Integer type) {
+		req.setAttribute("pageType", type);
+		return "/web/message";
+	}
+
+	/**
+	 * 邮件发送提示页面
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	// 登陆页面
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_EMAIL)
+	public String getEmailTipPage(HttpServletRequest req, HttpServletResponse resp, @PathVariable String type,
+			String email) {
+		req.setAttribute("emailType", type); // type = 1 注册 2 登录 3忘记密码
+		req.setAttribute("email", email);
+		return "/web/email_tip";
+	}
+
+	// 锚地申报单位
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_APPLYACHOR_INDEX)
+	public String getApplyAchorIndexPage(HttpServletRequest req, HttpServletResponse resp) {
+		String url = checkUserauthority(req);
+		if (url != "")
+			return url;
+		setWeatherInfo(req);
+		return "/anchorApply/index";
+	}
+
+	/**
+	 * 
+	 * 设置天气信息
+	 * 
+	 * @param req
+	 */
+	private void setWeatherInfo(HttpServletRequest req) {
+		// 获取session中用户
+		User u = (User) req.getSession().getAttribute("UserInfo");
+		if (u != null) {
+			WeatherInfo wi = new WeatherInfo();
+			wi.setHarbour_code(u.getHarbour_code());
+			Map<String, Object> weather = weatherInfoService.getWeatherInfo(wi);
+			if (isOk(weather)) {
+				req.setAttribute("weather", getData(weather));
+			}
+		}
+	}
+
+	// 锚地申报单位 - 信息提交审核页面
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_AUDIT_INFO)
+	public String getAuditPage(HttpServletRequest req, HttpServletResponse resp) {
+		String url = checkUserauthority(req);
+		if (url != "")
+			return url;
+		return "/anchorApply/declare_unit_auditing";
+	}
+
+	/**
+	 * 锚地申报单位 - 信息已经提交页面
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_AUDIT_ACCOUNT)
+	public String getAccountAuditing(HttpServletRequest req, HttpServletResponse resp) {
+		String url = checkUserauthority(req);
+		if (url != "")
+			return url;
+		// 处于审核页面的时候,需要检验session中的user 状态
+		User user = (User) req.getSession().getAttribute("UserInfo");
+		User obj = userService.getUserById(user);
+		if (obj.getStatus() != 4) { // 审核中...
+			user.setStatus(obj.getStatus());
+			req.getSession().setAttribute("UserInfo", user);
+		}
+		if (obj.getStatus() == 2) {
+			return "redirect:/service/applyAchor/index";
+		}
+		return "/anchorApply/account_auditing";
+	}
+
+	// 当地锚地管理单位
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_ANCHORAGE_INDEX)
+	public String getAnchorageIndex(HttpServletRequest req, HttpServletResponse resp) {
+		String url = checkUserauthority(req);
+		if (url != "")
+			return url;
+		setWeatherInfo(req);
+		return "/localAnchorageManger/index";
+	}
+
+	// 省级指挥调度中心
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_CONTROLCENTER)
+	public String controlcenterIndex(HttpServletRequest req, HttpServletResponse resp) {
+		String url = checkUserauthority(req);
+		if (url != "")
+			return url;
+		setWeatherInfo(req);
+		return "/controlCenter/index";
+	}
+
+	// 海事局
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.VIEW.VIEW_MARINEBOARD)
+	public String marineboardIndex(HttpServletRequest req, HttpServletResponse resp) {
+		String url = checkUserauthority(req);
+		if (url != "")
+			return url;
+		setWeatherInfo(req);
+		return "/marineBoard/index";
+	}
+
+	// check 权限
+	public String checkUserauthority(HttpServletRequest req) {
+		if (req.getSession().getAttribute("UserInfo") == null)
+			return "redirect:/service/login";
+		return "";
+	}
+
+}

+ 85 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/ChargeController.java

@@ -0,0 +1,85 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.ChargeConfigInfo;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.ChargeService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class ChargeController extends BaseController {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 8066046820583035311L;
+	@Autowired
+	private ChargeService chargeService;
+
+	/**
+	 * 检索收费信息
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.CHARGE.CHARGE_HARBOUR_CODE)
+	public ModelAndView getALLHarbourInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer harbour_code) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("harbour_code", harbour_code);
+				resultMap = chargeService.selectByHarbourCode(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 
+	 * 修改收费配置
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.CHARGE.CHARGE_ID)
+	public ModelAndView addAnchorPositionApplyInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id,
+			@RequestBody ChargeConfigInfo chargeConfigInfo) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("id", id);
+				param.put("param1", chargeConfigInfo.getParam1());
+				param.put("param4", chargeConfigInfo.getParam4());
+				param.put("param5", chargeConfigInfo.getParam5());
+				resultMap = chargeService.updateByHarbourCode(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+}

+ 175 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/ControlCenterControllerView.java

@@ -0,0 +1,175 @@
+package com.loygra.mooring.controller;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.loygra.mooring.bean.ManageUser;
+import com.loygra.mooring.service.ManageUserService;
+
+@Controller
+public class ControlCenterControllerView extends BaseController{
+	
+	@Autowired
+	private ManageUserService mUserService ;
+	
+	//锚地管理-总览
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/overview")
+	public String overview(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/overview";
+	}
+	
+	//锚地管理-锚地信息管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/anchorage")
+	public String anchorageList(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/anchorageList";
+	}
+	
+	//锚地管理-锚地管理-锚地详情查看
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/anchoragedetail")
+	public String anchorageDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/anchorageDetail";
+	}
+	
+	//锚地管理-锚位管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/anchoragespace")
+	public String anchorageSpaceList(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/anchorageSpaceList";
+	}
+	
+	//锚地管理-锚位管理-锚位信息详情
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/anchoragespacedetail")
+	public String anchorageSpaceDetail(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/anchorageSpaceDetail";
+	}
+	
+	//锚地管理-锚位管理-省控锚位管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/anchoragespaceaudit")
+	public String anchorageSpaceAuditList(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/anchorageSpaceAuditList";
+	}
+	
+	//锚位审批-锚位申请列表
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/audits")
+	public String auditList(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/auditList";
+	}
+	
+	//锚位审批-锚位申请详情审批
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/audit_detail")
+	public String auditDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/auditDetail";
+	}
+	
+	//锚位审批-锚泊管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/audits_record")
+	public String auditListRecord(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/auditListRecord";
+	}
+	
+	//公告管理-公告管理列表
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/announcements")
+	public String announcementList(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/announcementList";
+	}
+	
+	//公告管理-公告管理列表-公告查看
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/announcementdetail")
+	public String announcementDetail(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/announcementDetail";
+	}
+	
+	//公告管理-公告管理列表-公告新建与编辑
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/announcementedit")
+	public String announcementEdit(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/announcementEdit";
+	}
+	
+	//公告管理-引航计划表
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/pilotages")
+	public String pilotageList(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/pilotageList";
+	}
+	
+	//公告管理-引航费率
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/pilotagefee")
+	public String pilotageFee(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/pilotageFee";
+	}
+	
+	//统计管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/statistic")
+	public String statistic(HttpServletRequest req,HttpServletResponse resp){
+		
+		return "/controlCenter/statistic";
+	}
+	
+	//锚地管理单位账号管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/accouts")
+	public String accountList(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/accountList";
+	}
+	
+	//锚地管理单位账号管理
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/accoutdetail")
+	public String accountDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/accountDetail";
+	}
+	
+	//锚地管理单位账号管理-添加管理用户
+	@RequestMapping(value="/controlcenter/addmanageuser")
+	public Map<String, Object> addManageUser(HttpServletRequest req,HttpServletResponse resp,
+			ManageUser mUser){
+		Map<String,Object> resultMap=getResultMap();
+		resultMap = mUserService.add(mUser);
+		return resultMap;
+	}
+	
+	// 锚地管理 - 锚地信息 - 锚位信息
+	@RequestMapping(value="/controlcenter/anchorposition/info")
+	public String addanchorpositioninfo(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/anchor_space_position_list";
+	}
+	
+	// 锚地管理 - 锚地信息 - 锚位信息
+	@RequestMapping(value="/controlcenter/mooring/record")
+	public String mooringrecordManger(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/mooring_record";
+	}
+	
+	// 省级指挥中心 - 锚位详情
+	@RequestMapping(value="/controlcenter/anchorposition/detail")
+	public String getAnchorpositionDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/anchorpositionDetail";
+	}
+	
+	// 未发布公告
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/undeployannouncements")
+	public String undeployannouncementList(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/unDepoyAnnouncementList";
+	}
+	
+	// 省厅文件上传
+	@RequestMapping(method=RequestMethod.GET,value="/controlcenter/info/tips")
+	public String getControlCenterInfoTips(HttpServletRequest req,HttpServletResponse resp){
+		return "/controlCenter/infostip";
+	}
+	
+}

+ 142 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/IntegrityController.java

@@ -0,0 +1,142 @@
+package com.loygra.mooring.controller;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.UserApplyUnit;
+import com.loygra.mooring.bo.IntegrityBO;
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.IntegrityService;
+import com.loygra.mooring.service.UserService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class IntegrityController extends BaseController {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 8066046820583035311L;
+	@Autowired
+	private IntegrityService integrityService;
+	@Autowired
+	private UserService userService;
+
+	/**
+	 * 根据ID检索诚信详情
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.INTEGRITY.INTEGRITY_ID)
+	public ModelAndView getIntegrityInfoById(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = integrityService.selectOne(id);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 检索诚信列表
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.INTEGRITY.INTEGRITY_SEARCH)
+	public ModelAndView getIntegrityInfos4AgentUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @RequestBody IntegrityBO obj) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				if (obj.getOperate_type() != null && obj.getOperate_type() == 1) {
+					// 检索申报单位诚信子项列表
+					obj.setAgent_company_id(UserCache.getUserIdByKey(user_key));
+					resultMap = integrityService.getIntegrityInfos4AgentUser(obj, getPageBean(paged));
+				} else if (obj.getOperate_type() != null && obj.getOperate_type() == 2) {
+					// 检索管理单位诚信列表
+					resultMap = integrityService.getIntegrityInfos4ManageUser(user_key, obj, getPageBean(paged));
+				} else if (obj.getOperate_type() != null && obj.getOperate_type() == 3) {
+					// 检索港口管理单位诚信子项列表
+					// 需要传Agent_company_id
+					if (obj.getAgent_company_id() == null) {
+						putStatusCode(resultMap, ResponseSC.CommonSC.PARAM_ERROR.getCode());
+					} else {
+						resultMap = integrityService.getIntegrityInfos4AgentUser(obj, getPageBean(paged));
+					}
+				} else if (obj.getOperate_type() != null && obj.getOperate_type() == 4) {
+					// 检索港口管理单位待处理诚信子项列表
+					obj.setAppeal_status(1);
+					resultMap = integrityService.getUnAuditIntegrityInfos4Manager(user_key, obj, getPageBean(paged));
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 将船代公司移除黑名单
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.INTEGRITY.INTEGRITY_COMPANY_AVAILABLE)
+	public ModelAndView availableCompanyIntegrity(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@PathVariable Long agent_company_id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				UserApplyUnit uau = new UserApplyUnit();
+				uau.setId(agent_company_id);
+				uau.setIntegrity_score(100);
+				userService.updateAgentInfo(uau);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 更新诚信
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.INTEGRITY.INTEGRITY_ID)
+	public ModelAndView updateIntegrity(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id,
+			@RequestBody IntegrityBO integrityBO) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				integrityBO.setId(id);
+				integrityService.updateIntegrity(integrityBO);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+}

+ 45 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/MarineBoardControllerView.java

@@ -0,0 +1,45 @@
+package com.loygra.mooring.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 海事局
+ * @author qiuyz
+ *
+ */
+
+@Controller
+public class MarineBoardControllerView extends BaseController{
+	
+	// 二级页面-申报计划表
+	@RequestMapping(method=RequestMethod.GET,value="/marineboard/audits")
+	public String auditList(HttpServletRequest req,HttpServletResponse resp){
+		return "/marineBoard/auditList";
+	}
+	
+	//锚位审批-锚泊管理
+	@RequestMapping(method=RequestMethod.GET,value="/marineboard/audits_record")
+	public String auditListRecord(HttpServletRequest req,HttpServletResponse resp){
+		return "/marineBoard/auditListRecord";
+	}
+	
+	// 锚地管理 - 锚地信息 - 锚位信息
+	@RequestMapping(value="/marineboard/mooring/record")
+	public String mooringrecordManger(HttpServletRequest req,HttpServletResponse resp){
+		return "/marineBoard/mooring_record";
+	}
+	
+	//二级页面-审批详情
+	@RequestMapping(method=RequestMethod.GET,value="/marineboard/audit/detail")
+	public String auditDetail(HttpServletRequest req,HttpServletResponse resp){
+		return "/marineBoard/auditDetail";
+	}
+	
+	
+	
+}

+ 177 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/NoticeController.java

@@ -0,0 +1,177 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.NoticeInfo;
+import com.loygra.mooring.bo.NoticeInfoParam;
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.NoticeService;
+import com.loygra.mooring.service.UserService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class NoticeController extends BaseController {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -8788387746461915837L;
+	@Autowired
+	private UserService userService;
+	@Autowired
+	private NoticeService noticeService;
+
+	/**
+	 * 添加公告
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param obj
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.NOTICE.NOTICE)
+	public ModelAndView addNoticeInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody NoticeInfo obj) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				obj.setInsert_user_id(UserCache.getUserIdByKey(user_key));
+				obj.setStatus(1);
+				resultMap = noticeService.insertNotice(obj);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 检索公告列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param obj
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.NOTICE.NOTICES)
+	public ModelAndView getNoticeInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @RequestBody NoticeInfoParam obj) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				// title,type,from_time,to_time
+				// 设置访问级别
+				resultMap = noticeService.getNoticeInfos(getPageBean(paged), obj, user_key);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 检索公告列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param obj
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.NOTICE.NOTICES_SUSPENDING)
+	public ModelAndView getSuspendingNoticeInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @RequestBody NoticeInfoParam obj) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				if(obj.getOperate()==1) {
+				// 港口管理单位
+				// operate=1
+				// 检索类型=普通公告1,状态=未提交1、审核中2、审核不通过4,用户类型为2
+					resultMap = noticeService.getSuspendingNoticeInfos(getPageBean(paged), obj, user_key);
+				}else if(obj.getOperate()==2){
+					// 省厅
+					// operate=2
+					// 检索类型=普通公告1,状态=未提交1、审核中2、审核不通过4,用户类型2,3
+					resultMap = noticeService.getSuspendingNoticeInfos(getPageBean(paged), obj, user_key);
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 检索公告信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param obj
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.NOTICE.NOTICE_ID)
+	public ModelAndView getNoticeInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody NoticeInfo obj,
+			@PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("id", id);
+				// param.put("status", obj.getStatus());
+				resultMap = noticeService.getNoticeInfo(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 更新公告信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param obj
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.NOTICE.NOTICE_ID)
+	public ModelAndView updateNoticeInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody NoticeInfo obj,
+			@PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				obj.setId(id);
+				resultMap = noticeService.updateNoticeInfo(obj);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+}

+ 417 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/ShipController.java

@@ -0,0 +1,417 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.AgentShipInfo;
+import com.loygra.mooring.bean.PilotageInfo;
+import com.loygra.mooring.bean.ShipInfo;
+import com.loygra.mooring.bo.LonLatDistrict;
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.CommonUtil;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.AnchorageApplyService;
+import com.loygra.mooring.service.DataService;
+import com.loygra.mooring.service.ShipService;
+import com.loygra.mooring.util.LogUtil;
+
+/**
+ * 船舶控制类
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Controller
+public class ShipController extends BaseController {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -4160039526330436349L;
+	@Autowired
+	private DataService dataService;
+	@Autowired
+	private ShipService shipService;
+	@Autowired
+	private AnchorageApplyService applyService;
+
+	/**
+	 * 取得某区域内船舶动态信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.AIS.SHIP_REAL_DATA)
+	public ModelAndView getShipRealTimeData(HttpServletRequest req, HttpServletResponse resp,
+			@RequestBody LonLatDistrict lld) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = dataService.selectAISDataByLBRTDistrict(lld);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 取得省厅或者某港口的计划所在的船舶动态信息,harbour_code为港口code,省厅为0
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.AIS.SHIP_REAL_DATA_HARBOUR)
+	public ModelAndView getApplyShipRealTimeData4DepOrHarbourManager(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable Integer harbour_code) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				if (harbour_code == 0) {
+					harbour_code = null;
+				}
+				param.put("harbour_code", harbour_code);
+				resultMap = applyService.selectApplyShipRealTime(param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 取得某区域内船舶动态信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.AIS.SHIP_REAL_DATA_MMSI)
+	public ModelAndView getShipRealTimeInfoByMMSI(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable Integer mmsi) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				resultMap = dataService.getShipRealTimeInfoByMMSI(mmsi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	@RequestMapping(method = RequestMethod.GET, value = "/shipMmsi/{mmsi}")
+	public ModelAndView getShipByMMSI(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable String mmsi) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				resultMap = dataService.findShipByMMSI(mmsi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 根据船舶MMSI编号和天数查询轨迹
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param ukey
+	 * @param mmsi
+	 * @param dayNum
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/shipTrack/{mmsi}/{dayNum}")
+	public ModelAndView getShipTrackByMMSI(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable String mmsi,
+			@PathVariable String dayNum) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				resultMap = dataService.getShipTrackByMMSI(mmsi, dayNum);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 根据船舶编号,从40万条的船舶库里检索出船
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.SHIP.SHIP_LIB)
+	public ModelAndView getShipFromLib(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable String cbbh) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				ShipInfo shipInfo = new ShipInfo();
+				cbbh = cbbh.replace(" ", "");
+				shipInfo.setCbbh(cbbh);
+				resultMap = shipService.getShipInfo(shipInfo);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 添加船代公司船舶信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.SHIP.AGENT_SHIP)
+	public ModelAndView addAgentShipInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @RequestBody AgentShipInfo asi) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				asi.setAgent_company_id(UserCache.getUserIdByKey(ukey));
+				resultMap = shipService.insertAgentShipInfo(asi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 根据条件取得某船代公司的船舶
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.SHIP.AGENT_SHIPS)
+	public ModelAndView getAgentShipsInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey,
+			@RequestParam(value = "paged", required = false) Integer paged,
+			@RequestParam(value = "pageSize", required = false) Integer pageSize, @RequestBody AgentShipInfo asi) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				asi.setAgent_company_id(UserCache.getUserIdByKey(ukey));
+				resultMap = shipService.getAgentShipInfos(getPageBean(paged, pageSize), asi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 根据条件取得某船代公司的船舶
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.SHIP.AGENT_SHIP_ID)
+	public ModelAndView getAgentShipInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable Long id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				AgentShipInfo asi = new AgentShipInfo();
+				asi.setId(id);
+				// asi.setAgent_company_id(UserCache.getUserIdByKey(ukey));
+				resultMap = shipService.getAgentShipInfoById(asi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 删除船代公司某条船
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.DELETE, value = RequestURL.SHIP.AGENT_SHIP_ID)
+	public ModelAndView deleteAgentShipInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @PathVariable Long id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				AgentShipInfo asi = new AgentShipInfo();
+				asi.setId(id);
+				asi.setAgent_company_id(UserCache.getUserIdByKey(ukey));
+				resultMap = shipService.deleteAgentShipInfo(asi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 编辑船代公司某条船
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.SHIP.AGENT_SHIP_ID)
+	public ModelAndView modifyAgentShipInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @RequestBody AgentShipInfo asi,
+			@PathVariable Long id) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				asi.setId(id);
+				asi.setAgent_company_id(UserCache.getUserIdByKey(ukey));
+				resultMap = shipService.updateAgentShipInfo(asi);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 根据条件取得引航记录
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.SHIP.PILOTAGE)
+	public ModelAndView selectPilotageInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey,
+			@RequestParam(value = "paged", required = false) Integer paged, @RequestBody PilotageInfo pi) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(ukey, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("type", pi.getType());
+				param.put("ship_name", pi.getShip_name());
+				param.put("ship_id", pi.getShip_id());
+				param.put("nationality", pi.getNationality());
+				param.put("proxy", pi.getProxy());
+				param.put("begin_local", pi.getBegin_local());
+				param.put("dest_local", pi.getDest_local());
+				param.put("ship_type", pi.getShip_type());
+				resultMap = shipService.selectPilotageInfos(getPageBean(paged), param);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 根据关键字搜索船舶数据
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param ukey
+	 * @param model
+	 * @param keyWords
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/shipSearch/keyWords")
+	public String searchShip(HttpServletRequest req, HttpServletResponse resp, Model model, String keyWords) {
+		Map<String, Object> resultMap = null;
+		try {
+			resultMap = dataService.searchShip(keyWords, 1, 10);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		model.addAttribute("result", resultMap);
+		return "/localAnchorageManger/shipSearchContent";
+	}
+
+	/**
+	 * 根据关键字搜索船舶数据
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param ukey
+	 * @param model
+	 * @param keyWords
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = "/ships/{type}")
+	public ModelAndView selectShips(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.USER_KEY) String ukey, @RequestBody ShipInfo shipInfo,
+			@PathVariable Integer type) {
+		Map<String, Object> resultMap = null;
+		try {
+			// type==1为从40万船舶数据中检索船舶
+			// type==2从本地库中检索船舶
+			if (CommonUtil.isNotEmpty(shipInfo.getCbmc())) {
+				//
+				if (type == 1) {
+					resultMap = shipService.selectShipInfos(shipInfo);
+				} else if (type == 2) {
+					resultMap = shipService.selectShipInfosInLocalLib(shipInfo);
+				}
+			} else {
+				putStatusCode(resultMap, ResponseSC.CommonSC.PARAM_ERROR.getCode());
+			}
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+}

+ 74 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/TestController.java

@@ -0,0 +1,74 @@
+package com.loygra.mooring.controller;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bo.AISData4SingleShip;
+import com.loygra.mooring.bo.LonLatDistrict;
+import com.loygra.mooring.bo.TestAISData;
+import com.loygra.mooring.service.TestService;
+
+@Controller
+public class TestController extends BaseController {
+
+	private static final long serialVersionUID = 9056631235927850547L;
+	@Autowired
+	private TestService testService;
+
+	/**
+	 * 
+	 * 分页检索报警
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/test/realtime/district")
+	public ModelAndView getAISDataByDistrict(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam String leftLon, @RequestParam String rightLon, @RequestParam String bottomLat,
+			@RequestParam String topLat) {
+		TestAISData data = new TestAISData();
+		try {
+			LonLatDistrict lld = new LonLatDistrict();
+			lld.setLeftLon(leftLon);
+			lld.setRightLon(rightLon);
+			lld.setBottomLat(bottomLat);
+			lld.setTopLat(topLat);
+			data.setShips(testService.select(lld));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return new ModelAndView(StringUtils.EMPTY, StringUtils.EMPTY, data.getClass().cast(data));
+	}
+
+	/**
+	 * 
+	 * 分页检索报警
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/test/realtime")
+	public ModelAndView getAISDataByMMSI(HttpServletRequest req, HttpServletResponse resp, @RequestParam String mmsi) {
+		AISData4SingleShip data = null;
+		try {
+			AISData4SingleShip param = new AISData4SingleShip();
+			param.setMmsi(mmsi);
+			data = testService.selectOne(param);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return new ModelAndView(StringUtils.EMPTY, StringUtils.EMPTY, data.getClass().cast(data));
+	}
+}

+ 74 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/UploadController.java

@@ -0,0 +1,74 @@
+package com.loygra.mooring.controller;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.UploadService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class UploadController extends BaseController {
+
+	@Autowired
+	private UploadService uploadService;
+	
+	@RequestMapping(method = RequestMethod.POST, value =RequestURL.COMMON.UPLOAD)
+	public ModelAndView upload(
+			HttpServletResponse response,
+			String user_id ,
+			@RequestParam(required=false,value="b_license")  MultipartFile img_user_portrait,
+			@RequestParam(required=false,value="org_code_certifcate")  MultipartFile img_user_portrait1,
+			@RequestParam(required=false,value="legal_ID")  MultipartFile img_user_portrait2,
+			@RequestParam(required=false,value="contact_ID")  MultipartFile img_user_portrait3,
+			@RequestParam(required=false,value="file_ID")  MultipartFile file,
+			@RequestParam(required=false,value="file") MultipartFile file2
+			) {
+		
+		Map<String,Object> resutlMap=getResultMap();
+		
+		try {
+			if(img_user_portrait != null)
+				resutlMap = uploadService.upload(user_id, img_user_portrait);
+			if(img_user_portrait1!= null)
+				resutlMap = uploadService.upload(user_id, img_user_portrait1);
+			if(img_user_portrait2!= null)
+				resutlMap = uploadService.upload(user_id, img_user_portrait2);
+			if(img_user_portrait3!= null)
+				resutlMap = uploadService.upload(user_id, img_user_portrait3);
+			if(file!= null)
+				resutlMap = uploadService.upload(user_id, file);
+			if(file2!= null)
+				resutlMap = uploadService.upload(user_id, file2);
+			
+		} catch (Exception e) {
+			putStatusCode(resutlMap,  ResponseSC.SystemSC.SYSTEM_ERROR.getCode(),null);
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(response,resutlMap);
+	}
+	
+	/**
+	 * 文件大小验证
+	 * @param response
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value =RequestURL.COMMON.FILE_VALIDATION)
+	public ModelAndView fileValidation(
+			HttpServletResponse response) {
+		Map<String,Object> resultMap=getResultMap();
+		putStatusCode(resultMap, ResponseSC.CommonSC.FILE_TOO_LARGE.getCode());
+		return getModelAndView(response,resultMap);
+	}
+	
+}

+ 622 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/UserController.java

@@ -0,0 +1,622 @@
+package com.loygra.mooring.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.User;
+import com.loygra.mooring.bean.UserApplyUnit;
+import com.loygra.mooring.bo.AgentSubUserParam;
+import com.loygra.mooring.bo.AgentUserParam;
+import com.loygra.mooring.bo.ManageUserInfoParam;
+import com.loygra.mooring.cache.UserCache;
+import com.loygra.mooring.common.Constants;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.UserService;
+import com.loygra.mooring.util.Arith;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class UserController extends BaseController {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 6199648937701374853L;
+	@Autowired
+	private UserService userService;
+
+	/**
+	 * 检查密码复杂度
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.CHECK_PASSWORD)
+	public ModelAndView getPasswordComplex(HttpServletRequest req, HttpServletResponse resp, @RequestBody User user) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			putData(resultMap, Arith.getComplexForString(user.getPassword()));
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 用户注册
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.USER_REGISTER)
+	public ModelAndView register(HttpServletRequest req, HttpServletResponse resp, @RequestBody User user) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			if (Arith.getComplexForString(user.getPassword()) < 2) {
+				putStatusCode(resultMap, ResponseSC.UserSC.PASSWORD_COMPLEX_CHECK_FAILURE.getCode());
+			} else {
+				resultMap = userService.register(user);
+			}
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	// /**
+	// * 增加船代公司联系人信息
+	// *
+	// * @param req
+	// * @param resp
+	// * @param agentInfo
+	// * @return
+	// */
+	// @RequestMapping(method = RequestMethod.POST, value =
+	// RequestURL.AGENT.AGENT_CONTACT_INFO)
+	// public ModelAndView addAgentContactInfo(HttpServletRequest req,
+	// HttpServletResponse resp,
+	// @RequestBody AgentConnectInfo agentInfo) {
+	//
+	// Map<String, Object> resultMap = getResultMap();
+	// try {
+	// userService.addAgentContactInfo(agentInfo);
+	// } catch (Exception e) {
+	// putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+	// LogUtil.errorLog(e.getMessage());
+	// }
+	// return getModelAndView(resp, resultMap);
+	// }
+
+	/**
+	 * 增加船代公司信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param userApplyUnit
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.AGENT.AGENT_USER_INFO)
+	public ModelAndView addAgentUserInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestBody UserApplyUnit userApplyUnit) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			userService.addAgentInfo(userApplyUnit);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 更新船代公司信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param userApplyUnit
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.AGENT.AGENT_USER_INFO)
+	public ModelAndView updateAgentUserInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestBody UserApplyUnit userApplyUnit) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			userService.updateAgentInfo(userApplyUnit);
+			User obj = (User) req.getSession().getAttribute("UserInfo");
+			if (obj != null && obj.getRelate_type() == 1) {
+				// 此接口为管理单位和申报单位公用,只有当申报单位的时候才更新status
+				obj.setStatus(4);
+				req.getSession().setAttribute("UserInfo", obj);
+			}
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	// /**
+	// * 更新船代公司联系人信息
+	// *
+	// * @param req
+	// * @param resp
+	// * @param agentInfo
+	// * @return
+	// */
+	// @RequestMapping(method = RequestMethod.PUT, value =
+	// RequestURL.AGENT.AGENT_CONTACT_INFO)
+	// public ModelAndView updateAgentContactInfo(HttpServletRequest req,
+	// HttpServletResponse resp,
+	// @RequestBody AgentConnectInfo agentInfo) {
+	// Map<String, Object> resultMap = getResultMap();
+	// try {
+	// userService.updateAgentContactInfo(agentInfo);
+	// } catch (Exception e) {
+	// putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+	// LogUtil.errorLog(e.getMessage());
+	// }
+	// return getModelAndView(resp, resultMap);
+	// }
+
+	/**
+	 * 船代公司信息列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.AGENT.APPLY_UNIT_INFO_LIST)
+	public ModelAndView getAuditAgentUserList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestParam(value = "paged", required = false) Integer paged, @RequestBody AgentUserParam aup) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				param.put("user_id", UserCache.getUserIdByKey(user_key));
+				if (aup != null) {
+					param.put("name", aup.getName());
+					param.put("agent_company_name", aup.getAgent_company_name());
+					param.put("status", aup.getStatus());
+					param.put("legal_person_name", aup.getLegal_person_name());
+					param.put("licence_id", aup.getLicence_id());
+					param.put("occ_id", aup.getOcc_id());
+				}
+				resultMap = userService.getAllAuditList(param, getPageBean(paged));
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 获取船代公司信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param userApplyUnit
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.AGENT.AGENT_USER_INFO)
+	public ModelAndView getAgentUserInfo(HttpServletRequest req, HttpServletResponse resp, @RequestParam Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = userService.getApplyUnitInfo(id);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 船代公司联系人信息
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param agentInfo
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.AGENT.AGENT_CONTACT_INFO)
+	public ModelAndView getAgentContactInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestParam Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = userService.getContactInfo(id);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 接受页面发送找回密码的请求
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.MAIL.USER_SEND_EMAIL_RESETPASSWORD)
+	public ModelAndView resetPassword(HttpServletRequest req, HttpServletResponse resp, @RequestBody User user) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = userService.sendResetPasswordEmail(user);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 用户登录
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.USER_LOGIN)
+	public ModelAndView login(HttpServletRequest req, HttpServletResponse resp, @RequestBody User user) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = userService.login(user);
+			if (resultMap.containsKey("harbour_code")) {
+				req.getSession().setAttribute("harbour_code", resultMap.get("harbour_code"));
+			}
+			if (resultMap.containsKey("user")) {
+				req.getSession().setAttribute("UserInfo", resultMap.get("user"));
+				req.getSession().setAttribute("agent_user_sub_flag", resultMap.get("agent_user_sub_flag"));
+				putData(resultMap, resultMap.get("user"));
+				resultMap.remove("user");
+			}
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 退出登陆
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.USER.USER_LOGOUT)
+	public String logOut(HttpServletRequest req, HttpServletResponse resp) {
+		req.getSession().removeAttribute("UserInfo");
+		return "web/login";
+	}
+
+	/**
+	 * 港口管理单位审核更新船代公司的用户状态
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.AGENT.UPDATE_APPLY_UNIT)
+	public ModelAndView updateAgentInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody AgentUserParam aup) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				Map<String, Object> param = new HashMap<String, Object>();
+				if (aup != null) {
+					param.put("id", aup.getId());
+					param.put("status", aup.getStatus());
+					resultMap = userService.updateStatus(param);
+				} else {
+					putStatusCode(resultMap, ResponseSC.CommonSC.NO_DATA.getCode());
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 更改船代用户的状态,传入id 和 status
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param id
+	 * @param status
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.UPDATE_USER_STATUS)
+	public ModelAndView updateUserState(HttpServletRequest req, HttpServletResponse resp, @RequestBody User user) {
+		Map<String, Object> mapData = new HashMap<>();
+		mapData.put("id", user.getId());
+		mapData.put("status", user.getStatus());
+		mapData.put("remark", user.getRemark());
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			resultMap = userService.updateStatus(mapData);
+			// 更新session中用户的缓存,用户重新提交信息了,缓存中用户状态也发生了变化
+			User obj = (User) req.getSession().getAttribute("UserInfo");
+			if (obj != null && obj.getRelate_type() == 1) {
+				// 此接口为管理单位和申报单位公用,只有当申报单位的时候才更新status
+				obj.setStatus(user.getStatus());
+				req.getSession().setAttribute("UserInfo", obj);
+			}
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 重置用戶密碼
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.USER_RESET_PASSWORD)
+	public ModelAndView resetPasswordAction(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(required = true, value = KEY.ACTIVE_CODE_KEY) String active_code, @RequestBody User user) {
+		Map<String, Object> resultMap = getResultMap();
+		String forwordPage = "web/message";
+		try {
+			user.setActive_code(active_code);
+			userService.updateUserPassword(user);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		// 根据邮件中激活码的验证情况,进行页面的跳转
+		return getModelAndView(resp, resultMap, forwordPage, "Info");
+	}
+
+	/**
+	 * 处理邮件中链接总入口
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.MAIL.MAIL_REQUEST_PROCESS)
+	public ModelAndView processActiveCodeMailLink(HttpServletRequest req, HttpServletResponse resp,
+			@PathVariable Integer type, @PathVariable String active_code) {
+		Map<String, Object> resultMap = getResultMap();
+		req.setAttribute("pageType", type);
+		// TODO 这里需要写个默认页面
+		String forwordPage = null;
+		try {
+			switch (type) {
+			// 用户注册链接处理
+			case Constants.MailType.MAIL_REGISTER:
+				resultMap = userService.processUserRegisterEmailLink(active_code);
+				forwordPage = "web/message";
+				break;
+			// 忘记密码链接处理
+			case Constants.MailType.MAIL_RESET_PASSWORD:
+				resultMap = userService.processForgetPasswordEmailLink(active_code);
+				req.setAttribute("active_code", active_code);
+				forwordPage = "web/message";
+				break;
+			default:
+				break;
+			}
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(e.getMessage());
+		}
+		// 根据邮件中激活码的验证情况,进行页面的跳转
+		return getModelAndView(resp, resultMap, forwordPage, "Info");
+	}
+
+	/**
+	 * 省厅用户添加港口管理账户
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.USER_HARBOUR)
+	public ModelAndView addManageUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody ManageUserInfoParam mui) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = userService.addHarbourManageInfo(mui);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 船代公司添加子账户
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.USER_AGENT)
+	public ModelAndView addAgentSubUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody AgentSubUserParam asup) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = userService.insertAgentSubUser(asup);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 船代公司检索子账户列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.USER.USER_AGENT)
+	public ModelAndView getAgentSubUserInfos(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				AgentSubUserParam asup = new AgentSubUserParam();
+				asup.setAgent_user_id(UserCache.getUserIdByKey(user_key));
+				resultMap = userService.getAgentSubUserInfos(asup);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 船代公司删除子账户
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.DELETE, value = RequestURL.USER.USER_AGENT_ID)
+	public ModelAndView deleteAgentSubUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer id) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				AgentSubUserParam asup = new AgentSubUserParam();
+				asup.setId(id);
+				resultMap = userService.deleteAgentSubUser(asup);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 省厅用户检索港口管理用户列表
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.USER.HARBOUR_USERS)
+	public ModelAndView selectHarbourManageUserList(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key,
+			@RequestBody ManageUserInfoParam mui) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = userService.selectHarbourManageUserList(mui);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 省厅用户检索港口管理用户详情
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = RequestURL.USER.USER_HARBOUR_USERID)
+	public ModelAndView selectHarbourManageUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer user_id) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = userService.getHarbourManageUser(user_id);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 省厅用户删除港口管理用户
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.DELETE, value = RequestURL.USER.USER_HARBOUR_USERID)
+	public ModelAndView deleteHarbourManageUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer user_id) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				resultMap = userService.deleteManageUser(user_id);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+	/**
+	 * 省厅用户修改港口管理用户
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param user
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.PUT, value = RequestURL.USER.USER_HARBOUR_USERID)
+	public ModelAndView updateHarbourManageUser(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @PathVariable Integer user_id,
+			@RequestBody ManageUserInfoParam mui) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				if (mui != null) {
+					mui.setId(user_id);
+					resultMap = userService.updateManageUser(mui);
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+}

+ 56 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/controller/WeatherInfoController.java

@@ -0,0 +1,56 @@
+package com.loygra.mooring.controller;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.loygra.mooring.bean.WeatherInfo;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.WeatherInfoService;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class WeatherInfoController extends BaseController {
+	
+	private static final long serialVersionUID = -8788387746461915837L;
+
+	@Autowired
+	WeatherInfoService weatherService ;
+	
+	/**
+	 * 港口获取天气
+	 * 
+	 * @param req
+	 * @param resp
+	 * @param obj
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.WEATHER.HARBOUR_WEATHER)
+	public ModelAndView harbourWeatherInfo(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key ,
+			@PathVariable Integer harbour_id) {
+		Map<String, Object> resultMap = getResultMap();
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				WeatherInfo obj = new WeatherInfo();
+				obj.setHarbour_code(harbour_id);
+				resultMap = weatherService.getWeatherInfo(obj);
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+}

+ 44 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AisDao.java

@@ -0,0 +1,44 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+
+import com.loygra.mooring.bo.AISData;
+import com.loygra.mooring.bo.LonLatDistrict;
+
+/**
+ * 
+ * AIS实时数据接口
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface AisDao {
+
+	/**
+	 * 添加AIS数据
+	 * 
+	 * @param obj
+	 */
+	public int insert(AISData obj);
+
+	/**
+	 * 查询单个AIS数据
+	 */
+	public AISData selectOne(Integer mmsi);
+
+	/**
+	 * 更新AIS数据
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public int update(AISData obj);
+	
+	/**
+	 * 
+	 * 
+	 * @param lld
+	 * @return
+	 */
+	public List<AISData> selectByLBRTDistrict(LonLatDistrict lld);
+}

+ 47 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AlarmInfoDao.java

@@ -0,0 +1,47 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.AlarmInfo;
+import com.loygra.mooring.bo.AlarmInfoBO;
+import com.loygra.mooring.bo.AlarmStatisticInfo;
+import com.loygra.mooring.util.PageBean;
+
+/**
+ * 
+ * AIS实时数据接口
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface AlarmInfoDao {
+
+	/**
+	 * 添加报警
+	 * 
+	 * @param obj
+	 */
+	public int insert(AlarmInfo obj);
+
+	/**
+	 * 检索报警
+	 */
+	public List<AlarmInfoBO> select(PageBean pageBean, Map<String, Object> obj);
+
+	public Integer selectCount(Map<String, Object> obj);
+
+	/**
+	 * 统计报警数量
+	 * 
+	 * @return
+	 */
+	public Map<String, AlarmStatisticInfo> statisticByCategory(Map<String, Object> obj);
+	
+	/**
+	 * 更新报警
+	 * 
+	 * @param obj
+	 */
+	public int update(Map<String, Object> obj);
+}

+ 143 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AnchorDao.java

@@ -0,0 +1,143 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.AnchorPointInfo;
+import com.loygra.mooring.bean.AnchorPositionInfo;
+import com.loygra.mooring.bean.AnchorageInfo;
+import com.loygra.mooring.bo.AnchorPositionInfoBO;
+import com.loygra.mooring.bo.AnchorageInfoBO;
+import com.loygra.mooring.bo.HarbourInfoBO;
+import com.loygra.mooring.util.PageBean;
+
+public interface AnchorDao {
+	/**
+	 * 根据用户Id检索所属港口的锚地列表
+	 * 
+	 * @param user_id
+	 * @return
+	 */
+	public List<AnchorageInfoBO> selectAnchorageInfosByUserId(PageBean pageBean, Map<String, Object> param);
+
+	public Integer selectAnchorageInfosByUserIdCount(Map<String, Object> param);
+
+	/**
+	 * 根据参数检索锚位列表
+	 * 
+	 * @param user_id
+	 * @return
+	 */
+	public List<AnchorPositionInfoBO> selectAnchorPositionInfos(Map<String, Object> param, PageBean pageBean);
+
+	public Integer selectAnchorPositionInfosCount(Map<String, Object> param);
+
+	/**
+	 * 根据参数检索港口级联信息列表
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public List<HarbourInfoBO> selectHarbourCascadeInfoById(Map<String, Object> param);
+
+	/**
+	 * 根据ID检索锚地的基本信息
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public AnchorageInfoBO selectAnchorageBasicInfoById(Map<String, Object> param);
+
+	/**
+	 * 根据ID检索锚位的基本信息
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public AnchorPositionInfoBO selectAnchorPositionBasicInfoById(Map<String, Object> param);
+
+	/**
+	 * 根据港口ID返回该港口下自控锚位是否被占用,港口ID=null的场合,返回所有港口的省控锚位是否被被占用
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public Integer getAnchorageAvailableCount(Map<String, Object> param);
+
+	/**
+	 * 添加锚地
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public Integer addAnchorageInfo(AnchorageInfo obj);
+
+	/**
+	 * 添加锚地界标
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public Integer addAnchoragePointInfo(AnchorPointInfo obj);
+
+	/**
+	 * 添加锚位
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public Integer addAnchorPositionInfo(AnchorPositionInfo obj);
+
+	/**
+	 * 修改锚地
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public void updateAnchorageInfo(AnchorageInfo obj);
+
+	/**
+	 * 修改锚地界标
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public void updateAnchoragePointInfo(AnchorPointInfo obj);
+
+	/**
+	 * 删除某锚地所有的界标
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public void deleteAnchoragePointInfos(AnchorPointInfo obj);
+
+	/**
+	 * 修改锚位
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public void updateAnchorPositionInfo(AnchorPositionInfo obj);
+
+	/**
+	 * 修改锚位
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public AnchorageInfoBO selectAnchorageInfo(Map<String, Object> map);
+
+	/**
+	 * 根据锚位Id检索锚位信息
+	 * 
+	 */
+	public AnchorPositionInfoBO selectAnchorPositionInfoById(AnchorPositionInfo obj);
+
+	/**
+	 * 检索锚地界标
+	 * 
+	 * @return
+	 */
+	public List<AnchorPointInfo> selectAnchorPoints();
+}

+ 294 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/AnchorageApplyDao.java

@@ -0,0 +1,294 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.AnchorPositionApplyInfo;
+import com.loygra.mooring.bean.ApplyAdjustInfo;
+import com.loygra.mooring.bean.ApplyReleaseInfo;
+import com.loygra.mooring.bean.AuditDepInfo;
+import com.loygra.mooring.bean.HarbourInfo;
+import com.loygra.mooring.bo.AdjustAnchorPositionStatistic;
+import com.loygra.mooring.bo.AnchorPositionApplyAuditParam;
+import com.loygra.mooring.bo.AnchorPositionApplyInfoBO;
+import com.loygra.mooring.bo.ApplyShipRealTime;
+import com.loygra.mooring.bo.HarbourALLInfo;
+import com.loygra.mooring.util.PageBean;
+
+public interface AnchorageApplyDao {
+
+	/**
+	 * 获取所有港口信息
+	 */
+	public List<HarbourInfo> selectAllHarbourInfo();
+
+	/**
+	 * 获取所有港口下锚位数量
+	 */
+	public List<HarbourALLInfo> selectAllAnchorPostion();
+
+	/**
+	 * 获取所有港口下的锚地数量
+	 */
+	public List<HarbourALLInfo> selectAllAnchorage();
+
+	/**
+	 * 获取所有港口下可用的锚位
+	 */
+	public List<HarbourALLInfo> selectAllEnableAnchorPostion();
+
+	/**
+	 * 获取港口下的锚地和锚位的详细信息
+	 */
+	public List<HarbourALLInfo> selectHarbourDetailInfo();
+
+	/**
+	 * 插入锚位申请计划信息
+	 */
+	public void insertAnchorPositionApplyInfo(AnchorPositionApplyInfo obj);
+
+	/**
+	 * 检索某港口排队申请的列表
+	 */
+	public List<AnchorPositionApplyInfo> selectPendingAnchorPositionApplyListByHarbourCode(PageBean pageBean,
+			Map<String, Object> obj);
+
+	public Integer selectPendingAnchorPositionApplyListByHarbourCodeCount(Map<String, Object> obj);
+
+	/**
+	 * 根据用户查询申请计划信息
+	 */
+	public List<AnchorPositionApplyInfoBO> selectAnchorPositionApplyList(PageBean pageBean, Map<String, Object> param);
+
+	public Integer selectAnchorPositionApplyListCount(Map<String, Object> param);
+
+	/**
+	 * 根据港口管理员用户ID查询待审核的计划信息
+	 */
+	public List<AnchorPositionApplyInfoBO> selectUnAuditAnchorPositionApplyList(Map<String, Object> param,
+			PageBean pageBean);
+
+	/**
+	 * 根据港口管理员用户ID查询待审核的计划信息Count
+	 */
+	public Integer selectUnAuditAnchorPositionApplyListCount(Map<String, Object> param);
+
+	/**
+	 * 根据港口管理员用户ID查询可管理的计划信息
+	 */
+	public List<AnchorPositionApplyInfoBO> selectManageAnchorPositionApplyList(Map<String, Object> param,
+			PageBean pageBean);
+
+	public Integer selectManageAnchorPositionApplyListCount(Map<String, Object> param);
+
+	/**
+	 * 港口用户检索的锚泊记录列表
+	 */
+	public List<AnchorPositionApplyInfoBO> selectMooringList4Harbour(Map<String, Object> param, PageBean pageBean);
+
+	public Integer selectMooringList4HarbourCount(Map<String, Object> param);
+
+	/**
+	 * 根据申请计划ID检索详情
+	 */
+	public AnchorPositionApplyInfoBO selectAnchorPositionApplyInfo(Integer id);
+
+	/**
+	 * 根据主键更新计划的审核状态
+	 */
+	public void updateAnchorPositionApplyInfoAuditStatus(AnchorPositionApplyAuditParam obj);
+
+	/**
+	 * cron用:检索出已经通过审核status==2,并且plan_leave_time大于等于sysdate的申请
+	 */
+	public List<AnchorPositionApplyInfo> cronLeaveAnchorPositionApplyList(Map<String, Object> param);
+
+	/**
+	 * 撤回计划
+	 */
+	public void revokeAnchorPositionApply(Map<String, Object> param);
+
+	/**
+	 * 更改申请计划的计划锚泊时间,计划离泊时间
+	 * 
+	 * @param param
+	 */
+	public void updateTimeInfo4AuditApply(Map<String, Object> param);
+
+	/**
+	 * 港口管理单位确定船舶离泊:更新实际锚泊时刻,离泊时刻,诚信项目
+	 * 
+	 * @param param
+	 */
+	public void updateApplyInfo4Leave(Map<String, Object> param);
+
+	/**
+	 * 为省厅冗余审核记录
+	 * 
+	 * @param param
+	 */
+	public void insertAuditDepApplyInfo(AuditDepInfo auditDepInfo);
+
+	/**
+	 * 省厅将港口管理单位转过来的请求重新分发给其他港口
+	 * 
+	 * @param param
+	 */
+	public void depUserDispatcherApply(AnchorPositionApplyAuditParam anchorPositionApplyAuditParam);
+
+	/**
+	 * 检索省厅的待审核申请列表
+	 * 
+	 * @param param
+	 */
+	public List<AnchorPositionApplyInfoBO> selectUnAuditAnchorPositionApplyList4DepUser(PageBean pageBean,
+			Map<String, Object> param);
+
+	public Integer selectUnAuditAnchorPositionApplyList4DepUserCount(Map<String, Object> param);
+
+	/**
+	 * 检索省厅锚泊管理列表/锚泊记录列表
+	 * 
+	 * @param param
+	 */
+	public List<AnchorPositionApplyInfoBO> getDepAuditApplyInfos(PageBean pageBean, Map<String, Object> param);
+
+	public Integer getDepAuditApplyInfosCount(Map<String, Object> param);
+
+	/**
+	 * 删除未审核的锚地使用计划
+	 * 
+	 * @param param
+	 */
+	public void deleteUnauditApply(Map<String, Object> param);
+
+	/**
+	 * 更新锚地使用计划
+	 * 
+	 * @param param
+	 */
+	public void updateApplyInfo(Map<String, Object> param);
+
+	/**
+	 * 
+	 * <!-- 根据MMSI检索该船所在的最新的计划 -->
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public AnchorPositionApplyInfo selectApplyInfoByMMSI(Map<String, Object> param);
+
+	/**
+	 * 
+	 * 为定时器检索未完成的计划
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public List<AnchorPositionApplyInfoBO> selectUnCompleteApplyInfos4Cron(Map<String, Object> param);
+
+	/**
+	 * 
+	 * 检索是否有截止到今天12:00前的省厅待核准的数据
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public Integer countApplyNum4Dep(Map<String, Object> param);
+
+	/**
+	 * 
+	 * 检索是否有截止到今天12:00前的省厅待发布的数据
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public List<AnchorPositionApplyInfoBO> selectUnPublishApplyInfos4Dep(Map<String, Object> param);
+
+	/**
+	 * 获取最大的核准号
+	 * 
+	 * @return
+	 */
+	public Long selectLatestAuditNO();
+
+	/**
+	 * 插入发布记录
+	 * 
+	 * @return
+	 */
+	public void insertApplyReleaseInfo(ApplyReleaseInfo applyReleaseInfo);
+
+	/**
+	 * 检索最大的发布记录
+	 * 
+	 * @return
+	 */
+	public ApplyReleaseInfo selectMaxApplyReleaseInfo();
+
+	/**
+	 * 插入调剂记录
+	 * 
+	 * @param param
+	 */
+	public void insertApplyAdjustInfo(ApplyAdjustInfo param);
+
+	/**
+	 * 更新调剂记录
+	 * 
+	 * @param param
+	 */
+	public void updateApplyAdjustInfo(ApplyAdjustInfo param);
+
+	/**
+	 * 更新调剂记录
+	 * 
+	 * @param param
+	 */
+	public List<ApplyAdjustInfo> getAdjustInfos(ApplyAdjustInfo param);
+
+	/**
+	 * 调剂中可用锚位统计
+	 * 
+	 * @param param
+	 */
+	public List<AdjustAnchorPositionStatistic> selectApplyAdjustPositionCount(ApplyAdjustInfo param);
+
+	/**
+	 * 调剂中吨位
+	 * 
+	 * @param param
+	 */
+	public List<AdjustAnchorPositionStatistic> selectApplyAdjustTonsCount(ApplyAdjustInfo param);
+
+	/**
+	 * 调剂中货物统计
+	 * 
+	 * @param param
+	 */
+	public List<AdjustAnchorPositionStatistic> selectApplyAdjustGoodsCount(ApplyAdjustInfo param);
+
+	/**
+	 * 检索未完成的计划
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public List<AnchorPositionApplyInfoBO> selectUnCompleteApplyInfos4CronAndPlanTime(Map<String, Object> param);
+
+	/**
+	 * 根据某锚位下面挂靠的计划
+	 * 
+	 * @param aai
+	 * @return
+	 */
+	public AnchorPositionApplyInfoBO getApplyInfoByAuditPosition(Map<String, Object> param);
+
+	/**
+	 * 
+	 * 检索计划所在船舶的实时状态
+	 * @param harbour_code
+	 * @return
+	 */
+	public List<ApplyShipRealTime> selectApplyShipRealTime(Map<String, Object> param);
+}

+ 29 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ChargeConfigInfoDao.java

@@ -0,0 +1,29 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.ChargeConfigInfo;
+
+/**
+ * 
+ * 收费信息数据访问接口
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface ChargeConfigInfoDao {
+
+	/**
+	 * 根据港口号检索收费信息
+	 * 
+	 * @param param
+	 */
+	public List<ChargeConfigInfo> selectByHarbourCode(Map<String, Object> param);
+	/**
+	 * 根据港口号更新收费信息
+	 * 
+	 * @param param
+	 */
+	public void updateByHarbourCode(Map<String, Object> param);
+}

+ 28 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ConfigDao.java

@@ -0,0 +1,28 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.ConfigInfo;
+
+/**
+ * 
+ * 检索所有配置信息
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface ConfigDao {
+
+	/**
+	 * 检索所有配置信息
+	 * 
+	 */
+	public List<ConfigInfo> selectAllConfigs();
+
+	/**
+	 * 根据category查找数据字典
+	 * 
+	 */
+	public List<ConfigInfo> getConfigsByCategory(Map<String, Object> param);
+}

+ 21 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/FileDao.java

@@ -0,0 +1,21 @@
+package com.loygra.mooring.dao;
+
+import com.loygra.mooring.bean.FileInfo;
+import com.loygra.mooring.bo.FileInfoBO;
+
+public interface FileDao {
+
+	/**
+	 * 添加文件信息
+	 * 
+	 * @param obj
+	 */
+	public void insert(FileInfo obj);
+
+	/**
+	 * 检索文件信息
+	 * 
+	 * @param obj
+	 */
+	public FileInfoBO selectOne(FileInfo obj);
+}

+ 57 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/IntegrityDao.java

@@ -0,0 +1,57 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+
+/**
+ * 
+ * 诚信管理
+ */
+import com.loygra.mooring.bo.IntegrityBO;
+import com.loygra.mooring.util.PageBean;
+
+public interface IntegrityDao {
+	/**
+	 * 为申报单位检索诚信列表
+	 * 
+	 * @param integrityBO
+	 * @return
+	 */
+	public List<IntegrityBO> getIntegrityInfos4AgentUser(IntegrityBO obj, PageBean pageBean);
+
+	public Integer getIntegrityInfos4AgentUserCount(IntegrityBO obj);
+
+	/**
+	 * 为港口管理单位检索诚信列表
+	 * 
+	 * @param integrityBO
+	 * @return
+	 */
+	public List<IntegrityBO> getIntegrityInfos4ManageUser(IntegrityBO obj, PageBean pageBean);
+
+	public Integer getIntegrityInfos4ManageUserCount(IntegrityBO obj);
+
+	/**
+	 * 更新诚信
+	 * 
+	 * @param integrityBO
+	 */
+	public void updateIntegrity(IntegrityBO integrityBO);
+	
+	/**
+	 * 检索诚信详情
+	 * 
+	 * @param id
+	 * @return
+	 */
+	public IntegrityBO selectOne(Integer id);
+	
+	/**
+	 * 为管理单位检索待处理的诚信列表
+	 * 
+	 * @param integrityBO
+	 * @return
+	 */
+	public List<IntegrityBO> getUnAuditIntegrityInfos4Manager(IntegrityBO obj, PageBean pageBean);
+	public Integer getUnAuditIntegrityInfos4ManagerCount(IntegrityBO obj);
+	
+}

+ 8 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ManageUserDao.java

@@ -0,0 +1,8 @@
+package com.loygra.mooring.dao;
+
+import com.loygra.mooring.bean.ManageUser;
+
+
+public interface ManageUserDao {
+	public void insertManageUser(ManageUser user);
+}

+ 57 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/NoticeDao.java

@@ -0,0 +1,57 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.NoticeInfo;
+import com.loygra.mooring.bo.NoticeInfoBO;
+import com.loygra.mooring.bo.NoticeInfoParam;
+import com.loygra.mooring.util.PageBean;
+
+/**
+ * 
+ * 公告信息
+ *
+ */
+public interface NoticeDao {
+
+	/**
+	 * 添加公告
+	 * 
+	 */
+	public void insertNotice(NoticeInfo obj);
+
+	/**
+	 * 检索待发布公告列表
+	 * 
+	 */
+	public List<NoticeInfoBO> getSuspendingNoticeInfos(PageBean pageBean,NoticeInfoParam obj);
+	/**
+	 * 检索待发布公告数量
+	 * 
+	 */
+	public Integer getSuspendingNoticeInfosCount(NoticeInfoParam obj);
+	
+	/**
+	 * 检索公告列表
+	 * 
+	 */
+	public List<NoticeInfoBO> getNoticeInfos(PageBean pageBean,NoticeInfoParam obj);
+	/**
+	 * 检索公告数量
+	 * 
+	 */
+	public Integer getNoticeInfosCount(NoticeInfoParam obj);
+
+	/**
+	 * 检索公告
+	 * 
+	 */
+	public NoticeInfoBO getNoticeInfo(Map<String, Object> param);
+
+	/**
+	 * 更新公告
+	 * 
+	 */
+	public void updateNoticeInfo(NoticeInfo obj);
+}

+ 80 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/ShipDao.java

@@ -0,0 +1,80 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.AgentShipInfo;
+import com.loygra.mooring.bean.PilotageInfo;
+import com.loygra.mooring.bean.ShipInfo;
+import com.loygra.mooring.util.PageBean;
+
+public interface ShipDao {
+
+	/**
+	 * 查询单个船
+	 */
+	public ShipInfo getShipInfo(ShipInfo obj);
+
+	/**
+	 * 查询匹配查询船舶
+	 */
+	public List<ShipInfo> getShipInfos(ShipInfo obj);
+
+	/**
+	 * 添加船代公司的船
+	 */
+	public void insertAgentShipInfo(AgentShipInfo obj);
+
+	/**
+	 * 编辑船代公司的船
+	 */
+	public void updateAgentShipInfo(AgentShipInfo obj);
+
+	/**
+	 * 根据ID查询船代公司的船
+	 */
+	public AgentShipInfo selectAgentShipById(AgentShipInfo obj);
+
+	/**
+	 * 逻辑删除船代公司的船
+	 */
+	public void deleteAgentShipInfo(AgentShipInfo obj);
+
+	/**
+	 * 根据条件返回船代公司的船只
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public List<AgentShipInfo> getAgentShipInfos(PageBean pageBean, AgentShipInfo obj);
+
+	public Integer getAgentShipInfosCount(AgentShipInfo obj);
+
+	/**
+	 * 添加引航记录
+	 */
+	public void insertPilotageInfo(PilotageInfo obj);
+
+	/**
+	 * 根据条件检索引航记录
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public List<PilotageInfo> selectPilotageInfos(PageBean pageBean, Map<String, Object> obj);
+
+	public Integer selectPilotageInfosCount(Map<String, Object> obj);
+
+	/**
+	 * 查询匹配查询船舶
+	 */
+	public List<ShipInfo> selectShipInfos(ShipInfo obj);
+
+	/**
+	 * 检索本地库中的船舶
+	 * 
+	 * @param shipInfo
+	 * @return
+	 */
+	public List<ShipInfo> selectShipInfosInLocalLib(ShipInfo shipInfo);
+}

+ 27 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/TestDao.java

@@ -0,0 +1,27 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+
+import com.loygra.mooring.bo.AISData;
+import com.loygra.mooring.bo.AISData4SingleShip;
+import com.loygra.mooring.bo.LonLatDistrict;
+
+/**
+ * 
+ * 测试访问接口
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface TestDao {
+
+	/**
+	 * 查询单个AIS数据
+	 */
+	public AISData4SingleShip selectOne(AISData4SingleShip param);
+	
+	/**
+	 * 查询区域AIS数据
+	 */
+	public List<AISData> select(LonLatDistrict param);
+}

+ 185 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/UserDao.java

@@ -0,0 +1,185 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.loygra.mooring.bean.AgentConnectInfo;
+import com.loygra.mooring.bean.AgentSubUser;
+import com.loygra.mooring.bean.User;
+import com.loygra.mooring.bean.UserApplyUnit;
+import com.loygra.mooring.bo.AgentSubUserParam;
+import com.loygra.mooring.bo.ApplyUnitAuditList;
+import com.loygra.mooring.bo.HarbourInfoBO;
+import com.loygra.mooring.bo.ManageUserInfoBO;
+import com.loygra.mooring.bo.ManageUserInfoParam;
+import com.loygra.mooring.util.PageBean;
+
+public interface UserDao {
+
+	/**
+	 * 添加普通用户
+	 * 
+	 * @param obj
+	 */
+	public User insertUser(User obj);
+
+	/**
+	 * 检查用户注册信息的唯一性
+	 */
+	public Integer getUserExistsFlag(User obj);
+
+	/**
+	 * 添加普通用户
+	 * 
+	 * @param obj
+	 */
+	public void insertAgentSubUser(AgentSubUser obj);
+
+	/**
+	 * 检索某船代主账户下的子账户列表
+	 * 
+	 * @param obj
+	 */
+	public List<AgentSubUserParam> getAgentSubUserInfos(AgentSubUserParam obj);
+
+	/**
+	 * 删除船代主账户下的某子账户
+	 * 
+	 * @param obj
+	 */
+	public void deleteAgentSubUser(AgentSubUserParam obj);
+
+	/**
+	 * 查询当个用户
+	 */
+	public User getUser(User obj);
+
+	/**
+	 * 根据船代子账户查询父账户
+	 */
+	public User getAgentUserByChild(User obj);
+
+	/**
+	 * 获取所有用户
+	 */
+	public List<User> getAllUsers();
+
+	/**
+	 * 插入联系人信息
+	 * 
+	 * @param obj
+	 */
+	public void insertContactInfo(AgentConnectInfo obj);
+
+	/**
+	 * 插入船代公司信息
+	 */
+	public void insertAgentUserInfo(UserApplyUnit obj);
+
+	/**
+	 * 插入港口管理公司信息
+	 */
+	public void insertManageUserInfo(ManageUserInfoParam obj);
+
+	/**
+	 * 更新船代公司信息
+	 */
+	public void updateAgentUserInfo(UserApplyUnit obj);
+
+	/**
+	 * 更新船代公司联系人信息
+	 */
+	public void updateAgentContactInfo(AgentConnectInfo obj);
+
+	/**
+	 * 查找港口管理公司信息
+	 */
+	public List<ManageUserInfoBO> getHarbourManageUsers(ManageUserInfoParam obj);
+
+	/**
+	 * 查找某港口管理公司信息
+	 */
+	public ManageUserInfoBO getHarbourManageUser(Integer id);
+
+	/**
+	 * 查找某港口管理用户
+	 */
+	public void deleteManageUser(Integer id);
+
+	/**
+	 * 更新某港口管理用户的core信息
+	 */
+	public void updateCoreUser4Manage(ManageUserInfoParam mui);
+
+	/**
+	 * 更新某港口管理用户
+	 */
+	public void updateManageUser(ManageUserInfoParam mui);
+
+	/**
+	 * 获取审核信息列表
+	 */
+	public List<ApplyUnitAuditList> selectApplyUnitInfo(Map<String, Object> param, PageBean pageBean);
+
+	public Integer selectApplyUnitInfoCount(Map<String, Object> param);
+
+	/**
+	 * 获取船代公司信息
+	 */
+	public UserApplyUnit selectUserApplyUnit(Integer id);
+
+	/**
+	 * 获取联系人信息
+	 */
+	public AgentConnectInfo selectAgentContactInfo(Integer id);
+
+	/**
+	 * 判断用户名和密码是否正确,并获取用户
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public User JudgeGetUser(User obj);
+
+	/**
+	 * 船代公司审核状态结果
+	 */
+	public void updateAgentAuit(Map<String, Object> obj);
+
+	/**
+	 * 更改用户的状态
+	 */
+	public void updateUserStatus(User obj);
+
+	/**
+	 * 更改用户密码
+	 */
+	public void updateUserPassword(User obj);
+
+	/**
+	 * 更改用户基本信息
+	 */
+	public void updateUserInfo(User obj);
+
+	/**
+	 * 检索某用户所在的港口
+	 */
+
+	public HarbourInfoBO selectHarbourInfoByManageUserId(Integer userId);
+
+	/**
+	 * 更改用户激活码和有效期
+	 */
+	public void updateUserActiveCode(User obj);
+
+	/**
+	 * 检索某用户所在的港口
+	 */
+
+	public String selectHarbourByManageUserId(Integer userId);
+
+	/**
+	 * 诚信行为清零
+	 */
+	public void clearAgentUserIntegrity();
+}

+ 36 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/WeatherInfoDao.java

@@ -0,0 +1,36 @@
+package com.loygra.mooring.dao;
+
+import java.util.List;
+
+import com.loygra.mooring.bean.WeatherInfo;
+
+/**
+ * 
+ * 天气数据接口
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface WeatherInfoDao {
+	
+	/**
+	 * 检索天气
+	 * 
+	 * @return
+	 */
+	public List<WeatherInfo> select(WeatherInfo obj);
+
+	/**
+	 * 检索天气
+	 * 
+	 * @return
+	 */
+	public WeatherInfo selectOne(WeatherInfo obj);
+
+	/**
+	 * 更新天气
+	 * 
+	 * @param obj
+	 */
+	public int update(WeatherInfo obj);
+}

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott