TmstruckTimeTaskResultServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.TmstruckTimeTaskResultMapper;
  3. import com.steerinfo.dil.model.TmstruckTimeTaskResult;
  4. import com.steerinfo.dil.service.ITmstruckTimeTaskResultService;
  5. import com.steerinfo.dil.util.DataChange;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import java.math.BigDecimal;
  9. import java.util.Date;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * TmstruckTimeTskResult服务实现:
  14. * @author generator
  15. * @version 1.0-SNAPSHORT 2021-10-22 07:28
  16. * 类描述
  17. * 修订历史:
  18. * 日期:2021-10-22
  19. * 作者:generator
  20. * 参考:
  21. * 描述:TmstruckTimeTskResult服务实现
  22. * @see null
  23. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  24. */
  25. @Service(value = "tmstruckTimeTaskResultService")
  26. public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResultService {
  27. @Autowired
  28. private TmstruckTimeTaskResultMapper tmstruckTimeTaskResultMapper;
  29. /**
  30. * 通用生成实例数据
  31. * @param map
  32. * @return
  33. */
  34. public TmstruckTimeTaskResult generateTimeTaskResult(Map<String, Object> map, Integer timeType){
  35. TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
  36. //获取主键ID
  37. tmstruckTimeTaskResult.setId(tmstruckTimeTaskResultMapper.selectMaxId());
  38. String orderNumber = (String) map.get("orderNumber");
  39. //通过运输订单号查询总实绩ID等数据
  40. map.putAll(tmstruckTimeTaskResultMapper.getResultTotalIdByOrderNum(orderNumber));
  41. tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
  42. //生成时间
  43. tmstruckTimeTaskResult.setResultTime(new Date());
  44. //设置时间类型
  45. tmstruckTimeTaskResult.setResultTimeType(new BigDecimal(timeType));
  46. return tmstruckTimeTaskResult;
  47. }
  48. /**
  49. * 司机申请开始
  50. * @param map
  51. * @return
  52. */
  53. @Override
  54. public int applyStartTime(Map<String, Object> map) {
  55. //设置时间类型 0
  56. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 0);
  57. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  58. }
  59. /**
  60. * 用车单位确认开始
  61. * @param map
  62. * @return
  63. */
  64. @Override
  65. public int unitSureStartTime(Map<String, Object> map) {
  66. //设置时间类型 1
  67. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 1);
  68. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  69. }
  70. /**
  71. * 司机申请暂停
  72. * @param map
  73. * @return
  74. */
  75. @Override
  76. public int applyStartTimeout(Map<String, Object> map) {
  77. //设置时间类型 4
  78. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 4);
  79. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  80. }
  81. /**
  82. * 用车单位确认
  83. * @param map
  84. * @return
  85. */
  86. @Override
  87. public int unitSureStartTimeout(Map<String, Object> map) {
  88. //设置时间类型 5
  89. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 5);
  90. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  91. }
  92. /**
  93. * 司机申请暂停结束
  94. * @param map
  95. * @return
  96. */
  97. @Override
  98. public int applyEndTimeout(Map<String, Object> map) {
  99. //设置时间类型 6
  100. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 6);
  101. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  102. }
  103. /**
  104. * 用车单位确认暂停结束
  105. * @param map
  106. * @return
  107. */
  108. @Override
  109. public int unitSureEndTimeout(Map<String, Object> map) {
  110. //设置时间类型 7
  111. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 7);
  112. //查询上一次结束的时间
  113. Map<String, Object> timeMap = tmstruckTimeTaskResultMapper.getLastTimeout(tmstruckTimeTaskResult.getResultTotalId());
  114. Object resultTime = timeMap.get("resultTime");
  115. if(resultTime != null){
  116. Date lastTimeout = (Date) resultTime;
  117. //计算相差时间戳 存入当前实绩中 更精确
  118. long differenceTime = new Date().getTime() - lastTimeout.getTime();
  119. tmstruckTimeTaskResult.setResultValue(new BigDecimal(differenceTime));
  120. }
  121. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  122. }
  123. /**
  124. * 司机申请结束
  125. * @param map
  126. * @return
  127. */
  128. @Override
  129. public int applyEndTime(Map<String, Object> map) {
  130. //设置时间类型 2
  131. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 2);
  132. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  133. }
  134. /**
  135. * 用车单位确认结束
  136. * @param map
  137. * @return
  138. */
  139. @Override
  140. public int unitSureEndTime(Map<String, Object> map) {
  141. //设置时间类型 3
  142. TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 3);
  143. //查询当前车辆排队开始时间 计算出总时长
  144. Map<String, Object> startTimeMap = tmstruckTimeTaskResultMapper.getStartTime(tmstruckTimeTaskResult.getResultTotalId());
  145. Date endTime = new Date();
  146. //计算当前时间与确认开始时间相差的毫秒数(时间戳)
  147. Date startTime = (Date) startTimeMap.get("resultTime");
  148. long allTime = endTime.getTime() - startTime.getTime();
  149. //查询所有确认暂停结束的时长时间戳
  150. List<Map<String, Object>> allTimeout = tmstruckTimeTaskResultMapper.getAllTimeout(tmstruckTimeTaskResult.getResultTotalId());
  151. long allTimeoutTime = 0;
  152. //计算所有暂停时间时长时间戳总和
  153. for (Map<String, Object> timeoutMap : allTimeout) {
  154. BigDecimal resultTime = DataChange.dataToBigDecimal(timeoutMap.get("resultValue"));
  155. allTimeoutTime += resultTime.longValue();
  156. }
  157. long realTime = allTime - allTimeoutTime;
  158. //计算总工作时长(分钟)
  159. realTime = realTime / (1000 * 60);
  160. tmstruckTimeTaskResult.setResultValue(new BigDecimal(realTime));
  161. return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
  162. }
  163. /**
  164. * 查询计时作业
  165. * @param map
  166. * @return
  167. */
  168. @Override
  169. public List<Map<String, Object>> getAllTimeTaskResult(Map<String, Object> map) {
  170. return tmstruckTimeTaskResultMapper.getAllTimeTaskResult(map);
  171. }
  172. }