ProjectMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  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="cn.com.ty.lift.business.project.dao.mapper.ProjectMapper" >
  4. <resultMap id="BaseResultMap" type="cn.com.ty.lift.business.project.dao.entity.Project" >
  5. <id column="id" property="id" jdbcType="BIGINT" />
  6. <result column="mt_company_id" property="mtCompanyId" jdbcType="BIGINT" />
  7. <result column="pp_company_id" property="ppCompanyId" jdbcType="BIGINT" />
  8. <result column="pp_contact_id" property="ppContactId" jdbcType="BIGINT" />
  9. <result column="project_code" property="projectCode" jdbcType="CHAR" />
  10. <result column="project_name" property="projectName" jdbcType="VARCHAR" />
  11. <result column="province_code" property="provinceCode" jdbcType="CHAR" />
  12. <result column="province" property="province" jdbcType="VARCHAR" />
  13. <result column="city_code" property="cityCode" jdbcType="CHAR" />
  14. <result column="city" property="city" jdbcType="VARCHAR" />
  15. <result column="district_code" property="districtCode" jdbcType="CHAR" />
  16. <result column="district" property="district" jdbcType="VARCHAR" />
  17. <result column="address" property="address" jdbcType="VARCHAR" />
  18. <result column="num" property="num" jdbcType="INTEGER" />
  19. <result column="actual_num" property="actualNum" jdbcType="INTEGER" />
  20. <result column="project_usage" property="projectUsage" jdbcType="TINYINT" />
  21. <result column="start_date" property="startDate" jdbcType="DATE" />
  22. <result column="end_date" property="endDate" jdbcType="DATE" />
  23. <result column="project_status" property="projectStatus" jdbcType="TINYINT" />
  24. <result column="remarks" property="remarks" jdbcType="VARCHAR" />
  25. <result column="is_locked" property="isLocked" jdbcType="TINYINT" />
  26. <result column="creator_id" property="creatorId" jdbcType="BIGINT" />
  27. <result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
  28. <result column="evaluate" property="evaluate" jdbcType="INTEGER" />
  29. <result column="end_remarks" property="endRemarks" jdbcType="VARCHAR" />
  30. <result column="if_monitor" property="ifMonitor" jdbcType="INTEGER" />
  31. <result column="all_project" property="allProject" jdbcType="INTEGER" />
  32. <result column="region_id" property="regionId" jdbcType="BIGINT" />
  33. </resultMap>
  34. <sql id="Base_Column_List" >
  35. id, mt_company_id, pp_company_id, pp_contact_id, project_code, project_name, province_code,
  36. province, city_code, city, district_code, district, address, num, actual_num, project_usage,
  37. start_date, end_date, project_status, remarks, is_locked, creator_id, create_date,
  38. evaluate, end_remarks, if_monitor, all_project, region_id
  39. </sql>
  40. <!-- 根据省,市,区,区域,区域主管,项目名称、项目编号、甲方名称、项目地址查询项目管理列表-->
  41. <select id="findByCondition" resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectResponse"
  42. parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest" >
  43. SELECT DISTINCT
  44. p.id AS id,
  45. p.project_code AS projectCode,
  46. p.project_name AS projectName,
  47. p.project_usage AS projectUsage,
  48. p.province AS province,
  49. p.city AS city,
  50. p.district AS district,
  51. p.district_code AS districtCode,
  52. p.num AS num,
  53. plr.actualNum AS actualNum,
  54. p.address AS address,
  55. p.start_date AS startDate,
  56. p.end_date AS endDate,
  57. p.region_id AS regionId,
  58. p.pp_company_id AS ppCompanyId,
  59. p.pp_contact_id AS ppContactId,
  60. p.save AS save,
  61. p.locked AS locked,
  62. p.project_status AS projectStatus,
  63. r.area_name AS regionName,
  64. ui.name AS userName,
  65. pc.name AS companyName,
  66. if(isnull(c.id),'0','1') AS existContract
  67. FROM project p
  68. LEFT JOIN region r ON p.region_id = r.id
  69. LEFT JOIN user_info ui ON r.user_id = ui.user_id
  70. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  71. LEFT JOIN contracts c ON p.id = c.project_id
  72. LEFT JOIN (SELECT count(1) AS actualNum, project_id
  73. FROM project_lift_relevance plr
  74. LEFT JOIN platform_company_lift_relevance pclr
  75. ON plr.lift_id = pclr.lift_id AND pclr.mt_company_id = plr.mt_company_id
  76. WHERE plr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  77. AND pclr.lift_company_status != '1'
  78. AND pclr.delete_flag = '0'
  79. GROUP BY project_id) plr ON plr.project_id = p.id
  80. WHERE p.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  81. <if test="request.provinceCode!=null and request.provinceCode!=''">
  82. AND p.province_code= #{request.provinceCode,jdbcType=VARCHAR}
  83. </if>
  84. <if test="request.cityCode!=null and request.cityCode!=''">
  85. AND p.city_code = #{request.cityCode,jdbcType=VARCHAR}
  86. </if>
  87. <if test="request.districtCode!=null and request.districtCode!=''">
  88. AND p.district_code = #{request.districtCode,jdbcType=VARCHAR}
  89. </if>
  90. <if test="request.regionId!=null and request.regionId!=''">
  91. AND p.region_id = #{request.regionId,jdbcType=BIGINT}
  92. </if>
  93. <if test="request.userId!=null and request.userId!=''">
  94. AND r.user_id = #{request.userId,jdbcType=BIGINT}
  95. </if>
  96. <if test="request.condition!=null and request.condition!=''">
  97. AND (p.project_name LIKE CONCAT('%',#{request.condition,jdbcType=VARCHAR},'%')
  98. OR p.project_code LIKE CONCAT('%',#{request.condition,jdbcType=VARCHAR},'%')
  99. OR p.address LIKE CONCAT('%',#{request.condition,jdbcType=VARCHAR},'%'))
  100. </if>
  101. <if test="request.projectStatus!=null and request.projectStatus!=''">
  102. AND p.project_status = #{request.projectStatus,jdbcType=VARCHAR}
  103. </if>
  104. ORDER BY p.end_date
  105. </select>
  106. <!-- 根据甲方公司ID和项目状态查询公司项目管理列表-->
  107. <select id="findCompanyListByCondition" resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectResponse"
  108. parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest" >
  109. SELECT
  110. a.project_code AS projectCode,
  111. a.project_name AS projectName,
  112. a.province AS province,
  113. a.city AS city,
  114. a.district AS district,
  115. a.num AS num,
  116. a.actual_num AS actualNum,
  117. a.address AS address,
  118. a.start_date AS startDate,
  119. a.end_date AS endDate,
  120. b.name AS contactName,
  121. b.telephone AS contactTelephone
  122. FROM project a,
  123. property_contact b
  124. WHERE a.pp_contact_id = b.id
  125. <if test="request.ppCompanyId!=null and request.ppCompanyId!=''">
  126. AND a.pp_company_id = #{request.ppCompanyId,jdbcType=BIGINT}
  127. </if>
  128. <!--查询项目状态为2:服务中的项目-->
  129. <if test="request.projectStatus!=null and request.projectStatus!='' and request.projectStatus == 2">
  130. AND a.project_status = #{request.projectStatus,jdbcType=TINYINT}
  131. </if>
  132. <!--查询项目状态为3、4:停止服务和逾期的项目-->
  133. <if test="request.projectStatus!=null and request.projectStatus!='' and request.projectStatus == 4">
  134. AND (a.project_status = 3 or a.project_status = 4)
  135. </if>
  136. </select>
  137. <select id="queryProjectListByIdList" parameterType="java.util.List"
  138. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenancePlanPrintResponse">
  139. SELECT p.id AS projectId,
  140. p.project_name AS projectName,
  141. p.project_code AS projectCode,
  142. p.mt_company_id AS mtCompanyId,
  143. mc.name AS mtCompanyName,
  144. pc.name AS ppCompanyName
  145. FROM project p
  146. LEFT JOIN maintenance_company mc ON p.mt_company_id = mc.id
  147. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  148. WHERE p.id IN
  149. <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
  150. #{id}
  151. </foreach>
  152. </select>
  153. <!--app端 根据公司id查询公司下项目列表 -->
  154. <select id="findListByCompanyId" parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
  155. resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectCompanyResponse">
  156. SELECT
  157. p.id AS projectId,
  158. p.project_code AS projectCode,
  159. p.project_name AS projectName,
  160. p.project_usage AS projectUsage,
  161. p.actual_num AS actualNum,
  162. p.project_status AS projectStatus
  163. FROM project p
  164. WHERE 1=1
  165. <if test="request.mtCompanyId!=null and request.mtCompanyId!=''">
  166. AND p.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  167. </if>
  168. <if test="request.projectName!=null and request.projectName!=''">
  169. AND p.project_name LIKE CONCAT('%',#{request.projectName,jdbcType=VARCHAR},'%')
  170. </if>
  171. </select>
  172. <!--app端 根据项目id查询项目下电梯列表 -->
  173. <select id="findListByProjectId" parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
  174. resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectLiftResponse">
  175. SELECT
  176. l.id AS id,
  177. l.registration_code AS registrationCode,
  178. l.lift_code AS liftCode,
  179. lb.name AS liftBrand,
  180. l.lift_type AS liftType,
  181. l.use_company_code AS useCompanyCode
  182. FROM project_lift_relevance plr
  183. LEFT JOIN lift l ON plr.lift_id = l.id
  184. LEFT JOIN lift_brand lb ON l.lift_brand = lb.code
  185. WHERE 1=1
  186. <if test="request.id!=null and request.id!=''">
  187. AND plr.project_id = #{request.id,jdbcType=BIGINT}
  188. </if>
  189. <if test="request.registrationCode!=null and request.registrationCode!=''">
  190. AND l.registration_code LIKE CONCAT('%',#{request.registrationCode,jdbcType=VARCHAR},'%')
  191. </if>
  192. </select>
  193. <!--app端 根据项目id查询项目详情 -->
  194. <select id="findProjectById" parameterType="java.lang.Long"
  195. resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectDetailResponse">
  196. SELECT t.*,
  197. ui.name AS clerkName,
  198. pcc.name AS companyContact,
  199. pcc.telephone AS telephone
  200. FROM (SELECT p.project_name AS projectName,
  201. p.project_usage AS projectUsage,
  202. p.address AS address,
  203. p.actual_num AS actualNum,
  204. p.num As num,
  205. p.province AS province,
  206. p.city AS city,
  207. p.district AS district,
  208. p.start_date AS startDate,
  209. p.end_date AS endDate,
  210. pc.name AS companyName,
  211. ui.name AS areaDirector,
  212. r.area_name AS areaName,
  213. r.clerk AS clerk_id,
  214. r.id AS regionId,
  215. p.pp_contact_id AS contact_id
  216. FROM project p
  217. LEFT JOIN region r ON p.region_id = r.id
  218. LEFT JOIN user_info ui ON r.user_id = ui.user_id
  219. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  220. WHERE 1=1
  221. <if test="id!=null and id!=''">
  222. AND p.id = #{id,jdbcType=BIGINT}
  223. </if>
  224. ) t
  225. LEFT JOIN property_contact pcc ON t.contact_id = pcc.id
  226. LEFT JOIN user_info ui ON ui.user_id = t.clerk_id
  227. </select>
  228. <select id="findProjectByIdAndCompanyId" parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
  229. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenancePlanPrintResponse">
  230. SELECT p.id AS projectId,
  231. p.mt_company_id AS mtCompanyId,
  232. p.project_name AS projectName,
  233. p.project_code AS projectCode,
  234. pc.name AS ppCompanyName,
  235. mc.name AS mtCompanyName
  236. FROM project p
  237. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  238. LEFT JOIN maintenance_company mc ON p.mt_company_id = mc.id
  239. WHERE p.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  240. AND p.id = #{request.id,jdbcType=BIGINT}
  241. </select>
  242. <select id="exportList" resultType="java.util.Map" parameterType="java.util.List">
  243. SELECT project_code AS projectCode,
  244. project_name AS projectName,
  245. province AS province,
  246. city AS city,
  247. district AS district,
  248. num AS num,
  249. actual_num AS actualNum,
  250. address AS address,
  251. DATE_FORMAT(start_date,'%Y-%m-%d') AS startDate,
  252. DATE_FORMAT(end_date,'%Y-%m-%d') AS endDate
  253. FROM project
  254. <where>
  255. <if test="exportList != null and exportList.size > 0">
  256. id IN
  257. <foreach collection="exportList" item="id" open="(" separator="," close=")">
  258. #{id}
  259. </foreach>
  260. </if>
  261. </where>
  262. </select>
  263. <select id="exportLiftList" resultType="java.util.Map" parameterType="java.util.List">
  264. SELECT p.project_name AS projectName,
  265. l.registration_code AS registrationCode,
  266. if(l.lift_type = 1, '直梯', '扶梯') AS liftType,
  267. l.device_position AS devicePosition,
  268. lb.name AS liftBrand,
  269. l.annual_inspection_date AS annualInspectionDate,
  270. CASE pclr.lift_company_status
  271. WHEN '1' THEN '停保'
  272. WHEN '2' THEN '正常'
  273. WHEN '3' THEN '保养中'
  274. WHEN '4' THEN '维修中'
  275. WHEN '5' THEN '年检中'
  276. WHEN '6' THEN '大修中'
  277. END AS liftStatus,
  278. ui.name AS workerName
  279. FROM project_lift_relevance plr
  280. LEFT JOIN project p ON plr.project_id = p.id
  281. LEFT JOIN lift l ON plr.lift_id = l.id
  282. LEFT JOIN lift_brand lb ON l.lift_brand = lb.code
  283. LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
  284. LEFT JOIN platform_company_lift_relevance pclr ON plr.lift_id = pclr.lift_id AND pclr.id = plr.relevance_id
  285. <where>
  286. <if test="exportLiftList != null and exportLiftList.size > 0">
  287. plr.project_id IN
  288. <foreach collection="exportLiftList" item="id" open="(" separator="," close=")">
  289. #{id}
  290. </foreach>
  291. </if>
  292. </where>
  293. </select>
  294. </mapper>