otc-entrust-mapper.xml 5.01 KB
<?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">

<!-- 当天委托交易(hs_otc.otcentrust) @author tongyufu -->
<mapper namespace="com.cjs.cms.dao.trade.OtcEntrustDao">

	<sql id="otc_entrust_field">
		E.OTC_CODE, E.OTC_NAME, E.OTC_PROP, E.ENTRUST_PRICE, E.ENTRUST_AMOUNT, E.ENTRUST_STATUS,
		E.BUSINESS_PRICE, E.BUSINESS_AMOUNT, E.BUSINESS_BALANCE, E.CURR_DATE, E.CURR_TIME
	</sql>
	
	<!-- 最新发布 -->
	<select id="queryLastEntrust" resultType="OtcEntrustInfo">
		<include refid="common.pageStart" />
		SELECT E.OTC_CODE, E.OTC_NAME, E.OTC_PROP, E.ENTRUST_PRICE, (E.ENTRUST_AMOUNT - E.BUSINESS_AMOUNT) ENTRUST_AMOUNT, 
			E.ENTRUST_STATUS, E.BUSINESS_PRICE, E.BUSINESS_AMOUNT, E.BUSINESS_BALANCE, E.CURR_DATE, E.CURR_TIME
		FROM HS_OTC.OTCENTRUST E
		WHERE (E.OTC_PROP = '0S0' OR E.OTC_PROP = '0B0') AND (E.ENTRUST_STATUS = '2' OR E.ENTRUST_STATUS = '7')
		ORDER BY E.CURR_TIME DESC
		<include refid="common.pageEnd" />
	</select>
	
	<!-- 最新成交 -->
	<select id="queryLastBargin" resultType="OtcEntrustInfo">
		<include refid="common.pageStart" />
		SELECT <include refid="otc_entrust_field" />
		FROM HS_OTC.OTCENTRUST E
		WHERE E.OTC_PROP = '0B0' AND (E.ENTRUST_STATUS = '7' OR E.ENTRUST_STATUS = '8')
		ORDER BY E.CURR_TIME DESC
		<include refid="common.pageEnd" />
	</select>
	
	<!-- 官网,买卖的全部商品查询 -->
	<select id="queryEntrustingInfo" resultType="EcEntrustInfo">
		SELECT T.SDC_CODE AS OTC_CODE, T.SDC_NAME AS OTC_NAME,  decode(P.MCLOSE_PRICE ,0,0,(P.LAST_PRICE - P.MCLOSE_PRICE)/P.MCLOSE_PRICE ) AS ROSE,(P.LAST_PRICE-P.MCLOSE_PRICE) AS UPS,P.business_amount,P.business_balance,
		P.MCLOSE_PRICE CLOSE_PRICE, P.OPEN_PRICE, 
		  P.LAST_PRICE, A1.BUY_PRICE, B1.SELL_PRICE,
		  (SELECT SUM(E.ENTRUST_AMOUNT - E.BUSINESS_AMOUNT)
			FROM HS_OTC.OTCENTRUST E
			WHERE E.ENTRUST_PRICE = A1.BUY_PRICE AND E.OTC_CODE = A1.OTC_CODE
			  AND E.OTC_PROP = '0B0' AND (E.ENTRUST_STATUS = '2' OR E.ENTRUST_STATUS = '7')
			GROUP BY E.OTC_CODE, E.ENTRUST_PRICE) BUY_AMOUNT,
		  (SELECT SUM(F.ENTRUST_AMOUNT - F.BUSINESS_AMOUNT)
			FROM HS_OTC.OTCENTRUST F 
			WHERE F.ENTRUST_PRICE = B1.SELL_PRICE AND F.OTC_CODE = B1.OTC_CODE
			  AND F.OTC_PROP = '0S0' AND (F.ENTRUST_STATUS = '2' OR F.ENTRUST_STATUS = '7')
			GROUP BY F.OTC_CODE, F.ENTRUST_PRICE) SELL_AMOUNT
		FROM HS_SDC.SDCOCODE T
		LEFT JOIN HS_MCH.MCHPRICE P ON T.SDC_CODE = P.MCH_CODE
		LEFT JOIN (
			SELECT A.OTC_CODE, MAX(A.ENTRUST_PRICE) BUY_PRICE
			FROM HS_OTC.OTCENTRUST A
			WHERE A.OTC_PROP = '0B0' AND (A.ENTRUST_STATUS = '2' OR A.ENTRUST_STATUS = '7')
		    GROUP BY A.OTC_CODE) A1
		    ON T.SDC_CODE = A1.OTC_CODE
		  LEFT JOIN (SELECT B.OTC_CODE, MIN(B.ENTRUST_PRICE) SELL_PRICE
		    FROM HS_OTC.OTCENTRUST B
		    WHERE B.OTC_PROP = '0S0' AND (B.ENTRUST_STATUS = '2' OR B.ENTRUST_STATUS = '7')
		    GROUP BY B.OTC_CODE) B1
		    ON T.SDC_CODE = B1.OTC_CODE
		WHERE T.SDCCODE_STATUS = '0'
		ORDER BY T.SDC_CODE
	</select>

	<select id="queryOtcentrust" parameterType="map" resultType="map">
		SELECT T.OTC_CODE, T.OTC_NAME, SUM(T.ENTRUST_AMOUNT -
		T.BUSINESS_AMOUNT) ENTRUST_NUM,
		T.ENTRUST_PRICE, T.OTC_PROP
		FROM HS_OTC.OTCENTRUST_VIEW T
		WHERE T.OTC_CODE=#{otcCode} AND (T.ENTRUST_STATUS='2' OR
		T.ENTRUST_STATUS='7')
		GROUP BY ENTRUST_PRICE, T.OTC_CODE, T.OTC_NAME, T.OTC_PROP
		ORDER BY T.ENTRUST_PRICE DESC
	</select>

	<select id="queryOtcCount" parameterType="map" resultType="map">
		SELECT T.OTC_CODE, T.OTC_NAME, COUNT(*) AS TOTAL
		FROM HS_OTC.OTCENTRUST_VIEW T WHERE 1 = 1
		<if test="otcCode != null and otcCode != ''">
		   AND T.OTC_CODE = #{otcCode}
		</if>
		<if test="otcName != null and otcName != ''">
		   AND T.OTC_NAME = #{otcName}
		</if>
		GROUP BY T.OTC_CODE, T.OTC_NAME
		ORDER BY T.OTC_CODE
	</select>
	
	<!-- 查询最大的委托号 -->
	<select id="queryMaxEntrustNo" resultType="int">
		SELECT MAX(T.ENTRUST_NO) 
		FROM HS_OTC.OTCENTRUST T
	</select>
	
	<!-- 查询买入五档 -->
	<select id="queryBuyRank" parameterType="int" resultType="map">
		SELECT * FROM(
		  SELECT T.OTC_CODE, T.ENTRUST_PRICE, SUM(T.ENTRUST_AMOUNT - T.BUSINESS_AMOUNT) AS AMOUNT,
		    RANK() OVER(PARTITION BY T.OTC_CODE ORDER BY T.ENTRUST_PRICE DESC) AS RANKING, T.OTC_PROP
		  FROM HS_OTC.OTCENTRUST T
		  WHERE (T.ENTRUST_STATUS = '2' OR T.ENTRUST_STATUS = '7') AND T.OTC_PROP = '0B0'
		  GROUP BY T.OTC_CODE, T.ENTRUST_PRICE, T.OTC_PROP) E
		WHERE <![CDATA[E.RANKING <=]]> #{rank}
		ORDER BY E.OTC_CODE, E.ENTRUST_PRICE DESC
	</select>
	
	<!-- 查询卖出五档 -->
	<select id="querySellRank" parameterType="int" resultType="map">
		SELECT * FROM(
		  SELECT T.OTC_CODE, T.ENTRUST_PRICE, SUM(T.ENTRUST_AMOUNT - T.BUSINESS_AMOUNT) AS AMOUNT,
		    RANK() OVER(PARTITION BY T.OTC_CODE ORDER BY T.ENTRUST_PRICE) AS RANKING, T.OTC_PROP
		  FROM HS_OTC.OTCENTRUST T
		  WHERE (T.ENTRUST_STATUS = '2' OR T.ENTRUST_STATUS = '7') AND T.OTC_PROP = '0S0'
		  GROUP BY T.OTC_CODE, T.ENTRUST_PRICE, T.OTC_PROP) E
		WHERE <![CDATA[E.RANKING <=]]> #{rank}
		ORDER BY E.OTC_CODE, E.ENTRUST_PRICE DESC
	</select>
	
</mapper>