WorkorderInspection.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace addons\qingdongams\model;
  3. use think\Model;
  4. use traits\model\SoftDelete;
  5. use DateTime;
  6. /**
  7. *客户附件表
  8. */
  9. class WorkorderInspection Extends Model {
  10. use SoftDelete;
  11. protected $name = 'qingdongams_workorder_inspection';
  12. // 开启自动写入时间戳字段
  13. protected $autoWriteTimestamp = false;
  14. // 定义时间戳字段名
  15. protected $createTime = false;
  16. protected $updateTime = false;
  17. protected $deleteTime = false;
  18. /**
  19. * Undocumented function
  20. * $params['check_up']; 1 or 0
  21. * $params['time_up']; 1每天 2每周 3每月 4每季 5每年
  22. * $params['m']; 月份
  23. * $params['d']; 天
  24. * $params['h']; 小时
  25. * $params['i']; 分钟
  26. * $params['week']; 分钟
  27. * @param [type] $data
  28. * @return void
  29. */
  30. public static function getNextTime($w_time,$params){
  31. // $givenDateTime=date("Y-m-d ".$params['h'].':'.$params['i']."",$w_time);
  32. $givenDateTime=date("Y-m-d 08:00:00",$w_time);
  33. if($params['time_up']==1){ // 1每天
  34. $nextDayTimestamp = strtotime($givenDateTime . ' +1 day');
  35. return $nextDayTimestamp;
  36. }else if($params['time_up']==2){ // 2每周
  37. switch($params['week']){
  38. case 1:
  39. $week_time=strtotime($givenDateTime .'next monday');
  40. break;
  41. case 2:
  42. $week_time=strtotime($givenDateTime .'next tuesday');
  43. break;
  44. case 3:
  45. $week_time=strtotime($givenDateTime .'next wednesday');
  46. break;
  47. case 4:
  48. $week_time=strtotime($givenDateTime .'next thursday');
  49. break;
  50. case 5:
  51. $week_time=strtotime($givenDateTime .'next friday');
  52. break;
  53. case 6:
  54. $week_time=strtotime($givenDateTime .'next saturday');
  55. break;
  56. case 0:
  57. $week_time=strtotime($givenDateTime .'next sunday');
  58. break;
  59. }
  60. return $week_time;
  61. }else if($params['time_up']==3){ // 3每月
  62. return strtotime($givenDateTime . ' +1 month');
  63. }else if($params['time_up']==4){ // 4每季
  64. // 获取当前日期
  65. $currentDate =date("Y-m-d ".$params['h'].':'.$params['i']."",$w_time);
  66. // 获取当前月份和季度
  67. $currentMonth = date('m', strtotime($currentDate));
  68. $currentQuarter = ceil($currentMonth / 3);
  69. // 计算下个季度的第一天日期
  70. $nextQuarter = ($currentQuarter + 1) > 4 ? 1 : ($currentQuarter + 1);
  71. $nextYear = ($currentQuarter + 1) > 4 ? date('Y', strtotime('+1 year')) : date('Y');
  72. $nextQuarterStart = date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime($nextYear . '-' . ($nextQuarter * 3 - 2) . '-'.$params['d']));
  73. return strtotime($nextQuarterStart);
  74. }else if($params['time_up']==5){ // 5每年
  75. // 获取当前年份
  76. $currentYear = date('Y',$w_time);
  77. // 计算下一年的2月5日
  78. $nextYear = $currentYear + 1;
  79. $nextDate = $nextYear . '-'.$params['m'].'-'.$params['d'].' '.$params['h'].':'.$params['i'];
  80. return strtotime($nextDate);
  81. }
  82. }
  83. /**
  84. * Undocumented function
  85. * $params['check_up']; 1 or 0
  86. * $params['time_up']; 1每天 2每周 3每月 4每季 5每年
  87. * $params['m']; 月份
  88. * $params['d']; 天
  89. * $params['h']; 小时
  90. * $params['i']; 分钟
  91. * $params['week']; 分钟
  92. * @param [type] $data
  93. * @return void
  94. */
  95. public static function getTime($params){
  96. if($params['time_up']==1){ // 1每天
  97. $w_time=date("Y-m-d ".$params['h'].':'.$params['i']."",strtotime("+1 day"));
  98. return strtotime($w_time);
  99. }else if($params['time_up']==2){ // 2每周
  100. switch($params['week']){
  101. case 1:
  102. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next monday'));
  103. break;
  104. case 2:
  105. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next tuesday'));
  106. break;
  107. case 3:
  108. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next wednesday'));
  109. break;
  110. case 4:
  111. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next thursday'));
  112. break;
  113. case 5:
  114. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next friday'));
  115. break;
  116. case 6:
  117. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next saturday'));
  118. break;
  119. case 0:
  120. $week_time=date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime('next sunday'));
  121. break;
  122. }
  123. return strtotime($week_time);
  124. }else if($params['time_up']==3){ // 3每月
  125. // 获取当前年份和月份
  126. $currentYear = date('Y');
  127. $currentMonth = date('m');
  128. // 构造下个月的日期
  129. $nextMonth = date('Y-m', strtotime($currentYear . '-' . $currentMonth . ' +1 month'));
  130. // 构造下个月的10号日期
  131. $nextMonthth = $nextMonth . '-'.$params['d'].' '.$params['h'].':'.$params['i'];
  132. return strtotime($nextMonthth);
  133. }else if($params['time_up']==4){ // 4每季
  134. // 获取当前日期
  135. $currentDate = date('Y-m-d');
  136. // 获取当前月份和季度
  137. $currentMonth = date('m', strtotime($currentDate));
  138. $currentQuarter = ceil($currentMonth / 3);
  139. // 计算下个季度的第一天日期
  140. $nextQuarter = ($currentQuarter + 1) > 4 ? 1 : ($currentQuarter + 1);
  141. $nextYear = ($currentQuarter + 1) > 4 ? date('Y', strtotime('+1 year')) : date('Y');
  142. $nextQuarterStart = date("Y-m-d ".$params['h'].':'.$params['i']."", strtotime($nextYear . '-' . ($nextQuarter * 3 - 2) . '-'.$params['d']));
  143. return strtotime($nextQuarterStart);
  144. }else if($params['time_up']==5){ // 5每年
  145. // 获取当前年份
  146. $currentYear = date('Y');
  147. // 计算下一年的2月5日
  148. $nextYear = $currentYear + 1;
  149. $nextDate = $nextYear . '-'.$params['m'].'-'.$params['d'].' '.$params['h'].':'.$params['i'];
  150. return strtotime($nextDate);
  151. }
  152. }
  153. }