Selaa lähdekoodia

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

xt_mayh 9 vuotta sitten
vanhempi
commit
32e2e30136

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

@@ -0,0 +1,27 @@
+package com.loygra.mooring.bo;
+
+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 MooringShipStatistic {
+	// 港口code
+	private Integer harbour_code;
+	// 港口名称
+	private String harbour_name;
+	// 锚地数量
+	private Integer anchorage_num;
+	// 锚位数量
+	private Integer anchorposition_num;
+	// 港口统计总计
+	private Integer park_total_num;
+	// 港口统计明细
+	private Map<String, String> ship_num_detail = new HashMap<String, String>();
+}

+ 24 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/MooringStatistic.java

@@ -0,0 +1,24 @@
+package com.loygra.mooring.bo;
+
+import java.util.List;
+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 MooringStatistic {
+	// 锚泊次数表格统计
+	private List<MooringShipStatistic> ship_count = null;
+	// 船舶类型统计
+	private Map<String, String> ship_goods = null;
+	// 船舶等级统计
+	private Map<String, String> ship_tons = null;
+	// 日统计
+	private List<MooringTypeStatistic> ship_days = null;
+
+}

+ 20 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/MooringTypeStatistic.java

@@ -0,0 +1,20 @@
+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 MooringTypeStatistic {
+	// 港口code
+	private Integer harbour_code;
+	// 类型
+	private Integer type;
+	//数量
+	private Integer num;
+	// 日期
+	private String day;
+}

+ 20 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/bo/StatisticParam.java

@@ -0,0 +1,20 @@
+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 StatisticParam {
+	//时间类型,今天1本周2本月3
+	private Integer time_type;
+	//开始时间
+	private Date begin_time;
+	//结束时间
+	private Date end_time;
+}

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

