AssetsProductionMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  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.dayou.mapper.AssetsProductionMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.dayou.entity.AssetsProduction">
  6. <result column="id" property="id" />
  7. <result column="deleted" property="deleted" />
  8. <result column="created" property="created" />
  9. <result column="modified" property="modified" />
  10. <result column="business_id" property="businessId" />
  11. <result column="production_no" property="productionNo" />
  12. <result column="production_type" property="productionType" />
  13. <result column="signatory" property="signatory" />
  14. <result column="client_name" property="clientName" />
  15. <result column="client_tel" property="clientTel" />
  16. <result column="valuation_basis_date" property="valuationBasisDate" />
  17. <result column="evaluate_acreage" property="evaluateAcreage" />
  18. <result column="evaluate_amount" property="evaluateAmount" />
  19. <result column="evaluate_price" property="evaluatePrice" />
  20. <result column="owner" property="owner" />
  21. <result column="print_count" property="printCount" />
  22. <result column="create_production_date" property="createProductionDate" />
  23. <result column="comment" property="comment" />
  24. <result column="repertory_state" property="repertoryState" />
  25. <result column="repertory_in_time" property="repertoryInTime" />
  26. <result column="repertory_out_time" property="repertoryOutTime" />
  27. <result column="file_path" property="filePath" />
  28. <result column="save_file_date" property="saveFileDate" />
  29. <result column="delivery" property="delivery" />
  30. </resultMap>
  31. <!-- 通用查询结果列 -->
  32. <sql id="Base_Column_List">
  33. id,
  34. deleted,
  35. created,
  36. modified,
  37. business_id, production_no, production_type, signatory, client_name, client_tel, valuation_basis_date, evaluate_acreage, evaluate_amount, evaluate_price, owner, print_count, create_production_date, comment, repertory_state, repertory_in_time, repertory_out_time, file_path, save_file_date, delivery
  38. </sql>
  39. <!--根据业务id获取产品信息类型集合-->
  40. <select id="getProductionTypes" resultType="java.lang.String">
  41. SELECT production_type
  42. FROM assets_production
  43. WHERE business_id = #{businessId}
  44. AND deleted = 0
  45. </select>
  46. <!--根据业务id获取已选择产品-->
  47. <select id="getProductionByBusinessId" resultType="com.dayou.entity.AssetsProduction">
  48. SELECT id, production_type, print_count
  49. FROM assets_production
  50. WHERE business_id = #{businessId}
  51. AND deleted = 0
  52. AND create_production_date IS NULL
  53. LIMIT 1
  54. </select>
  55. <!--获取产品号集合(用于判断下一个子号)-->
  56. <select id="getProductionNo" resultType="java.lang.String">
  57. SELECT production_no
  58. FROM assets_evaluation_target
  59. WHERE assets_id = #{id}
  60. AND deleted = 0
  61. AND production_no IS NOT NULL
  62. AND production_no != ''
  63. </select>
  64. <!--更新产品的产品号信息-->
  65. <update id="updateProductionNo">
  66. UPDATE assets_production
  67. SET production_no = #{productionNo}
  68. WHERE deleted = 0
  69. AND business_id = #{businessId}
  70. AND production_type = #{productionType}
  71. AND (production_no IS NULL OR production_no = '')
  72. AND id = #{productionId}
  73. </update>
  74. <!--取子号情况下,再复制一份产品信息并添加-->
  75. <insert id="copyProductionInfo" useGeneratedKeys = "true" keyProperty = "id">
  76. INSERT INTO assets_production(id, business_id, production_type, print_count)
  77. VALUE (NULL, #{businessId}, #{productionType}, #{printCount});
  78. </insert>
  79. <!--撰写产品信息-->
  80. <update id="writeAssetsProduction">
  81. UPDATE assets_production
  82. SET signatory = #{signatory},
  83. client_name = #{clientName},
  84. client_tel = #{clientTel},
  85. valuation_basis_date = #{valuationBasisDate},
  86. evaluate_acreage = #{evaluateAcreage},
  87. evaluate_price = #{evaluatePrice},
  88. evaluate_amount = #{evaluateAmount},
  89. owner = #{owner},
  90. print_count = #{printCount},
  91. create_production_date = #{createProductionDate},
  92. comment = #{comment},
  93. file_path = #{filePath},
  94. assets_name = #{assetsName},
  95. qr_code = #{qrCode}
  96. WHERE production_no = #{productionNo}
  97. AND business_id = #{businessId}
  98. </update>
  99. <!--根据业务id与产品号查询产品信息-->
  100. <select id="getProductionList" resultType="com.dayou.entity.AssetsProduction">
  101. SELECT id,
  102. business_id,
  103. production_no,
  104. production_type,
  105. signatory,
  106. client_name,
  107. client_tel,
  108. valuation_basis_date,
  109. evaluate_acreage,
  110. evaluate_amount,
  111. evaluate_price,
  112. owner,
  113. print_count,
  114. create_production_date,
  115. comment,
  116. repertory_state,
  117. repertory_in_time,
  118. repertory_out_time,
  119. file_path,
  120. save_file_date,
  121. delivery,
  122. qr_code
  123. FROM assets_production
  124. WHERE business_id = #{businessId}
  125. <if test="statementNo != null and statementNo != ''">
  126. AND production_no = #{statementNo}
  127. </if>
  128. <if test="(statementNo != null and statementNo != '') and (reportNos != null and reportNos.size() > 0) ">
  129. OR production_no IN
  130. <foreach collection="reportNos" index="index" item="item" open="(" separator="," close=")">
  131. #{item}
  132. </foreach>
  133. </if>
  134. <if test="(statementNo == null or statementNo == '') and (reportNos != null and reportNos.size() > 0) ">
  135. # OR
  136. AND production_no IN
  137. <foreach collection="reportNos" index="index" item="item" open="(" separator="," close=")">
  138. #{item}
  139. </foreach>
  140. </if>
  141. <!-- <if test="reportNos != null and reportNos.size() > 0">-->
  142. <!-- production_no IN-->
  143. <!-- <foreach collection="reportNos" index="index" item="item" open="(" separator="," close=")">-->
  144. <!-- #{item}-->
  145. <!-- </foreach>-->
  146. <!-- </if>-->
  147. AND create_production_date IS NOT NULL
  148. AND deleted = 0
  149. </select>
  150. <!--根据业务id与产品号查询该产品是否已有提交的流程实例信息-->
  151. <select id="getInatanceCount" resultType="java.lang.Integer">
  152. SELECT COUNT(id)
  153. FROM work_flow_node_instance
  154. WHERE deleted = 0
  155. AND business_id = #{businessId}
  156. AND (business_sub_id = #{productionNo} OR business_min_id = #{productionNo})
  157. </select>
  158. <!--根据业务id与产品号集合获取每个产品是否有提交过的流程实例信息-->
  159. <select id="getInatanceCountByIdAndProNo" resultType="java.lang.Integer">
  160. SELECT COUNT(id)
  161. FROM work_flow_node_instance
  162. WHERE deleted = 0
  163. AND business_id = #{businessId}
  164. AND (business_sub_id = #{productionNo} OR business_min_id = #{productionNo})
  165. </select>
  166. <!--根据id获取产品出入库状态-->
  167. <select id="getRepertoryState" resultType="java.lang.Boolean">
  168. SELECT repertory_state
  169. FROM assets_production
  170. WHERE deleted = 0
  171. AND id = #{id}
  172. </select>
  173. <!--根据资产产品id更新文件路由信息-->
  174. <update id="updateProductionFileInfo">
  175. UPDATE assets_production
  176. SET file_path = #{filePath},
  177. comment = #{comment}
  178. WHERE id = #{id}
  179. </update>
  180. <!--获取产品实收款-->
  181. <select id="getProductionRealAmount" resultType="java.math.BigDecimal">
  182. SELECT real_amount
  183. FROM production_fund
  184. WHERE production_no = #{productionNo}
  185. AND deleted = 0
  186. </select>
  187. <!--产品标记送达-->
  188. <update id="markDelivery">
  189. UPDATE assets_production
  190. SET delivery = 1
  191. WHERE production_no = #{productionNo}
  192. AND deleted = 0
  193. </update>
  194. <!--查找实收款认领产品列表-->
  195. <select id="getAssetsProductionFundVoList" resultType="com.dayou.vo.AssetsProductionFundVo">
  196. SELECT (@i := @i + 1) AS id,
  197. assets.id AS assetsId,
  198. assets.name AS name,
  199. assets.order_id AS orderId,
  200. production.id AS productionId,
  201. production.production_no AS productionNo,
  202. production.production_type AS productionType,
  203. customer.name AS clienteleName,
  204. oFund.id AS orderFundId,
  205. oFund.should_amount AS orderShouldAmount,
  206. oFund.real_amount AS orderRealAmount,
  207. pFund.id AS productionFundId,
  208. pFund.production_should_amount AS productionShouldAmount,
  209. pFund.real_amount AS productionRealAmount,
  210. pFund.standard_amount AS standardAmount,
  211. eDeclare.declare_result AS eDeclareResult,
  212. mDeclare.declare_result AS mDeclareResult,
  213. (SELECT user.name FROM user WHERE user.id = assets.client_manager_id) AS marketUser,
  214. (SELECT user.name FROM user WHERE user.id = assets.principal_id) AS evaluateUser
  215. FROM (SELECT @i := 0) AS sort,assets
  216. LEFT JOIN assets_production AS production ON production.business_id = assets.id
  217. LEFT JOIN order_fund AS oFund ON oFund.business_id = assets.id AND oFund.order_id = assets.order_id
  218. LEFT JOIN production_fund AS pFund ON pFund.business_id = production.business_id AND pFund.production_no = production.production_no
  219. LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
  220. LEFT JOIN (
  221. SELECT business_id,production_id,declare_result
  222. FROM commission_declare AS `declare`
  223. WHERE `declare`.business_type = 'COMMISSION_DECLARE_ASSET_EVALUATE'
  224. AND deleted = 0
  225. ) AS eDeclare ON eDeclare.business_id = assets.id AND eDeclare.production_id = production.id
  226. LEFT JOIN (
  227. SELECT business_id,production_id,declare_result
  228. FROM commission_declare AS `declare`
  229. WHERE `declare`.business_type = 'COMMISSION_DECLARE_ASSET_MARKET'
  230. AND deleted = 0
  231. ) AS mDeclare ON mDeclare.business_id = assets.id AND mDeclare.production_id = production.id
  232. WHERE production.production_type != 'STATEMENT'
  233. AND assets.client_manager_id = #{managerId}
  234. AND production.create_production_date IS NOT NULL
  235. <if test="apFundSelectDTO.oderName != null and apFundSelectDTO.oderName != ''">
  236. AND assets.name LIKE CONCAT('%',#{apFundSelectDTO.oderName},'%')
  237. </if>
  238. <if test="apFundSelectDTO.orderId != null and apFundSelectDTO.orderId != ''">
  239. AND assets.order_id LIKE CONCAT('%',#{apFundSelectDTO.orderId},'%')
  240. </if>
  241. <if test="apFundSelectDTO.reportNo != null and apFundSelectDTO.reportNo != ''">
  242. AND production.production_no LIKE CONCAT('%',#{apFundSelectDTO.reportNo},'%')
  243. </if>
  244. <if test="apFundSelectDTO.eDeclareResult != null and apFundSelectDTO.eDeclareResult != ''">
  245. AND eDeclare.declare_result = #{apFundSelectDTO.eDeclareResult}
  246. </if>
  247. <if test="apFundSelectDTO.mDeclareResult != null and apFundSelectDTO.mDeclareResult != ''">
  248. AND mDeclare.declare_result = #{apFundSelectDTO.mDeclareResult}
  249. </if>
  250. ORDER BY assets.created DESC
  251. </select>
  252. <!--查找实收款认领订单列表-->
  253. <select id="getAssetsOrderFundVoList" resultType="com.dayou.vo.AssetsProductionFundVo">
  254. SELECT (@i := @i + 1) AS id,
  255. assets.id AS assetsId,
  256. assets.name AS name,
  257. assets.order_id AS orderId,
  258. customer.name AS clienteleName,
  259. oFund.id AS orderFundId,
  260. oFund.should_amount AS orderShouldAmount,
  261. oFund.real_amount AS orderRealAmount,
  262. eDeclare.declare_result AS eDeclareResult,
  263. mDeclare.declare_result AS mDeclareResult,
  264. (SELECT user.name FROM user WHERE user.id = assets.client_manager_id) AS marketUser,
  265. (SELECT user.name FROM user WHERE user.id = assets.principal_id) AS evaluateUser
  266. FROM (SELECT @i := 0) AS sort,assets
  267. LEFT JOIN order_fund AS oFund ON oFund.business_id = assets.id AND oFund.order_id = assets.order_id
  268. LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
  269. LEFT JOIN (
  270. SELECT business_id,declare_result
  271. FROM commission_declare AS `declare`
  272. WHERE `declare`.business_type = 'COMMISSION_DECLARE_ASSET_EVALUATE'
  273. AND deleted = 0
  274. ) AS eDeclare ON eDeclare.business_id = assets.id
  275. LEFT JOIN (
  276. SELECT business_id,declare_result
  277. FROM commission_declare AS `declare`
  278. WHERE `declare`.business_type = 'COMMISSION_DECLARE_ASSET_MARKET'
  279. AND deleted = 0
  280. ) AS mDeclare ON mDeclare.business_id = assets.id
  281. <where>
  282. AND assets.client_manager_id = #{managerId}
  283. AND (SELECT COUNT(1) FROM assets_production WHERE assets_production.business_id = assets.id AND assets_production.deleted = 0) = 0
  284. <if test="apFundSelectDTO.oderName != null and apFundSelectDTO.oderName != ''">
  285. AND assets.name LIKE CONCAT('%',#{apFundSelectDTO.oderName},'%')
  286. </if>
  287. <if test="apFundSelectDTO.orderId != null and apFundSelectDTO.orderId != ''">
  288. AND assets.order_id LIKE CONCAT('%',#{apFundSelectDTO.orderId},'%')
  289. </if>
  290. <if test="apFundSelectDTO.eDeclareResult != null and apFundSelectDTO.eDeclareResult != ''">
  291. AND eDeclare.declare_result = #{apFundSelectDTO.eDeclareResult}
  292. </if>
  293. <if test="apFundSelectDTO.mDeclareResult != null and apFundSelectDTO.mDeclareResult != ''">
  294. AND mDeclare.declare_result = #{apFundSelectDTO.mDeclareResult}
  295. </if>
  296. </where>
  297. ORDER BY assets.created DESC
  298. </select>
  299. <!--根据订单收款id获取产品收款信息-->
  300. <select id="getProductionFundByOrderFundId" resultType="com.dayou.dto.ReportDTO">
  301. SELECT
  302. ap.id,
  303. ( CASE ap.production_type WHEN 'STATEMENT' THEN '价值意见书' WHEN 'REPORT' THEN '评估报告' WHEN 'CONSULT' THEN '咨询报告' ELSE '意见函' END ) AS productionType,
  304. ap.evaluate_amount,
  305. sum( pf.real_amount ) AS claimedAmount,
  306. pf.standard_amount,
  307. ap.production_no AS businessSubId,
  308. pf.id AS productionFundId
  309. FROM ( SELECT id, business_id FROM order_fund WHERE business_type = 'ASSET_BUSINESS' AND deleted = 0 AND id = #{orderFundId} ) AS orf
  310. INNER JOIN ( SELECT id, business_id, production_no, production_type, evaluate_amount FROM assets_production WHERE production_type!='STATEMENT' AND deleted = 0 ) AS ap ON orf.business_id = ap.business_id
  311. LEFT JOIN ( SELECT id, business_id, production_no, order_fund_id, real_amount, standard_amount, production_type FROM production_fund WHERE deleted = 0 ) AS pf ON pf.business_id = ap.business_id
  312. AND pf.production_no = ap.production_no
  313. AND pf.production_type = ap.production_type
  314. GROUP BY
  315. ap.id,
  316. pf.standard_amount,
  317. pf.id
  318. </select>
  319. <!--产品归档-->
  320. <update id="prodSaveFile">
  321. UPDATE assets_production
  322. SET if_save_file = 1,
  323. save_file_date = #{saveFileDate}
  324. WHERE production_no = #{productionNo}
  325. AND deleted = 0
  326. </update>
  327. </mapper>