ProjectMapper.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.zjugis.business.mapper.ProjectMapper">
  4. <select id="calculate" resultType="com.zjugis.business.bean.response.ProjectCalculateResponse">
  5. SELECT NVL(SUM(NVL(PROJECT_COST, 0)), 0) as cost,NVL(SUM(NVL(OUTPUT_VALUE, 0)), 0) as output
  6. FROM project
  7. </select>
  8. <select id="selectWithChildren" resultType="com.zjugis.business.bean.response.ProjectResponse">
  9. SELECT * FROM PROJECT
  10. WHERE ISVALID = 1
  11. START WITH ID = (
  12. SELECT ID FROM PROJECT
  13. WHERE ISVALID = 1 and PID is NULL
  14. START WITH ID = #{id}
  15. CONNECT BY PRIOR PID = ID
  16. )
  17. CONNECT BY PRIOR ID = PID
  18. </select>
  19. <select id="page" resultType="com.zjugis.business.bean.entity.Project">
  20. SELECT P.*
  21. <if test="params != null and params.isRelContract != null and params.isRelContract == 1">
  22. ,
  23. (CASE WHEN CH.ccount >0 then P.OUTPUT_VALUE
  24. ELSE C.contractAmount end
  25. ) as contractAmount
  26. ,C.contractNumber as contractNumber
  27. </if>
  28. FROM PROJECT P
  29. <if test="params != null and params.isRelContract != null and params.isRelContract == 1">
  30. LEFT JOIN (SELECT PID,count(1) as ccount FROM PROJECT WHERE FLOW_STATUS = 99 GROUP BY PID) CH ON CH.PID = P.ID
  31. LEFT JOIN(SELECT PROJECT_ID,NVL(SUM(NVL(CONTRACT_AMOUNT,0)),0) as contractAmount,max(CONTRACT_NUMBER) as contractNumber FROM CONTRACT where FLOW_STATUS in (90,99) GROUP BY PROJECT_ID) C ON C.PROJECT_ID = P.ID
  32. </if>
  33. <if test="params != null and params.userId != null and params.userId != ''">
  34. LEFT JOIN PROJECT_WORKER_RELATION PW ON PW.PROJECT_ID = P.ID
  35. </if>
  36. <where>
  37. P.ISVALID = 1 AND P.FLOW_STATUS IN (90,99)
  38. <if test="params != null and params.hyId != null">
  39. AND P.HY_ID = #{params.hyId}
  40. </if>
  41. <if test="params != null and params.xzqdm != null and params.xzqdm != ''">
  42. AND P.XZQDM = #{params.xzqdm}
  43. </if>
  44. <if test="params != null and params.projectTypeId != null and params.projectTypeId != ''">
  45. AND P.PROJECT_TYPE_ID = #{params.projectTypeId}
  46. </if>
  47. <if test="params != null and params.xmzt != null">
  48. AND P.XMZT = #{params.xmzt}
  49. </if>
  50. <if test="params != null and params.lxsjOn != null">
  51. AND P.LXSJ &gt;= #{params.lxsjOn}
  52. </if>
  53. <if test="params != null and params.lxsjOff != null">
  54. AND P.LXSJ &lt;= #{params.lxsjOff}
  55. </if>
  56. <if test="params != null and params.isSign != null">
  57. AND P.IS_SIGN = #{params.isSign}
  58. </if>
  59. <if test="params != null and params.xmmc != null and params.xmmc != ''">
  60. <bind name="xmmc" value="'%'+params.xmmc+'%'"/>
  61. AND P.XMMC LIKE #{xmmc}
  62. </if>
  63. <if test="params != null and params.xmbh != null and params.xmbh != ''">
  64. <bind name="xmbh" value="'%'+params.xmbh+'%'"/>
  65. AND P.XMBH LIKE #{xmbh}
  66. </if>
  67. <if test="params != null and params.userId != null and params.userId != ''">
  68. AND PW.WORKER_ID = #{params.userId}
  69. </if>
  70. <if test="params != null and params.deptId != null and params.deptId != ''">
  71. AND P.ZRBM_ID = #{params.deptId}
  72. </if>
  73. <if test="params != null and params.xmjlId != null and params.xmjlId != ''">
  74. AND P.XMJL_ID = #{params.xmjlId}
  75. </if>
  76. </where>
  77. ORDER BY
  78. <choose>
  79. <when test="params != null and params.sortType == 2 ">
  80. YSSJ
  81. </when>
  82. <otherwise>
  83. LXSJ
  84. </otherwise>
  85. </choose>
  86. DESC
  87. </select>
  88. <select id="costSum" resultType="com.zjugis.business.bean.response.SumResponse">
  89. select
  90. nvl(sum(a.xmzcb), 0) as xmzcb,
  91. nvl(sum(ct.htje * a.czjd / 100), 0) as xmzcz,
  92. nvl(nvl(sum(ct.htje * a.czjd / 100), 0)- nvl(sum(a.xmzcb), 0),0) as xmlr
  93. from PROJECT p
  94. left join (select nvl(sum(c.htje), 0) as htje, cp.project_id
  95. from contract c
  96. left join contract_project cp
  97. on cp.contract_id = c.contract_id
  98. group by cp.project_id) ct
  99. on ct.project_id = p.project_id
  100. left join (select t.project_id as project_id,
  101. nvl(sum(t.payment_cost), 0) as xmzcb,
  102. max(t.output_progress) as czjd
  103. from PROJECT_COST t
  104. where to_char(t.rq, 'yyyy') = '{time}'
  105. group by t.project_id) a
  106. on a.project_id = p.project_id
  107. where p.isvalid = 1
  108. </select>
  109. <select id="selectChildrenOutputValue" resultType="java.math.BigDecimal">
  110. select nvl(sum(nvl(OUTPUT_VALUE,0)), 0) from PROJECT where PID = #{pid,jdbcType=VARCHAR} and ISVALID = 1
  111. </select>
  112. <select id="selectChildrenIds" resultType="java.lang.String">
  113. SELECT ID FROM PROJECT WHERE PID = #{projectId,jdbcType=VARCHAR} AND ISVALID = 1 and FLOW_STATUS = 99
  114. </select>
  115. <select id="countXmzt" resultType="com.zjugis.business.bean.response.ProjectXmztCountResponse">
  116. SELECT
  117. count(1) as total,
  118. SUM(CASE WHEN P.XMZT = 1 THEN 1 ELSE 0 END) as process,
  119. SUM(CASE WHEN P.XMZT = 2 THEN 1 ELSE 0 END) as finished,
  120. SUM(CASE WHEN P.XMZT = 3 THEN 1 ELSE 0 END) as terminated,
  121. SUM(CASE WHEN P.XMZT = 4 THEN 1 ELSE 0 END) as accepted
  122. FROM PROJECT P
  123. <where>
  124. P.ISVALID = 1 AND P.FLOW_STATUS IN (90,99)
  125. <if test="params != null and params.hyId != null">
  126. AND P.HY_ID = #{params.hyId}
  127. </if>
  128. <if test="params != null and params.xzqdm != null and params.xzqdm != ''">
  129. AND P.XZQDM = #{params.xzqdm}
  130. </if>
  131. <if test="params != null and params.projectTypeId != null and params.projectTypeId != ''">
  132. AND P.PROJECT_TYPE_ID = #{params.projectTypeId}
  133. </if>
  134. <if test="params != null and params.xmzt != null">
  135. AND P.XMZT = #{params.xmzt}
  136. </if>
  137. <if test="params != null and params.lxsjOn != null">
  138. AND P.LXSJ &gt;= #{params.lxsjOn}
  139. </if>
  140. <if test="params != null and params.lxsjOff != null">
  141. AND P.LXSJ &lt;= #{params.lxsjOff}
  142. </if>
  143. <if test="params != null and params.isSign != null">
  144. AND P.IS_SIGN = #{params.isSign}
  145. </if>
  146. <if test="params != null and params.xmmc != null and params.xmmc != ''">
  147. <bind name="xmmc" value="'%'+params.xmmc+'%'"/>
  148. AND P.XMMC LIKE #{xmmc}
  149. </if>
  150. <if test="params != null and params.xmbh != null and params.xmbh != ''">
  151. <bind name="xmbh" value="'%'+params.xmbh+'%'"/>
  152. AND P.XMBH LIKE #{xmbh}
  153. </if>
  154. <if test="params != null and params.userId != null and params.userId != ''">
  155. AND PW.WORKER_ID = #{params.userId}
  156. </if>
  157. <if test="params != null and params.deptId != null and params.deptId != ''">
  158. AND P.ZRBM_ID = #{params.deptId}
  159. </if>
  160. </where>
  161. </select>
  162. <update id="updateChildXmzt">
  163. UPDATE PROJECT SET XMZT = #{xmzt,jdbcType=INTEGER} WHERE PID = #{projectId,jdbcType=VARCHAR} AND FLOW_STATUS = 99
  164. </update>
  165. <select id="selectCountInfo" resultType="com.zjugis.business.bean.dto.CountInfo">
  166. SELECT
  167. COALESCE(SUM(CASE WHEN T.LXSJ &gt;= #{start,jdbcType=DATE} THEN 1 ELSE 0 END),0) as xl,
  168. COALESCE(SUM(CASE WHEN T.LXSJ &lt;= #{end,jdbcType=DATE} AND XMZT = 1 THEN 1 ELSE 0 END),0) as jz,
  169. COALESCE(SUM(CASE WHEN T1.ID IS NULL THEN 1 ELSE 0 END),0) as haveContract,
  170. COALESCE(SUM(CASE WHEN T1.ID IS NOT NULL THEN 1 ELSE 0 END),0) as noContract,
  171. COALESCE(SUM(CASE WHEN T.XMZT = 4 THEN 1 ELSE 0 END),0) as accepted,
  172. COALESCE(SUM(CASE WHEN T.XMZT = 1 THEN 1 ELSE 0 END),0) as unaccepted
  173. FROM PROJECT T
  174. LEFT JOIN CONTRACT T1 ON T1.PROJECT_ID = T.ID
  175. WHERE T.ISVALID = 1
  176. </select>
  177. <select id="selectAmountInfo" resultType="com.zjugis.business.bean.dto.AmountInfo">
  178. SELECT
  179. count(1) as total,
  180. COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &lt; 1000000 THEN 1 ELSE 0 END),0) as lt100,
  181. COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 1000000 and T1.CONTRACT_AMOUNT &lt; 2000000 THEN 1 ELSE 0 END),0) as lt200,
  182. COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 2000000 and T1.CONTRACT_AMOUNT &lt; 3000000 THEN 1 ELSE 0 END),0) as lt300,
  183. COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 3000000 and T1.CONTRACT_AMOUNT &lt; 4000000 THEN 1 ELSE 0 END),0) as lt400,
  184. COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 4000000 THEN 1 ELSE 0 END),0) as gte400
  185. FROM PROJECT T
  186. LEFT JOIN CONTRACT T1 ON T1.PROJECT_ID = T.ID
  187. WHERE T.ISVALID = 1
  188. </select>
  189. <select id="selectProcessInfo" resultType="com.zjugis.business.bean.dto.ProcessInfo">
  190. SELECT
  191. count(1) as total,
  192. COALESCE(SUM(CASE WHEN T1.process &gt; 75 THEN 1 ELSE 0 END),0) as gt75,
  193. COALESCE(SUM(CASE WHEN T1.process &gt; 50 and T1.process &lt;= 75 THEN 1 ELSE 0 END),0) as gt50,
  194. COALESCE(SUM(CASE WHEN T1.process &gt; 25 and T1.process &lt;= 50 THEN 1 ELSE 0 END),0) as gt25,
  195. COALESCE(SUM(CASE WHEN T1.process &gt; 10 and T1.process &lt;= 25 THEN 1 ELSE 0 END),0) as gt10,
  196. COALESCE(SUM(CASE WHEN T1.process &lt; 10 THEN 1 ELSE 0 END),0) as lte10
  197. FROM PROJECT T
  198. LEFT JOIN(
  199. SELECT MAX(TO_NUMBER(REPLACE(PROCESS, '%' ,''))) as process,PROJECT_ID FROM PROJECT_MILESTONE
  200. WHERE STATE = 1 AND ISVALID = 1
  201. GROUP BY PROJECT_ID
  202. ) T1 ON T1.PROJECT_ID = T.ID
  203. WHERE T.ISVALID = 1
  204. </select>
  205. </mapper>