@@ -0,0 +1,74 @@
+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.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.bo.StatisticParam;
+import com.loygra.mooring.common.KEY;
+import com.loygra.mooring.common.RequestURL;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.service.StatisticService;
+import com.loygra.mooring.util.DateUtils;
+import com.loygra.mooring.util.LogUtil;
+
+@Controller
+public class StatisticController extends BaseController {
+
+	private static final long serialVersionUID = 9056631235927850547L;
+	@Autowired
+	private StatisticService statisticService;
+
+	/**
+	 * 
+	 * 检索锚泊船舶统计
+	 * 
+	 * @param req
+	 * @param resp
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = RequestURL.STATISTIC.MOORING_SHIP)
+	public ModelAndView selectAlarms(HttpServletRequest req, HttpServletResponse resp,
+			@RequestHeader(value = KEY.USER_KEY, required = true) String user_key, @RequestBody StatisticParam param) {
+		Map<String, Object> resultMap = getResultMap();
+		// 验证权限
+		if (super.checkHttpHeaderUserKey(user_key, resultMap)) {
+			try {
+				// 时间类型,今天1本周2本月3
+				Integer time_type = param.getTime_type();
+				if (time_type != null) {
+					if (time_type == 1) {
+						param.setBegin_time(DateUtils.getDate(5));
+						param.setEnd_time(DateUtils.getDate(6));
+					} else if (time_type == 2) {
+						param.setBegin_time(DateUtils.getDate(8));
+						param.setEnd_time(DateUtils.getDate(9));
+					} else if (time_type == 3) {
+						param.setBegin_time(DateUtils.getDate(11));
+						param.setEnd_time(DateUtils.getDate(12));
+					}
+				}
+				if (param.getBegin_time() != null && param.getEnd_time() != null
+						&& param.getBegin_time().after(param.getEnd_time())) {
+					putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				} else {
+					resultMap = statisticService.getMooringShipStatistic(param);
+				}
+			} catch (Exception e) {
+				putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+				LogUtil.errorLog(e.getMessage());
+			}
+		}
+		return getModelAndView(resp, resultMap);
+	}
+
+}

+ 12 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/dao/StatisticInfoDao.java

@@ -0,0 +1,12 @@
+package com.loygra.mooring.dao;
+
+/**
+ * 
+ * 统计信息Dao
+ * 
+ * @author Mayer.ng
+ *
+ */
+public interface StatisticInfoDao {
+
+}

+ 21 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/daoImpl/StatisticInfoDaoImpl.java

@@ -0,0 +1,21 @@
+package com.loygra.mooring.daoImpl;
+
+import org.springframework.stereotype.Component;
+
+import com.loygra.mooring.dao.StatisticInfoDao;
+
+/**
+ * 统计数据访问
+ * 
+ * @author Mayer.ng
+ *
+ */
+@Component
+public class StatisticInfoDaoImpl extends BaseDaoImpl implements StatisticInfoDao {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+}

+ 118 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/mapper/statistic_mapper.xml

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" ?>  
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="Statistic">
+
+	<!-- 检索锚泊船舶统计 -->
+	<select id="selectMooringShipStatistic" resultType="com.loygra.mooring.bo.MooringShipStatistic">
+		SELECT
+		har.code AS harbour_code,har.name AS harbour_name,anchorage_num,
+		anchorposition_num FROM m_harbour_info har
+		LEFT JOIN (SELECT
+		harbour_code, COUNT(1) as anchorage_num FROM
+		M_ANCHORAGE_INFO GROUP BY
+		harbour_code) anchorage
+		ON har.code = anchorage.harbour_code
+		LEFT JOIN
+		(SELECT harbour_code, COUNT(1) AS anchorposition_num FROM
+		M_ANCHOR_POSITION_INFO GROUP BY harbour_code) anchorposition
+		ON
+		har.code = anchorposition.harbour_code
+		ORDER BY harbour_code ASC
+	</select>
+	<!-- 检索锚泊船舶吨位统计 -->
+	<select id="selectMooringShipTonsTypeStatistic" parameterType="com.loygra.mooring.bo.StatisticParam"
+		resultType="com.loygra.mooring.bo.MooringTypeStatistic">
+		SELECT
+		harbour_code,tons_type type, COUNT(1) num FROM M_SHIP_PARK_INFO
+		WHERE 1=1
+		<if test="begin_time!=null">
+			<![CDATA[AND insert_time>=#{begin_time}]]>
+		</if>
+		<if test="end_time!=null">
+			<![CDATA[AND insert_time<=#{end_time}]]>
+		</if>
+		GROUP BY
+		harbour_code,tons_type
+		ORDER BY harbour_code ASC
+	</select>
+
+	<!-- 检索锚泊船舶总量统计 -->
+	<select id="selectMooringShipTotalStatistic" parameterType="com.loygra.mooring.bo.StatisticParam"
+		resultType="com.loygra.mooring.bo.MooringTypeStatistic">
+		SELECT
+		harbour_code, COUNT(1) num FROM M_SHIP_PARK_INFO
+		WHERE 1=1
+		<if test="begin_time!=null">
+			<![CDATA[AND insert_time>=#{begin_time}]]>
+		</if>
+		<if test="end_time!=null">
+			<![CDATA[AND insert_time<=#{end_time}]]>
+		</if>
+		GROUP
+		BY harbour_code
+		ORDER BY harbour_code ASC
+	</select>
+
+	<!-- 检索锚泊船舶货物类型统计 -->
+	<select id="selectMooringShipGoodsStatistic" parameterType="com.loygra.mooring.bo.StatisticParam"
+		resultType="com.loygra.mooring.bo.MooringTypeStatistic">
+		SELECT
+		harbour_code,goods_type type, COUNT(1) num FROM M_SHIP_PARK_INFO
+		WHERE 1=1
+		<if test="begin_time!=null">
+			<![CDATA[AND insert_time>=#{begin_time}]]>
+		</if>
+		<if test="end_time!=null">
+			<![CDATA[AND insert_time<=#{end_time}]]>
+		</if>
+		GROUP
+		BY harbour_code,goods_type
+		ORDER BY harbour_code ASC
+	</select>
+
+	<!-- 检索锚泊船舶类型统计 -->
+	<select id="selectMooringShipTypeStatistic" parameterType="com.loygra.mooring.bo.StatisticParam"
+		resultType="com.loygra.mooring.bo.MooringTypeStatistic">
+		SELECT goods_type type,COUNT(1) num FROM M_SHIP_PARK_INFO
+		WHERE 1=1
+		<if test="begin_time!=null">
+			<![CDATA[AND insert_time>=#{begin_time}]]>
+		</if>
+		<if test="end_time!=null">
+			<![CDATA[AND insert_time<=#{end_time}]]>
+		</if>
+		GROUP BY goods_type
+	</select>
+
+	<!-- 检索锚泊船舶吨位统计 -->
+	<select id="selectMooringShipTonStatistic" parameterType="com.loygra.mooring.bo.StatisticParam"
+		resultType="com.loygra.mooring.bo.MooringTypeStatistic">
+		SELECT tons_type type,COUNT(1) num FROM M_SHIP_PARK_INFO
+		WHERE 1=1
+		<if test="begin_time!=null">
+			<![CDATA[AND insert_time>=#{begin_time}]]>
+		</if>
+		<if test="end_time!=null">
+			<![CDATA[AND insert_time<=#{end_time}]]>
+		</if>
+		GROUP BY tons_type
+	</select>
+
+	<!-- 检索锚泊日统计 -->
+	<select id="selectMooringShipDayStatistic" parameterType="com.loygra.mooring.bo.StatisticParam"
+		resultType="com.loygra.mooring.bo.MooringTypeStatistic">
+		SELECT t.* FROM (SELECT rownum AS rowno1, t1.* FROM (SELECT rownum AS
+		rowno, inn.* FROM (
+		SELECT TO_CHAR(insert_time,'mm-dd') day ,COUNT(1) num FROM M_SHIP_PARK_INFO
+		WHERE 1=1
+		<if test="begin_time!=null">
+			<![CDATA[AND insert_time>=#{begin_time}]]>
+		</if>
+		<if test="end_time!=null">
+			<![CDATA[AND insert_time<=#{end_time}]]>
+		</if>
+		GROUP BY TO_CHAR(insert_time,'mm-dd')
+	<![CDATA[ )inn) t1 WHERE t1.rowno <= 31) t WHERE t.rowno1 >0]]>
+	</select>
+
+</mapper>

+ 21 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/service/StatisticService.java

@@ -0,0 +1,21 @@
+package com.loygra.mooring.service;
+
+import java.util.Map;
+
+import com.loygra.mooring.bo.StatisticParam;
+
+/**
+ * 统计服务
+ *
+ */
+public interface StatisticService {
+
+	/**
+	 * 检索港口锚泊船舶统计
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public Map<String, Object> getMooringShipStatistic(StatisticParam param);
+
+}

+ 124 - 0
gkmb/trunk/Mooring/src/main/java/com/loygra/mooring/serviceImpl/StatisticServiceImpl.java

@@ -0,0 +1,124 @@
+package com.loygra.mooring.serviceImpl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.loygra.mooring.bo.MooringShipStatistic;
+import com.loygra.mooring.bo.MooringStatistic;
+import com.loygra.mooring.bo.MooringTypeStatistic;
+import com.loygra.mooring.bo.StatisticParam;
+import com.loygra.mooring.common.CommonUtil;
+import com.loygra.mooring.common.ResponseSC;
+import com.loygra.mooring.daoImpl.BaseDaoImpl;
+import com.loygra.mooring.service.StatisticService;
+import com.loygra.mooring.util.LogUtil;
+
+@Service
+public class StatisticServiceImpl extends BaseServiceImpl implements StatisticService {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 4608273759432685500L;
+	@Resource(name = "baseDao")
+	private BaseDaoImpl baseDao;
+
+	@Override
+	@SuppressWarnings("unchecked")
+	public Map<String, Object> getMooringShipStatistic(StatisticParam param) {
+		Map<String, Object> resultMap = getResultMap();
+		try {
+			MooringStatistic ms = new MooringStatistic();
+			// 检索港口锚位锚地统计
+			List<MooringShipStatistic> result = baseDao.selectList("Statistic.selectMooringShipStatistic", param);
+			// 检索锚泊船舶吨位统计
+			List<MooringTypeStatistic> tons_result = baseDao.selectList("Statistic.selectMooringShipTonsTypeStatistic",
+					param);
+			// 检索锚泊船舶货物类型统计
+			List<MooringTypeStatistic> goods_result = baseDao.selectList("Statistic.selectMooringShipGoodsStatistic",
+					param);
+			// 检索锚泊船舶总量统计
+			List<MooringTypeStatistic> total_result = baseDao.selectList("Statistic.selectMooringShipTotalStatistic",
+					param);
+			// 将数据添加进去
+			for (MooringShipStatistic stat : result) {
+				// 吨位统计
+				for (MooringTypeStatistic tons : tons_result) {
+					if (stat.getHarbour_code().intValue() == tons.getHarbour_code()) {
+						stat.getShip_num_detail().put("tons_" + tons.getType(), CommonUtil.getString(tons.getNum()));
+						
+						System.out.println("tons_" + tons.getType()+","+ CommonUtil.getString(tons.getNum()));
+					}
+				}
+				// 货物统计
+				for (MooringTypeStatistic goods : goods_result) {
+					if (stat.getHarbour_code().intValue() == goods.getHarbour_code()) {
+						stat.getShip_num_detail().put("goods_" + goods.getType(),
+								CommonUtil.getQString(goods.getNum()));
+					}
+				}
+				// 总量统计
+				for (MooringTypeStatistic total : total_result) {
+					if (stat.getHarbour_code().intValue() == total.getHarbour_code()) {
+						stat.setPark_total_num(total.getNum());
+					}
+				}
+			}
+
+			// 船舶类型统计
+			List<MooringTypeStatistic> ship_goods_result = baseDao.selectList("Statistic.selectMooringShipTypeStatistic",
+					param);
+			Map<String, String> ship_result_map = new HashMap<String, String>();
+			float ship_result_count = 0.0f;
+			for (MooringTypeStatistic ship : ship_goods_result) {
+				ship_result_count += ship.getNum();
+			}
+			if (ship_result_count > 0) {
+				for (MooringTypeStatistic ship : ship_goods_result) {
+					ship_result_map.put("goods_" + ship.getType(),
+							String.valueOf(ship.getNum() / ship_result_count));
+				}
+			}
+			//
+			//
+			// 船舶吨位统计
+			List<MooringTypeStatistic> ship_tons_result = baseDao.selectList("Statistic.selectMooringShipTonStatistic",
+					param);
+			Map<String, String> ship_tons_map = new HashMap<String, String>();
+			float ship_goods_count = 0.0f;
+			for (MooringTypeStatistic ship : ship_tons_result) {
+				ship_goods_count += ship.getNum();
+			}
+			if (ship_result_count > 0) {
+				for (MooringTypeStatistic ship : ship_tons_result) {
+					ship_tons_map.put("tons_" + ship.getType(),
+							String.valueOf(ship.getNum() / ship_goods_count));
+				}
+			}
+			// 船舶日统计
+			List<MooringTypeStatistic> ship_day_result = baseDao.selectList("Statistic.selectMooringShipDayStatistic",
+					param);
+			// 整理,添加返回值
+			// 锚泊船舶统计
+			ms.setShip_count(result);
+			// 船舶类型统计
+			ms.setShip_goods(ship_result_map);
+			// 船舶吨位统计
+			ms.setShip_tons(ship_tons_map);
+			//日统计
+			ms.setShip_days(ship_day_result);
+			putData(resultMap, ms);
+		} catch (Exception e) {
+			putStatusCode(resultMap, ResponseSC.SystemSC.SYSTEM_ERROR.getCode());
+			LogUtil.errorLog(new Object[] {}, new Object[] {}, e.getMessage());
+		}
+		return resultMap;
+
+	}
+
+}