ProjectMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  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. p.actual_num 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. WHERE plr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  75. GROUP BY project_id) plr ON plr.project_id = p.id
  76. WHERE p.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  77. <if test="request.provinceCode!=null and request.provinceCode!=''">
  78. AND p.province_code= #{request.provinceCode,jdbcType=VARCHAR}
  79. </if>
  80. <if test="request.cityCode!=null and request.cityCode!=''">
  81. AND p.city_code = #{request.cityCode,jdbcType=VARCHAR}
  82. </if>
  83. <if test="request.districtCode!=null and request.districtCode!=''">
  84. AND p.district_code = #{request.districtCode,jdbcType=VARCHAR}
  85. </if>
  86. <if test="request.regionId!=null and request.regionId!=''">
  87. AND p.region_id = #{request.regionId,jdbcType=BIGINT}
  88. </if>
  89. <if test="request.userId!=null and request.userId!=''">
  90. AND r.user_id = #{request.userId,jdbcType=BIGINT}
  91. </if>
  92. <if test="request.condition!=null and request.condition!=''">
  93. AND (p.project_name LIKE CONCAT('%',#{request.condition,jdbcType=VARCHAR},'%')
  94. OR p.project_code LIKE CONCAT('%',#{request.condition,jdbcType=VARCHAR},'%')
  95. OR p.address LIKE CONCAT('%',#{request.condition,jdbcType=VARCHAR},'%'))
  96. </if>
  97. <if test="request.projectStatus!=null and request.projectStatus!=''">
  98. AND p.project_status = #{request.projectStatus,jdbcType=VARCHAR}
  99. </if>
  100. ORDER BY p.end_date
  101. </select>
  102. <!-- 根据甲方公司ID和项目状态查询公司项目管理列表-->
  103. <select id="findCompanyListByCondition" resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectResponse"
  104. parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest" >
  105. SELECT
  106. a.project_code AS projectCode,
  107. a.project_name AS projectName,
  108. a.province AS province,
  109. a.city AS city,
  110. a.district AS district,
  111. a.num AS num,
  112. a.actual_num AS actualNum,
  113. a.address AS address,
  114. a.start_date AS startDate,
  115. a.end_date AS endDate,
  116. b.name AS contactName,
  117. b.telephone AS contactTelephone
  118. FROM project a,
  119. property_contact b
  120. WHERE a.pp_contact_id = b.id
  121. <if test="request.ppCompanyId!=null and request.ppCompanyId!=''">
  122. AND a.pp_company_id = #{request.ppCompanyId,jdbcType=BIGINT}
  123. </if>
  124. <!--查询项目状态为2:服务中的项目-->
  125. <if test="request.projectStatus!=null and request.projectStatus!='' and request.projectStatus == 2">
  126. AND a.project_status = #{request.projectStatus,jdbcType=TINYINT}
  127. </if>
  128. <!--查询项目状态为3、4:停止服务和逾期的项目-->
  129. <if test="request.projectStatus!=null and request.projectStatus!='' and request.projectStatus == 4">
  130. AND (a.project_status = 3 or a.project_status = 4)
  131. </if>
  132. </select>
  133. <select id="queryProjectListByIdList" parameterType="java.util.List"
  134. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenancePlanPrintResponse">
  135. SELECT p.id AS projectId,
  136. p.project_name AS projectName,
  137. p.project_code AS projectCode,
  138. p.mt_company_id AS mtCompanyId,
  139. mc.name AS mtCompanyName,
  140. pc.name AS ppCompanyName
  141. FROM project p
  142. LEFT JOIN maintenance_company mc ON p.mt_company_id = mc.id
  143. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  144. WHERE p.id IN
  145. <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
  146. #{id}
  147. </foreach>
  148. </select>
  149. <!--app端 根据公司id查询公司下项目列表 -->
  150. <select id="findListByCompanyId" parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
  151. resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectCompanyResponse">
  152. SELECT
  153. p.id AS projectId,
  154. p.project_code AS projectCode,
  155. p.project_name AS projectName,
  156. p.project_usage AS projectUsage,
  157. p.actual_num AS actualNum,
  158. p.project_status AS projectStatus
  159. FROM project p
  160. WHERE 1=1
  161. <if test="request.mtCompanyId!=null and request.mtCompanyId!=''">
  162. AND p.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  163. </if>
  164. <if test="request.projectName!=null and request.projectName!=''">
  165. AND p.project_name LIKE CONCAT('%',#{request.projectName,jdbcType=VARCHAR},'%')
  166. </if>
  167. </select>
  168. <!--app端 根据项目id查询项目下电梯列表 -->
  169. <select id="findListByProjectId" parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
  170. resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectLiftResponse">
  171. SELECT
  172. l.id AS id,
  173. l.registration_code AS registrationCode,
  174. l.lift_code AS liftCode,
  175. lb.name AS liftBrand,
  176. l.lift_type AS liftType,
  177. l.use_company_code AS useCompanyCode
  178. FROM project_lift_relevance plr
  179. LEFT JOIN lift l ON plr.lift_id = l.id
  180. LEFT JOIN lift_brand lb ON l.lift_brand = lb.code
  181. WHERE 1=1
  182. <if test="request.id!=null and request.id!=''">
  183. AND plr.project_id = #{request.id,jdbcType=BIGINT}
  184. </if>
  185. <if test="request.registrationCode!=null and request.registrationCode!=''">
  186. AND l.registration_code LIKE CONCAT('%',#{request.registrationCode,jdbcType=VARCHAR},'%')
  187. </if>
  188. </select>
  189. <!--app端 根据项目id查询项目详情 -->
  190. <select id="findProjectById" parameterType="java.lang.Long"
  191. resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectDetailResponse">
  192. SELECT t.*,
  193. ui.name AS clerkName,
  194. pcc.name AS companyContact,
  195. pcc.telephone AS telephone
  196. FROM (SELECT p.project_name AS projectName,
  197. p.project_usage AS projectUsage,
  198. p.address AS address,
  199. p.actual_num AS actualNum,
  200. p.num As num,
  201. p.province AS province,
  202. p.city AS city,
  203. p.district AS district,
  204. p.start_date AS startDate,
  205. p.end_date AS endDate,
  206. pc.name AS companyName,
  207. ui.name AS areaDirector,
  208. r.area_name AS areaName,
  209. r.clerk AS clerk_id,
  210. r.id AS regionId,
  211. p.pp_contact_id AS contact_id
  212. FROM project p
  213. LEFT JOIN region r ON p.region_id = r.id
  214. LEFT JOIN user_info ui ON r.user_id = ui.user_id
  215. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  216. WHERE 1=1
  217. <if test="id!=null and id!=''">
  218. AND p.id = #{id,jdbcType=BIGINT}
  219. </if>
  220. ) t
  221. LEFT JOIN property_contact pcc ON t.contact_id = pcc.id
  222. LEFT JOIN user_info ui ON ui.user_id = t.clerk_id
  223. </select>
  224. <select id="findProjectByIdAndCompanyId" parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
  225. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenancePlanPrintResponse">
  226. SELECT p.id AS projectId,
  227. p.mt_company_id AS mtCompanyId,
  228. p.project_name AS projectName,
  229. p.project_code AS projectCode,
  230. pc.name AS ppCompanyName,
  231. mc.name AS mtCompanyName
  232. FROM project p
  233. LEFT JOIN property_company pc ON p.pp_company_id = pc.id
  234. LEFT JOIN maintenance_company mc ON p.mt_company_id = mc.id
  235. WHERE p.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  236. AND p.id = #{request.id,jdbcType=BIGINT}
  237. </select>
  238. <select id="exportList" resultType="java.util.Map" parameterType="java.util.List">
  239. SELECT project_code AS projectCode,
  240. project_name AS projectName,
  241. province AS province,
  242. city AS city,
  243. district AS district,
  244. num AS num,
  245. actual_num AS actualNum,
  246. address AS address,
  247. DATE_FORMAT(start_date,'%Y-%m-%d') AS startDate,
  248. DATE_FORMAT(end_date,'%Y-%m-%d') AS endDate
  249. FROM project
  250. <where>
  251. <if test="exportList != null and exportList.size > 0">
  252. id IN
  253. <foreach collection="exportList" item="id" open="(" separator="," close=")">
  254. #{id}
  255. </foreach>
  256. </if>
  257. </where>
  258. </select>
  259. <select id="exportLiftList" resultType="java.util.Map" parameterType="java.util.List">
  260. SELECT p.project_name AS projectName,
  261. l.registration_code AS registrationCode,
  262. if(l.lift_type = 1, '直梯', '扶梯') AS liftType,
  263. l.device_position AS devicePosition,
  264. lb.name AS liftBrand,
  265. l.annual_inspection_date AS annualInspectionDate,
  266. CASE pclr.lift_company_status
  267. WHEN '1' THEN '停保'
  268. WHEN '2' THEN '正常'
  269. WHEN '3' THEN '保养中'
  270. WHEN '4' THEN '维修中'
  271. WHEN '5' THEN '年检中'
  272. WHEN '6' THEN '大修中'
  273. END AS liftStatus,
  274. ui.name AS workerName
  275. FROM project_lift_relevance plr
  276. LEFT JOIN project p ON plr.project_id = p.id
  277. LEFT JOIN lift l ON plr.lift_id = l.id
  278. LEFT JOIN lift_brand lb ON l.lift_brand = lb.code
  279. LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
  280. LEFT JOIN platform_company_lift_relevance pclr ON plr.lift_id = pclr.lift_id AND pclr.id = plr.relevance_id
  281. <where>
  282. <if test="exportLiftList != null and exportLiftList.size > 0">
  283. plr.project_id IN
  284. <foreach collection="exportLiftList" item="id" open="(" separator="," close=")">
  285. #{id}
  286. </foreach>
  287. </if>
  288. </where>
  289. </select>
  290. </mapper>