OvertimeStatsMinidaoDao_projOvertimeStatsData.sql 5.5 KB

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