123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- package com.steerinfo.dil.service.impl;
- import com.steerinfo.dil.mapper.TmstruckTimeTaskResultMapper;
- import com.steerinfo.dil.model.TmstruckTimeTaskResult;
- import com.steerinfo.dil.service.ITmstruckTimeTaskResultService;
- import com.steerinfo.dil.util.DataChange;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- /**
- * TmstruckTimeTskResult服务实现:
- * @author generator
- * @version 1.0-SNAPSHORT 2021-10-22 07:28
- * 类描述
- * 修订历史:
- * 日期:2021-10-22
- * 作者:generator
- * 参考:
- * 描述:TmstruckTimeTskResult服务实现
- * @see null
- * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
- */
- @Service(value = "tmstruckTimeTaskResultService")
- public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResultService {
- @Autowired
- private TmstruckTimeTaskResultMapper tmstruckTimeTaskResultMapper;
- /**
- * 通用生成实例数据
- * @param map
- * @return
- */
- public TmstruckTimeTaskResult generateTimeTaskResult(Map<String, Object> map, Integer timeType){
- TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
- //获取主键ID
- tmstruckTimeTaskResult.setId(tmstruckTimeTaskResultMapper.selectMaxId());
- String orderNumber = (String) map.get("orderNumber");
- //通过运输订单号查询总实绩ID等数据
- map.putAll(tmstruckTimeTaskResultMapper.getResultTotalIdByOrderNum(orderNumber));
- tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
- //生成时间
- tmstruckTimeTaskResult.setResultTime(new Date());
- //设置时间类型
- tmstruckTimeTaskResult.setResultTimeType(new BigDecimal(timeType));
- return tmstruckTimeTaskResult;
- }
- /**
- * 司机申请开始
- * @param map
- * @return
- */
- @Override
- public int applyStartTime(Map<String, Object> map) {
- //设置时间类型 0
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 0);
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 用车单位确认开始
- * @param map
- * @return
- */
- @Override
- public int unitSureStartTime(Map<String, Object> map) {
- //设置时间类型 1
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 1);
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 司机申请暂停
- * @param map
- * @return
- */
- @Override
- public int applyStartTimeout(Map<String, Object> map) {
- //设置时间类型 4
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 4);
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 用车单位确认
- * @param map
- * @return
- */
- @Override
- public int unitSureStartTimeout(Map<String, Object> map) {
- //设置时间类型 5
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 5);
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 司机申请暂停结束
- * @param map
- * @return
- */
- @Override
- public int applyEndTimeout(Map<String, Object> map) {
- //设置时间类型 6
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 6);
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 用车单位确认暂停结束
- * @param map
- * @return
- */
- @Override
- public int unitSureEndTimeout(Map<String, Object> map) {
- //设置时间类型 7
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 7);
- //查询上一次结束的时间
- Map<String, Object> timeMap = tmstruckTimeTaskResultMapper.getLastTimeout(tmstruckTimeTaskResult.getResultTotalId());
- Object resultTime = timeMap.get("resultTime");
- if(resultTime != null){
- Date lastTimeout = (Date) resultTime;
- //计算相差时间戳 存入当前实绩中 更精确
- long differenceTime = new Date().getTime() - lastTimeout.getTime();
- tmstruckTimeTaskResult.setResultValue(new BigDecimal(differenceTime));
- }
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 司机申请结束
- * @param map
- * @return
- */
- @Override
- public int applyEndTime(Map<String, Object> map) {
- //设置时间类型 2
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 2);
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 用车单位确认结束
- * @param map
- * @return
- */
- @Override
- public int unitSureEndTime(Map<String, Object> map) {
- //设置时间类型 3
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 3);
- //查询当前车辆排队开始时间 计算出总时长
- Map<String, Object> startTimeMap = tmstruckTimeTaskResultMapper.getStartTime(tmstruckTimeTaskResult.getResultTotalId());
- Date endTime = new Date();
- //计算当前时间与确认开始时间相差的毫秒数(时间戳)
- Date startTime = (Date) startTimeMap.get("resultTime");
- long allTime = endTime.getTime() - startTime.getTime();
- //查询所有确认暂停结束的时长时间戳
- List<Map<String, Object>> allTimeout = tmstruckTimeTaskResultMapper.getAllTimeout(tmstruckTimeTaskResult.getResultTotalId());
- long allTimeoutTime = 0;
- //计算所有暂停时间时长时间戳总和
- for (Map<String, Object> timeoutMap : allTimeout) {
- BigDecimal resultTime = DataChange.dataToBigDecimal(timeoutMap.get("resultValue"));
- allTimeoutTime += resultTime.longValue();
- }
- long realTime = allTime - allTimeoutTime;
- //计算总工作时长(分钟)
- realTime = realTime / (1000 * 60);
- tmstruckTimeTaskResult.setResultValue(new BigDecimal(realTime));
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
- }
- /**
- * 查询计时作业
- * @param map
- * @return
- */
- @Override
- public List<Map<String, Object>> getAllTimeTaskResult(Map<String, Object> map) {
- return tmstruckTimeTaskResultMapper.getAllTimeTaskResult(map);
- }
- }
|