|
@@ -42,103 +42,132 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
|
|
|
|
|
|
/**
|
|
|
* 通用生成实例数据
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @return
|
|
|
*/
|
|
|
- public TmstruckTimeTaskResult generateTimeTaskResult(Map<String, Object> map, Integer timeType){
|
|
|
+ public TmstruckTimeTaskResult generateTimeTaskResult(Map<String, Object> map) {
|
|
|
TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
|
|
|
//获取主键ID
|
|
|
tmstruckTimeTaskResult.setId(tmstruckTimeTaskResultMapper.selectMaxId());
|
|
|
String orderNumber = (String) map.get("orderNumber");
|
|
|
+ BigDecimal inwardType = DataChange.dataToBigDecimal(map.get("inwardType"));
|
|
|
//通过运输订单号查询总实绩ID等数据
|
|
|
map.putAll(tmstruckTimeTaskResultMapper.getResultTotalIdByOrderNum(orderNumber));
|
|
|
tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
|
|
|
//生成时间
|
|
|
tmstruckTimeTaskResult.setResultTime(new Date());
|
|
|
+ //生成订单结束
|
|
|
+ tmstruckTimeTaskResult.setResultUomId(new BigDecimal(900));
|
|
|
//设置时间类型
|
|
|
- tmstruckTimeTaskResult.setResultTimeType(new BigDecimal(timeType));
|
|
|
+ tmstruckTimeTaskResult.setResultTimeType(inwardType);
|
|
|
+ String personnelSsoId =(String) map.get("personnelSsoId");
|
|
|
+ tmstruckTimeTaskResult.setInsertUsername(personnelSsoId);
|
|
|
+ tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
return tmstruckTimeTaskResult;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 司机申请开始
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public int applyStartTime(Map<String, Object> map) {
|
|
|
//设置时间类型 0
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 0);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用车单位确认开始
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public int unitSureStartTime(Map<String, Object> map) {
|
|
|
//设置时间类型 1
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 1);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 司机申请暂停
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public int applyStartTimeout(Map<String, Object> map) {
|
|
|
//设置时间类型 4
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 4);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用车单位确认
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public int unitSureStartTimeout(Map<String, Object> map) {
|
|
|
//设置时间类型 5
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 5);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 司机申请暂停结束
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
public int applyEndTimeout(Map<String, Object> map) {
|
|
|
//设置时间类型 6
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 6);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
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));
|
|
|
+ int i=0;
|
|
|
+ //map中传输的参数为InwardType,orderNumber
|
|
|
+ //根据运输订单号查找订单id
|
|
|
+ //如果订单类型为5
|
|
|
+ String personnelSsoId =(String) map.get("personnelSsoId");
|
|
|
+ String orderNumber =(String) map.get("orderNumber");
|
|
|
+ BigDecimal inwardType =DataChange.dataToBigDecimal(map.get("inwardType"));
|
|
|
+ if (inwardType.intValue()==5){
|
|
|
+ generateTimeTaskResult(map);
|
|
|
+ }else if (inwardType.intValue()==7){
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
+ //生成计时实绩暂停
|
|
|
+ //根据运输订单号查找总实绩id
|
|
|
+ BigDecimal totalId = utilsMapper.getTotalIdByOrderNumber(orderNumber);
|
|
|
+ //根据总实绩id查找开始时间
|
|
|
+ Map<String, Object> lastTimeout = tmstruckTimeTaskResultMapper.getLastTimeout(totalId);
|
|
|
+ Date startTime =(Date) lastTimeout.get("resultTime");
|
|
|
+ //根据总实绩id查找结束时间
|
|
|
+ Map<String, Object> lastTimeEnd = tmstruckTimeTaskResultMapper.getLastTimeEnd(totalId);
|
|
|
+ Date EndTime = (Date) lastTimeEnd.get("resultTime");
|
|
|
+ long dueTime=EndTime.getTime()-startTime.getTime();
|
|
|
+ tmstruckTimeTaskResult.setTimeTaskResultId(tmstruckTimeTaskResult.getTimeTaskResultId());
|
|
|
+ tmstruckTimeTaskResult.setResultValue(new BigDecimal((dueTime/(1000*60))));
|
|
|
+ tmstruckTimeTaskResult.setUpdateTime(new Date());
|
|
|
+ i+=tmstruckTimeTaskResultMapper.updateByPrimaryKeySelective(tmstruckTimeTaskResult);
|
|
|
}
|
|
|
- return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
+
|
|
|
+ return i;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -149,7 +178,7 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
|
|
|
@Override
|
|
|
public int applyEndTime(Map<String, Object> map) {
|
|
|
//设置时间类型 2
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 2);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
return tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
}
|
|
|
|
|
@@ -161,7 +190,7 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
|
|
|
@Override
|
|
|
public int unitSureEndTime(Map<String, Object> map) {
|
|
|
//设置时间类型 3
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map, 3);
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = generateTimeTaskResult(map);
|
|
|
//查询当前车辆排队开始时间 计算出总时长
|
|
|
Map<String, Object> startTimeMap = tmstruckTimeTaskResultMapper.getStartTime(tmstruckTimeTaskResult.getResultTotalId());
|
|
|
Date endTime = new Date();
|
|
@@ -202,66 +231,98 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int addTimeTaskResult(Map<String, Object> map) throws Exception {
|
|
|
+ //判断是否是计时开始还是计时结束
|
|
|
int i=0;
|
|
|
- Date resultTime2 = null;
|
|
|
- Date resultTime1;
|
|
|
- String orderNumber =(String)map.get("orderNumber");
|
|
|
+ BigDecimal inwardType =DataChange.dataToBigDecimal(map.get("inwardTypes")) ;
|
|
|
+ String orderNumber = (String) map.get("orderNumber");
|
|
|
+ String personnelSsoId = (String) map.get("personnelSsoId");
|
|
|
BigDecimal resultTotalId = utilsMapper.getTotalIdByOrderNumber(orderNumber);
|
|
|
- TmstruckTimeTaskResult tmstruckTimeTaskResult=new TmstruckTimeTaskResult();
|
|
|
+ TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
|
|
|
BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
|
|
|
- map.put("orderId",orderId);
|
|
|
+ map.put("orderId", orderId);
|
|
|
//根据运输订单id查找实绩中是否已经含有计时结束的实绩,如果有则抛出异常
|
|
|
int countEndTimeNum = tmstruckTimeTaskResultMapper.CountTimeTaskByOrderId(orderId);
|
|
|
- if (countEndTimeNum>=1){
|
|
|
+ if (countEndTimeNum >= 1) {
|
|
|
throw new Exception("请勿重复计时");
|
|
|
}
|
|
|
- //根据运输订单号判断是否计时开始
|
|
|
- BigDecimal Time = utilsMapper.getTime(orderId);
|
|
|
- if (Time==null) {
|
|
|
+ if (inwardType.intValue()==1){
|
|
|
tmstruckTimeTaskResult.setTimeTaskResultId(tmstruckTimeTaskResultMapper.selectMaxId());
|
|
|
tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(resultTotalId));
|
|
|
//获取计时开始的订单类型
|
|
|
- BigDecimal inwardType = DataChange.dataToBigDecimal(map.get("inwardType"));
|
|
|
tmstruckTimeTaskResult.setResultTimeType(inwardType);
|
|
|
tmstruckTimeTaskResult.setResultTime(new Date());
|
|
|
tmstruckTimeTaskResult.setInsertTime(new Date());
|
|
|
+ tmstruckTimeTaskResult.setInsertUsername(personnelSsoId);
|
|
|
//新增第一条计时实绩
|
|
|
i += tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
- }else {
|
|
|
- //已经有计时开始时间
|
|
|
- //新增第二条实绩,计时结束
|
|
|
+ }else if (inwardType.intValue()==3){
|
|
|
tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(resultTotalId));
|
|
|
//获取计时结束的订单类型
|
|
|
tmstruckTimeTaskResult.setTimeTaskResultId(tmstruckTimeTaskResultMapper.selectMaxId());
|
|
|
tmstruckTimeTaskResult.setResultTime(new Date());
|
|
|
tmstruckTimeTaskResult.setResultTimeType(new BigDecimal(3));
|
|
|
- i += tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
- //此时获取他的上一条实绩生成计时时间
|
|
|
- }
|
|
|
- //判断如果计时结束则生成作业时长,根据运输订单号查找作业是否结束
|
|
|
- Map<String,Object> timeStatus = utilsMapper.getTimeStatus(map);
|
|
|
- //首先判断计时是否开始,如果计时开始则生成计时结束实绩
|
|
|
- //通过运输订单id和实绩结束状态查找时间实绩id
|
|
|
- resultTime1 =(Date) timeStatus.get("resultTime");
|
|
|
- Map<String, Object> timeTask = utilsMapper.FristTimeTask(map);
|
|
|
- //获取计时开始时间
|
|
|
- if (resultTime1!=null&&timeTask!=null) {//生成计时结束时间得同时.生成作业时长
|
|
|
- BigDecimal timeTaskresultId = DataChange.dataToBigDecimal(timeTask.get("timeResultId"));
|
|
|
- map.put("timeTaskresultId",timeTaskresultId);
|
|
|
+ tmstruckTimeTaskResult.setInsertUsername(personnelSsoId);
|
|
|
+ tmstruckTimeTaskResultMapper.insertSelective(tmstruckTimeTaskResult);
|
|
|
+ //获取最新暂停结束确认时间
|
|
|
+ Map<String, Object> map2 = new HashMap<>();
|
|
|
+ map2.put("type", 7);
|
|
|
+ map2.put("orderId", orderId);
|
|
|
+ List<Map<String, Object>> List = utilsMapper.TimeTaskPause(map2);
|
|
|
+ Map<String, Object> map4 = List.get(0);
|
|
|
+ BigDecimal resultPauseTimeEnd = DataChange.dataToBigDecimal( map4.get("resultPauseTime"));
|
|
|
Map<String, Object> timeMaps = utilsMapper.FristTimeTask(map);
|
|
|
- resultTime2 = (Date) timeMaps.get("resultTime");
|
|
|
- BigDecimal timeResultId = (BigDecimal) timeMaps.get("timeResultId");
|
|
|
- long dateTime = resultTime2.getTime() - resultTime1.getTime();
|
|
|
- tmstruckTimeTaskResult.setTimeTaskResultId(timeResultId);
|
|
|
- tmstruckTimeTaskResult.setResultValue(new BigDecimal(dateTime / 3600000));
|
|
|
+ Date resultTime2 = (Date) timeMaps.get("resultTime");
|
|
|
+ Map<String, Object> timeStatus = utilsMapper.getTimeStatus(map);
|
|
|
+ Date resultTime1 = (Date) timeStatus.get("resultTime");
|
|
|
+ long dateTime1 = resultTime2.getTime() - resultTime1.getTime();
|
|
|
+ BigDecimal dateTime3 = new BigDecimal(dateTime1 / (1000 * 60));
|
|
|
+ int Time1 = dateTime3.intValue() - resultPauseTimeEnd.intValue();
|
|
|
+ tmstruckTimeTaskResult.setTimeTaskResultId(tmstruckTimeTaskResult.getTimeTaskResultId());
|
|
|
+ tmstruckTimeTaskResult.setResultValue(new BigDecimal((Time1)));
|
|
|
tmstruckTimeTaskResult.setResultUomId(new BigDecimal(900));
|
|
|
- tmstruckTimeTaskResult.setUpdateTime(new Date());
|
|
|
- i+=tmstruckTimeTaskResultMapper.updateByPrimaryKeySelective(tmstruckTimeTaskResult);
|
|
|
+ tmstruckTimeTaskResult.setUpdateUsername(personnelSsoId);
|
|
|
+ i += tmstruckTimeTaskResultMapper.updateByPrimaryKeySelective(tmstruckTimeTaskResult);
|
|
|
map.put("orderStatus", 2);
|
|
|
utilsMapper.updateOrderStatusByOrderIdOrNum(map);
|
|
|
}
|
|
|
- return i;
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+
|
|
|
+ //通过运输订单号判断计时是否开始
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public int JudgeTimeTask(Map<String, Object> mapValue) throws Exception {
|
|
|
+ String orderNumber =(String)mapValue.get("orderNumber");
|
|
|
+ BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
|
|
|
+ //通过运输订单号查找当前是第几次
|
|
|
+ BigDecimal inwardType = utilsMapper.getInwardType(orderId);
|
|
|
+ if (inwardType!=null){
|
|
|
+ throw new Exception("计时已经开始");
|
|
|
+ }
|
|
|
+ return inwardType.intValue();
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public int JudgeTimeTaskPause(Map<String, Object> mapValue) throws Exception {
|
|
|
+ String orderNumber =(String)mapValue.get("orderNumber");
|
|
|
+ int i=0;
|
|
|
+ BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
|
|
|
+ //通过运输订单号查找当前是第几次
|
|
|
+ BigDecimal inwardStartTime = utilsMapper.getInwardStartTime(orderId);
|
|
|
+// System.out.println(inwardStartTime);
|
|
|
+ BigDecimal inwardEndTime = utilsMapper.getInwardEndTime(orderId);
|
|
|
+// System.out.println(inwardEndTime);
|
|
|
+ int Time=inwardEndTime.intValue()-inwardStartTime.intValue();
|
|
|
+// System.out.println(Time);
|
|
|
+ if (Time==0) {
|
|
|
+ i=0;
|
|
|
+ }else if (Time==-1){
|
|
|
+ i=1;
|
|
|
+ }else {
|
|
|
+ i=3;
|
|
|
+ }
|
|
|
+ return i;
|
|
|
+ }
|
|
|
}
|