OvertimeStatsMinidaoDao_deptOvertimeStatsData.sql 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. SELECT
  2. yearmonth,
  3. pjtId,
  4. deptId,
  5. pmId,
  6. overtimeDuration - Atimeout - Anational - Aspecial + Btimeout + Bnational + Bspecial overtimeDuration,
  7. deptPeopleTotal,
  8. CONVERT(overtimeFee - AtimeoutPrice - AnationalPrice - AspecialPrice + BtimeoutPrice + BnationalPrice + BspecialPrice, DECIMAL (10, 2)) overtimeFee
  9. FROM
  10. (SELECT
  11. c.*,
  12. (
  13. SELECT
  14. SUM(IFNULL(datum_date, 0))
  15. FROM
  16. t_bus_user_attendance_detail
  17. WHERE
  18. borrowstatus = '1' AND
  19. borrowspid = c.pjtId AND
  20. borrowsdepartid = c.deptId AND
  21. DATE_FORMAT(ymd_date, "%Y-%m") = :params.yearmonth
  22. ) Bdatum,
  23. (
  24. SELECT
  25. IFNULL(SUM(timeout_overtime_duration), 0)
  26. FROM
  27. t_bus_user_attendance_detail
  28. WHERE
  29. borrowstatus = '1' AND
  30. borrowspid = c.pjtId AND
  31. borrowsdepartid = c.deptId AND
  32. DATE_FORMAT(ymd_date, "%Y-%m") = :params.yearmonth
  33. ) Btimeout,
  34. (
  35. SELECT
  36. IFNULL(SUM(national_overtime_duration), 0)
  37. FROM
  38. t_bus_user_attendance_detail
  39. WHERE
  40. borrowstatus = '1' AND
  41. borrowspid = c.pjtId AND
  42. borrowsdepartid = c.deptId AND
  43. DATE_FORMAT(ymd_date, "%Y-%m") = :params.yearmonth
  44. ) Bnational,
  45. (
  46. SELECT
  47. IFNULL(SUM(special_overtime), 0)
  48. FROM
  49. t_bus_user_attendance_detail
  50. WHERE
  51. borrowstatus = '1' AND
  52. borrowspid = c.pjtId AND
  53. borrowsdepartid = c.deptId AND
  54. DATE_FORMAT(ymd_date, "%Y-%m") = :params.yearmonth
  55. ) Bspecial,
  56. (
  57. SELECT
  58. IFNULL(SUM(CONVERT(:params.basepay / (8 * 21.75), DECIMAL (10, 3)) * IFNULL(bos.multiple, 0) * (IFNULL(uad.timeout_overtime_duration, 0) / 60)), 0)
  59. FROM
  60. t_bus_user_attendance_detail uad
  61. LEFT JOIN t_bus_user_attendance_total uat ON uad.attendance_id = uat.id
  62. LEFT JOIN t_bus_user_wagestrategy uws ON uat.user_id = uws.userid
  63. LEFT JOIN t_bus_overtimepay_strategy bos ON uws.overtimepay_strategyid = bos.id
  64. WHERE
  65. uad.borrowstatus = '1' AND
  66. uad.borrowspid = c.pjtId AND
  67. borrowsdepartid = c.deptId AND
  68. DATE_FORMAT(uad.ymd_date, "%Y-%m") = :params.yearmonth
  69. ) BtimeoutPrice,
  70. (
  71. SELECT
  72. IFNULL(SUM(CONVERT(:params.basepay / (8 * 21.75), DECIMAL (10, 3)) * 3 * (IFNULL(uad.national_overtime_duration, 0) / 60)), 0)
  73. FROM
  74. t_bus_user_attendance_detail uad
  75. LEFT JOIN t_bus_user_attendance_total uat ON uad.attendance_id = uat.id
  76. LEFT JOIN t_bus_user_wagestrategy uws ON uat.user_id = uws.userid
  77. LEFT JOIN t_bus_overtimepay_strategy bos ON uws.overtimepay_strategyid = bos.id
  78. WHERE
  79. uad.borrowstatus = '1' AND
  80. uad.borrowspid = c.pjtId AND
  81. borrowsdepartid = c.deptId AND
  82. DATE_FORMAT(uad.ymd_date, "%Y-%m") = :params.yearmonth
  83. ) BnationalPrice,
  84. (
  85. SELECT
  86. IFNULL(SUM(CONVERT(:params.basepay / (8 * 21.75), DECIMAL (10, 3)) * IFNULL(bos.multiple, 0) * (uad.special_overtime / 60)), 0)
  87. FROM
  88. t_bus_user_attendance_detail uad
  89. LEFT JOIN t_bus_user_attendance_total uat ON uad.attendance_id = uat.id
  90. LEFT JOIN t_bus_user_wagestrategy uws ON uat.user_id = uws.userid
  91. LEFT JOIN t_bus_overtimepay_strategy bos ON uws.overtimepay_strategyid = bos.id
  92. WHERE
  93. uad.borrowstatus = '1' AND
  94. uad.borrowspid = c.pjtId AND
  95. borrowsdepartid = c.deptId AND
  96. DATE_FORMAT(uad.ymd_date, "%Y-%m") = :params.yearmonth
  97. ) BspecialPrice
  98. FROM
  99. (
  100. SELECT
  101. b.yearmonth yearmonth,
  102. b.pid pjtId,
  103. b.departid deptId,
  104. b.pmId pmId,
  105. SUM(overtime_total_time) overtimeDuration,
  106. COUNT(*) deptPeopleTotal,
  107. SUM(overtimeFee) overtimeFee,
  108. SUM(Atimeout) Atimeout,
  109. SUM(Anational) Anational,
  110. SUM(Aspecial) Aspecial,
  111. SUM(AtimeoutPrice) AtimeoutPrice,
  112. SUM(AnationalPrice) AnationalPrice,
  113. SUM(AspecialPrice) AspecialPrice
  114. FROM
  115. (
  116. SELECT
  117. a.*,
  118. CONVERT(:params.basepay / (8 * 21.75), DECIMAL (10, 3)) * IFNULL(multiple, 0) * (Atimeout / 60) AtimeoutPrice,
  119. CONVERT(:params.basepay / (8 * 21.75), DECIMAL (10, 3)) * 3 * (Anational / 60) AnationalPrice,
  120. CONVERT(:params.basepay / (8 * 21.75), DECIMAL (10, 3)) * IFNULL(multiple, 0) * (Aspecial / 60) AspecialPrice
  121. FROM
  122. (
  123. SELECT
  124. uat.*,
  125. (
  126. SELECT
  127. IFNULL(SUM(IFNULL(datum_date, 0)), 0)
  128. FROM
  129. t_bus_user_attendance_detail
  130. WHERE
  131. attendance_id = uat.id AND
  132. borrowstatus = '1'
  133. ) Adatum,
  134. (
  135. SELECT
  136. IFNULL(SUM(IFNULL(timeout_overtime_duration, 0)),0)
  137. FROM
  138. t_bus_user_attendance_detail
  139. WHERE
  140. attendance_id = uat.id AND
  141. borrowstatus = '1'
  142. ) Atimeout,
  143. (
  144. SELECT
  145. IFNULL(SUM(IFNULL(national_overtime_duration, 0)),0)
  146. FROM
  147. t_bus_user_attendance_detail
  148. WHERE attendance_id = uat.id AND
  149. borrowstatus = '1'
  150. ) Anational,
  151. (
  152. SELECT
  153. IFNULL(SUM(IFNULL(special_overtime, 0)), 0)
  154. FROM
  155. t_bus_user_attendance_detail
  156. WHERE
  157. attendance_id = uat.id AND
  158. borrowstatus = '1'
  159. ) Aspecial
  160. FROM
  161. (
  162. SELECT
  163. uat.id,
  164. bos.multiple,
  165. uat.user_id,
  166. uat.pid pid,
  167. uat.departid,
  168. uat.yearmonth,
  169. d.dept_proj_managerid pmId,
  170. IFNULL(uat.overtime_total_time, 0) overtime_total_time,
  171. IFNULL(uat.datum_attendance_date, 0) datum_attendance_date,
  172. (IFNULL(uw.overtimepay_fixed, 0) + IFNULL(uw.overtimepay_timeout, 0) + IFNULL(uw.special_overtime, 0)) overtimeFee
  173. FROM
  174. t_bus_user_attendance_total uat
  175. LEFT JOIN t_bus_user_wage uw ON uat.user_id = uw.userid AND uat.yearmonth = uw.monthly
  176. LEFT JOIN t_bus_user_wagestrategy uws ON uat.user_id = uws.userid
  177. LEFT JOIN t_bus_overtimepay_strategy bos ON uws.overtimepay_strategyid = bos.id
  178. LEFT JOIN t_s_depart d ON uat.pid = d.id
  179. ) uat
  180. WHERE
  181. uat.yearmonth = :params.yearmonth AND
  182. uat.pid != '' AND
  183. uat.departid != ''
  184. ) a
  185. ) b
  186. GROUP BY pid,departid
  187. ) c
  188. ) d
  189. WHERE overtimeDuration != 0
  190. OR Bdatum != 0
  191. OR Btimeout != 0
  192. OR Bnational != 0
  193. OR Bspecial != 0
  194. order by overtimeDuration desc