ProjectMapper.xml 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  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.management.platform.mapper.ProjectMapper">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="BaseResultMap" type="com.management.platform.entity.Project">
  6. <id column="id" property="id" />
  7. <result column="project_name" property="projectName" />
  8. <result column="company_id" property="companyId" />
  9. <result column="project_code" property="projectCode" />
  10. <result column="incharger_id" property="inchargerId" />
  11. <result column="plan_start_date" property="planStartDate" />
  12. <result column="plan_end_date" property="planEndDate" />
  13. <result column="progress" property="progress" />
  14. <result column="level" property="level" />
  15. <result column="status" property="status" />
  16. <result column="finish_date" property="finishDate" />
  17. <result column="creator_id" property="creatorId" />
  18. <result column="creator_name" property="creatorName" />
  19. <result column="create_date" property="createDate" />
  20. <result column="contract_amount" property="contractAmount" />
  21. <result column="budget" property="budget" />
  22. <result column="base_man" property="baseMan" />
  23. <result column="base_outsourcing" property="baseOutsourcing" />
  24. <result column="base_risk1" property="baseRisk1" />
  25. <result column="base_risk2" property="baseRisk2" />
  26. <result column="base_fee" property="baseFee" />
  27. <result column="fee_normal" property="feeNormal" />
  28. <result column="fee_travel" property="feeTravel" />
  29. <result column="fee_outsourcing" property="feeOutsourcing" />
  30. <result column="fee_man" property="feeMan" />
  31. <result column="customer_id" property="customerId" />
  32. <result column="customer_name" property="customerName" />
  33. <result column="is_public" property="isPublic" />
  34. <result column="associate_degrees" property="associateDegrees" />
  35. <result column="associate_degree_names" property="associateDegreeNames" />
  36. <result column="task_gp_incharge" property="taskGpIncharge" />
  37. <result column="category" property="category" />
  38. <result column="category_name" property="categoryName" />
  39. <result column="project_desc" property="projectDesc" />
  40. </resultMap>
  41. <!-- 通用查询结果列 -->
  42. <sql id="Base_Column_List">
  43. id, project_name, company_id, project_code, incharger_id, plan_start_date, plan_end_date, progress, level, status, finish_date, creator_id, creator_name, create_date, contract_amount, budget, base_man, base_outsourcing, base_risk1, base_risk2, base_fee, fee_normal, fee_travel, fee_outsourcing, fee_man, customer_id, customer_name, is_public, associate_degrees, associate_degree_names, task_gp_incharge, category, category_name, project_desc
  44. </sql>
  45. <resultMap id="BaseResultMap2" type="com.management.platform.entity.vo.ProjectWithStage">
  46. <result column="id" property="id" />
  47. <result column="project_name" property="projectName" />
  48. <result column="project_code" property="projectCode" />
  49. <collection property="stageCostList" javaType="java.util.ArrayList"
  50. ofType="com.management.platform.entity.vo.StageCost"
  51. select="selectStageSum" column="projectId=id"></collection>
  52. </resultMap>
  53. <resultMap id="CustomerResultMap" type="com.management.platform.entity.vo.CustomerProject" >
  54. <result column="customer_id" property="customerId" />
  55. <result column="customer_name" property="customerName" />
  56. <result column="contract_amount" property="contractAmount" />
  57. <result column="fee_normal" property="feeNormal" />
  58. <result column="fee_travel" property="feeTravel" />
  59. <result column="fee_outsourcing" property="feeOutsourcing" />
  60. <result column="fee_man" property="feeMan" />
  61. <result column="project_num" property="projectNum" />
  62. <result column="project_ids" property="projectIds" />
  63. <result column="project_names" property="projectNames" />
  64. </resultMap>
  65. <select id="selectWithStage" resultMap="BaseResultMap2" >
  66. select id, project_code, project_name from project
  67. where company_id = #{companyId}
  68. <if test="projectId != null">
  69. and id = #{projectId}
  70. </if>
  71. order by is_public desc, id asc
  72. <if test="startIndex != null">
  73. limit ${startIndex}, ${endIndex}
  74. </if>
  75. </select>
  76. <select id="selectStageSum" resultType="com.management.platform.entity.vo.StageCost">
  77. select IFNULL(report.stage, '-') AS stage_name, IFNULL(SUM(report.`cost`),0) AS cost,
  78. IFNULL(SUM(report.`working_time`), 0) AS working_time
  79. FROM report where report.state = 1 and report.`project_id` = #{projectId}
  80. GROUP BY report.stage
  81. </select>
  82. <!--获取查询者所在公司每个项目的工时成本-->
  83. <select id="getParticipatedProject" resultType="java.util.Map">
  84. SELECT id, project_code AS projectCode, project_name AS projectName, status, task_gp_incharge as taskGpIncharge, project_desc as projectDesc
  85. FROM project
  86. WHERE id IN (
  87. SELECT project_id
  88. FROM participation
  89. WHERE user_id = #{userId}
  90. ) or incharger_id = #{userId}
  91. or creator_id = #{userId}
  92. or (is_public = 1 and company_id = #{companyId})
  93. ORDER BY is_public DESC, id DESC
  94. </select>
  95. <select id="getOnlyJoinProjects" resultType="java.util.Map">
  96. SELECT id, project_code AS projectCode, project_name AS projectName, status, task_gp_incharge as taskGpIncharge, project_desc as projectDesc
  97. FROM project
  98. WHERE id IN (
  99. SELECT project_id
  100. FROM participation
  101. WHERE user_id = #{userId}
  102. )
  103. or (is_public = 1 and company_id = #{companyId})
  104. ORDER BY is_public DESC, id DESC
  105. </select>
  106. <!--获取查询者所在公司每个项目的工时成本-->
  107. <select id="getTimeCost" resultType="java.util.Map">
  108. SELECT a.id, a.project_code as projectCode, a.project_name AS project, SUM(b.working_time) AS cost, SUM(b.cost) AS costMoney,a.category_name as categoryName
  109. FROM project AS a
  110. LEFT JOIN report AS b ON b.project_id = a.id
  111. JOIN user AS c ON b.creator_id = c.id
  112. WHERE a.company_id = #{companyId}
  113. <if test="projectId != null">
  114. AND a.id = #{projectId}
  115. </if>
  116. <if test="userId != null">
  117. AND b.creator_id = #{userId}
  118. </if>
  119. <if test="startDate != null and endDate != null">
  120. AND b.create_date between #{startDate} and #{endDate}
  121. </if>
  122. AND b.state = 1
  123. GROUP BY a.id
  124. ORDER BY a.id ASC
  125. </select>
  126. <!--获取自定义数值的项目统计 -->
  127. <select id="getCustomDataSum" resultType="java.util.Map">
  128. SELECT a.id, a.project_code as projectCode, a.project_name AS project, IFNULL(SUM(b.custom_data), 0) AS cost
  129. FROM project AS a
  130. LEFT JOIN report AS b ON b.project_id = a.id
  131. JOIN user AS c ON b.creator_id = c.id
  132. WHERE a.company_id = #{companyId}
  133. <if test="projectId != null">
  134. AND a.id = #{projectId}
  135. </if>
  136. <if test="userId != null">
  137. AND b.creator_id = #{userId}
  138. </if>
  139. <if test="startDate != null and endDate != null">
  140. AND b.create_date between #{startDate} and #{endDate}
  141. </if>
  142. AND b.state = 1
  143. GROUP BY a.id
  144. ORDER BY SUM(b.custom_data) DESC
  145. </select>
  146. <!--获取日报的人员月度工时 -->
  147. <select id="getTimeCostReport" resultType="java.util.Map">
  148. SELECT a.working_time as cost, b.id as projectId, b.project_name AS project, a.creator_id as creatorId
  149. FROM report AS a
  150. LEFT JOIN project AS b ON a.project_id = b.id
  151. LEFT JOIN user AS c ON a.creator_id = c.id
  152. WHERE b.company_id = #{companyId}
  153. <if test="projectId != null">
  154. AND b.id = #{projectId}
  155. </if>
  156. <if test="startDate != null and endDate != null">
  157. AND a.create_date between #{startDate} and #{endDate}
  158. </if>
  159. AND a.state = 1
  160. </select>
  161. <!--获取人员的月度总工时 -->
  162. <select id="getUserMonthTimeCost" resultType="java.util.Map">
  163. SELECT a.creator_id as creatorId, sum(a.working_time) as cost
  164. FROM report AS a, user as b
  165. WHERE a.creator_id = b.id
  166. and b.company_id = #{companyId}
  167. <if test="startDate != null and endDate != null">
  168. AND a.create_date between #{startDate} and #{endDate}
  169. </if>
  170. AND a.state = 1
  171. group by a.creator_id
  172. </select>
  173. <!--获取某个项目每个人分别需要的工时-->
  174. <select id="getProjectCost" resultType="java.util.Map">
  175. SELECT b.id as creatorId,a.project_id as projectId, b.name,a.dept_id as deptId, IFNULL(department.department_name, '未分配') as departmentName, SUM(a.working_time) AS cost, SUM(a.cost) AS costMoney
  176. FROM report AS a
  177. JOIN user AS b ON a.creator_id = b.id
  178. left join department on department.department_id = a.dept_id
  179. WHERE a.company_id=#{companyId} and a.state = 1
  180. <if test="projectId != null">
  181. and a.project_id = #{projectId}
  182. </if>
  183. <if test="startDate != null and endDate != null">
  184. AND a.create_date between #{startDate} and #{endDate}
  185. </if>
  186. <if test="userId != null">
  187. AND a.creator_id = #{userId}
  188. </if>
  189. GROUP BY b.id, a.dept_id
  190. ORDER BY b.id ASC, a.dept_id ASC
  191. </select>
  192. <!--获取个人每个项目分别需要的工时-->
  193. <select id="getProjectCostGroupByProject" resultType="java.util.Map">
  194. SELECT b.id as creatorId,a.creator_id as creatorId,a.project_id as projectId, b.name,a.dept_id as deptId, IFNULL(department.department_name, '未分配') as departmentName, SUM(a.working_time) AS cost, SUM(a.cost) AS costMoney
  195. FROM report AS a
  196. JOIN user AS b ON a.creator_id = b.id
  197. left join department on department.department_id = a.dept_id
  198. WHERE a.company_id=#{companyId} and a.state = 1
  199. <if test="projectId != null">
  200. and a.project_id = #{projectId}
  201. </if>
  202. <if test="startDate != null and endDate != null">
  203. AND a.create_date between #{startDate} and #{endDate}
  204. </if>
  205. GROUP BY b.id, a.dept_id,a.project_id
  206. ORDER BY b.id ASC, a.dept_id ASC
  207. </select>
  208. <!-- 获取人员在日报填写的自定义数值 -->
  209. <select id="getProjectCusDataSumItem" resultType="java.util.Map">
  210. SELECT b.id as creatorId,
  211. b.name,department.department_name as departmentName, IFNULL(SUM(a.custom_data),0) AS cost
  212. FROM report AS a
  213. JOIN user AS b ON a.creator_id = b.id
  214. left join department on department.department_id = b.department_id
  215. WHERE a.state = 1 and b.company_id = #{companyId} and a.custom_data &lt;&gt; 0
  216. <if test="startDate != null and endDate != null">
  217. AND a.create_date between #{startDate} and #{endDate}
  218. </if>
  219. <if test="projectId != null">
  220. AND a.project_id = #{projectId}
  221. </if>
  222. <if test="userId != null">
  223. AND a.creator_id = #{userId}
  224. </if>
  225. group by b.id
  226. ORDER BY b.id ASC
  227. </select>
  228. <select id="getProjectCusDataDetailItem" resultType="java.util.Map">
  229. SELECT b.id as creatorId,project.project_code as projectCode, project.project_name as projectName,
  230. b.name,department.department_name as departmentName, IFNULL(a.custom_data,0) AS cost, a.create_date as createDate
  231. FROM report AS a
  232. JOIN user AS b ON a.creator_id = b.id
  233. left join department on department.department_id = b.department_id
  234. left join project on project.id = a.project_id
  235. WHERE a.state = 1 and b.company_id = #{companyId} and a.custom_data &lt;&gt; 0
  236. <if test="startDate != null and endDate != null">
  237. AND a.create_date between #{startDate} and #{endDate}
  238. </if>
  239. <if test="projectId != null">
  240. AND a.project_id = #{projectId}
  241. </if>
  242. <if test="userId != null">
  243. AND a.creator_id = #{userId}
  244. </if>
  245. ORDER BY a.create_date desc
  246. </select>
  247. <!--按照项目内的阶段名称分组统计工时-->
  248. <select id="getCostInStage" resultType="java.util.Map">
  249. SELECT IFNULL(a.stage, "未分配") as name, SUM(a.working_time) AS cost, SUM(a.cost) AS costMoney
  250. FROM report AS a
  251. WHERE a.project_id = #{projectId}
  252. AND a.state = 1
  253. <if test="startDate != null and endDate != null">
  254. AND a.create_date between #{startDate} and #{endDate}
  255. </if>
  256. GROUP BY a.stage
  257. ORDER BY a.stage ASC
  258. </select>
  259. <!--获取全部人员工时 -->
  260. <select id="getAllMembCost" resultType="java.util.Map">
  261. SELECT b.name, SUM(a.working_time) AS cost, SUM(a.cost) AS costMoney
  262. FROM user AS b
  263. left JOIN report AS a ON a.creator_id = b.id
  264. WHERE a.state = 1
  265. and b.company_id = #{companyId}
  266. <if test="startDate != null and endDate != null">
  267. AND a.create_date between #{startDate} and #{endDate}
  268. </if>
  269. <if test="projectId != null">
  270. AND a.project_id = #{projectId}
  271. </if>
  272. GROUP BY b.id
  273. ORDER BY b.id ASC
  274. </select>
  275. <!--分页获取项目成本 -->
  276. <select id="getAllProjectCost" resultMap="BaseResultMap">
  277. SELECT id, project_code, project_name,
  278. (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS fee_man,
  279. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 0 and expense_sheet.status = 0) AS fee_normal,
  280. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 1 and expense_sheet.status = 0) AS fee_travel,
  281. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0) AS fee_outsourcing
  282. FROM project WHERE project.`company_id` = #{companyId}
  283. and (project.status &lt;&gt; 3 or project.status is null)
  284. <if test="projectId != null">
  285. and project.id = #{projectId}
  286. </if>
  287. order by project.is_public desc, project.id asc
  288. <if test="pageStart != null and pageSize != null">
  289. LIMIT #{pageStart},#{pageSize}
  290. </if>
  291. </select>
  292. <!--分页获取项目收支平衡 -->
  293. <select id="getProjectInAndOut" resultMap="BaseResultMap">
  294. SELECT project_code, project_name,contract_amount,
  295. (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS fee_man,
  296. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 0 and expense_sheet.status = 0) AS fee_normal,
  297. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 1 and expense_sheet.status = 0) AS fee_travel,
  298. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0) AS fee_outsourcing
  299. FROM project WHERE project.`company_id` = #{companyId}
  300. and (project.status &lt;&gt; 3 or project.status is null)
  301. <if test="projectId != null">
  302. and project.id = #{projectId}
  303. </if>
  304. order by is_public desc, id asc
  305. <if test="pageStart != null and pageSize != null">
  306. LIMIT #{pageStart},#{pageSize}
  307. </if>
  308. </select>
  309. <!--分页获取客户项目的成本利润报表 -->
  310. <select id="getCustomerProjectInAndOut" resultMap="CustomerResultMap">
  311. SELECT customer_id, customer_name, COUNT(1) AS project_num, GROUP_CONCAT( project.id) AS project_ids, GROUP_CONCAT( project_name) AS project_names,
  312. SUM(contract_amount) AS contract_amount ,
  313. SUM((SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id)) AS fee_man,
  314. SUM((SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 0 and expense_sheet.status = 0)) AS fee_normal,
  315. SUM((SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 1 and expense_sheet.status = 0)) AS fee_travel,
  316. SUM((SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0)) AS fee_outsourcing
  317. FROM project WHERE project.`company_id` = #{companyId} AND customer_id > 0
  318. AND (project.status &lt;&gt; 3 OR project.status IS NULL)
  319. GROUP BY customer_id
  320. <if test="pageStart != null and pageSize != null">
  321. LIMIT #{pageStart},#{pageSize}
  322. </if>
  323. </select>
  324. <select id="getCustomerProjectInAndOutCount" resultType="java.lang.Integer">
  325. SELECT COUNT(DISTINCT customer_id) FROM project WHERE project.`company_id` = #{companyId} AND customer_id > 0
  326. AND (project.status &lt;&gt; 3 OR project.status IS NULL)
  327. </select>
  328. <!--分页获取项目收支平衡 -->
  329. <select id="getProjectInAndOutByRange" resultMap="CustomerResultMap">
  330. SELECT project.id as id, project.id as project_ids, project_code, project_name as project_names,contract_amount,
  331. (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS fee_man,
  332. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 0 and expense_sheet.status = 0) AS fee_normal,
  333. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 1 and expense_sheet.status = 0) AS fee_travel,
  334. (SELECT IFNULL(SUM(amount),0) FROM expense_item , expense_sheet WHERE project_id = project.id AND expense_sheet.id = expense_item.`expense_id` AND expense_sheet.type = 2 and expense_sheet.status = 0) AS fee_outsourcing
  335. FROM project WHERE project.`company_id` = #{companyId}
  336. and id IN <foreach collection="ids" close=")" open="(" separator="," index="" item="item">
  337. #{item}
  338. </foreach>
  339. </select>
  340. <select id="getGanttData" resultType="java.util.Map">
  341. SELECT participation.`user_id`, user.`name`,project.id, project.`project_name`, project.`plan_start_date` as start_date, project.`plan_end_date`,
  342. TIMESTAMPDIFF(DAY,project.`plan_start_date`, project.`plan_end_date`) AS duration FROM participation
  343. LEFT JOIN user ON user.id = participation.`user_id`
  344. LEFT JOIN project ON project.`id` = participation.`project_id`
  345. WHERE participation.`user_id` IN
  346. <foreach collection="userIds" close=")" open="(" separator="," index="" item="item">
  347. #{item}
  348. </foreach>
  349. AND project.`status` = 1 and project.plan_start_date is not null and project.plan_end_date is not null
  350. ORDER BY participation.user_id, project.`plan_start_date`
  351. </select>
  352. <select id="getTaskPlanByMemb" resultType="java.util.Map">
  353. SELECT user.`id` as user_id, user.`name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,task_executor.id as exe_id,
  354. IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task_executor.plan_hours as duration FROM user
  355. LEFT JOIN task_executor ON user.id = task_executor.`executor_id`
  356. left join task on task.id = task_executor.task_id
  357. LEFT JOIN project ON project.`id` = task.`project_id`
  358. WHERE user.`id` IN
  359. <foreach collection="userIds" close=")" open="(" separator="," index="" item="item">
  360. #{item}
  361. </foreach>
  362. and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
  363. and task.end_date is not null
  364. AND project.`status` = 1
  365. ORDER BY user.id, task.start_date
  366. </select>
  367. <select id="getTaskPlanByProject" resultType="java.util.Map">
  368. SELECT task.executor_id as user_id, task.executor_name as `name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,
  369. IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task.plan_hours as duration FROM project
  370. LEFT JOIN task ON task.project_id = project.id
  371. WHERE project.company_id = #{companyId}
  372. <if test="projectIds != null">
  373. and project.`id` IN
  374. <foreach collection="projectIds" close=")" open="(" separator="," index="" item="item">
  375. #{item}
  376. </foreach>
  377. </if>
  378. and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
  379. and task.end_date is not null
  380. AND project.`status` = 1
  381. ORDER BY project.id, task.start_date
  382. </select>
  383. <!--获取加班统计报表 -->
  384. <!-- <select id="getOvertimeList" resultType="java.util.Map">-->
  385. <!-- SELECT report.`creator_id` AS userId, user.`name` AS username, SUM(report.`working_time`) AS workingTime,-->
  386. <!-- IFNULL(SUM(report.`overtime_hours`),0) AS overtimeHours,-->
  387. <!-- group_concat(distinct(project.project_code)) as projectCode,-->
  388. <!-- IFNULL(SUM(report.overtime_cost), 0) AS cost FROM report LEFT JOIN user ON user.id = report.`creator_id`-->
  389. <!-- left join project on project.id = report.project_id-->
  390. <!-- WHERE report.is_overtime = 1-->
  391. <!-- and report.`state` = 1-->
  392. <!-- AND report.`create_date` BETWEEN #{startDate} and #{endDate}-->
  393. <!-- AND user.`company_id` = #{companyId}-->
  394. <!-- <if test="projectId != null">-->
  395. <!-- AND report.`project_id` = #{projectId}-->
  396. <!-- </if>-->
  397. <!-- <if test="userId != null">-->
  398. <!-- AND report.`creator_id` = #{userId}-->
  399. <!-- </if>-->
  400. <!-- GROUP BY report.creator_id-->
  401. <!-- </select>-->
  402. <!-- 获取某个员工的某时间段内的加班详情 -->
  403. <select id="getOvertimeDetail" resultType="java.util.Map">
  404. SELECT date_format(report.`create_date`, '%Y-%m-%d') AS createDate,
  405. report.`creator_id` AS userId, user.`name` AS username, report.`working_time` AS workingTime,
  406. IFNULL(report.`overtime_hours`, 0) AS overtimeHours,
  407. project.project_name as projectName,project.project_code as projectCode,
  408. IFNULL(report.overtime_cost, 0) AS cost,
  409. IFNULL(report_extra_degree.name,'') as degreeName, department.department_name as departmentName FROM report LEFT JOIN user ON user.id = report.`creator_id`
  410. left join project on project.id = report.project_id
  411. left join report_extra_degree on report_extra_degree.id = report.degree_id
  412. left join department on department.department_id = report.dept_id
  413. WHERE report.is_overtime = 1
  414. and report.`state` = 1
  415. AND report.`create_date` BETWEEN #{startDate} and #{endDate}
  416. AND user.`company_id` = #{companyId}
  417. <if test="projectId != null">
  418. AND report.`project_id` = #{projectId}
  419. </if>
  420. <if test="userId != null">
  421. AND report.`creator_id` = #{userId}
  422. </if>
  423. order by user.create_time asc, report.create_date desc
  424. </select>
  425. <!--按照项目内的阶段名称分组统计工时-->
  426. <select id="getDegreeCost" resultType="java.util.Map">
  427. SELECT IFNULL(b.name, "未分配") as name, SUM(a.working_time) AS cost, SUM(a.cost) AS costMoney
  428. FROM report AS a
  429. left join report_extra_degree b on b.id = a.degree_id
  430. WHERE
  431. a.state = 1
  432. and a.company_id = #{companyId}
  433. <if test="projectId != null">
  434. and a.project_id = #{projectId}
  435. </if>
  436. <if test="startDate != null and endDate != null">
  437. AND a.create_date between #{startDate} and #{endDate}
  438. </if>
  439. GROUP BY a.degree_id
  440. ORDER BY a.degree_id ASC
  441. </select>
  442. <!--项目导出数据-->
  443. <select id="getExportData" resultType="java.util.HashMap" >
  444. SELECT project.id, project_name, project_code,category_name,is_public,plan_start_date, d.name AS incharger_name,GROUP_CONCAT(u.name) AS participators,
  445. plan_end_date, progress, LEVEL, STATUS, finish_date, creator_id, creator_name, create_date, contract_amount,
  446. customer_name, associate_degree_names
  447. FROM project LEFT JOIN sub_project ON sub_project.id = project.`id`
  448. LEFT JOIN participation c ON c.project_id = project.`id`
  449. LEFT JOIN user u ON u.id = c.user_id
  450. LEFT JOIN user d ON d.id = project.`incharger_id`
  451. WHERE project.`company_id` = #{companyId}
  452. <if test="userId != null" >
  453. and (project.creator_id = #{userId} or c.user_id = #{userId})
  454. </if>
  455. GROUP BY project.id
  456. </select>
  457. <!--分页获取项目工时成本预警表 -->
  458. <select id="getProjectCostAlarm" resultType="java.util.HashMap">
  459. SELECT project.id, project.`project_code` as projectCode, project.`project_name` as projectName,(SELECT IFNULL(SUM(base_amount), 0) FROM project_currentcost
  460. WHERE base_id IN(SELECT id FROM project_basecost_setting WHERE company_id=#{companyId})
  461. AND project_id=project.id) AS cur_cost, (SELECT IFNULL(SUM(base_amount), 0) FROM project_currentcost
  462. WHERE base_id IN(SELECT id FROM project_basecost_setting WHERE company_id=#{companyId} AND alarm_type = 1)
  463. AND project_id=project.id) AS costLimit,
  464. (SELECT IFNULL(SUM(cost),0) FROM report WHERE state = 1 AND project_id = project.id) AS feeMan
  465. FROM project WHERE company_id=#{companyId}
  466. and (project.status &lt;&gt; 3 or project.status is null)
  467. <if test="projectId != null">
  468. and project.id = #{projectId}
  469. </if>
  470. <if test="pageStart != null and pageSize != null">
  471. LIMIT #{pageStart},#{pageSize}
  472. </if>
  473. </select>
  474. <select id="getBaseCostAndRealCost" resultType="java.util.HashMap">
  475. SELECT project.id,project_code as projectCode, project.`project_name` as projectName,
  476. (SELECT IFNULL(SUM(base_amount), 0) FROM project_currentcost LEFT JOIN project_basecost_setting
  477. ON project_basecost_setting.id = project_currentcost.`base_id` WHERE alarm_type=1 AND company_id=#{companyId} AND project_currentcost.`project_id`=project.id) AS baseCurcost,
  478. (SELECT IFNULL(SUM(cost), 0) FROM report WHERE report.`company_id` = #{companyId} AND project_id = project.id AND state=1 AND basecost_id >0) AS feeMan
  479. FROM project WHERE (STATUS &lt;&gt; 3 OR project.status IS NULL) AND company_id=#{companyId}
  480. <if test="projectId != null">
  481. and project.id = #{projectId}
  482. </if>
  483. <if test="pageStart != null and pageSize != null">
  484. LIMIT #{pageStart},#{pageSize}
  485. </if>
  486. </select>
  487. </mapper>