Browse Source

修改计时重复问题

liyg 2 years ago
parent
commit
164e9dd8ac

+ 16 - 6
src/main/java/com/steerinfo/dil/controller/TmstruckTimeTaskResultController.java

@@ -62,14 +62,15 @@ public class TmstruckTimeTaskResultController extends BaseRESTfulController {
     @PostMapping("/addTimeTaskResult")
     @PostMapping("/addTimeTaskResult")
     public RESTfulResult addTimeTaskResult(@RequestBody(required=false) Map<String,Object> mapValue) throws Exception {
     public RESTfulResult addTimeTaskResult(@RequestBody(required=false) Map<String,Object> mapValue) throws Exception {
         int i=0;
         int i=0;
-        if (i==-1){
-            return failed("生成账单失败");
-        }
         try {
         try {
             i=tmstruckTimeTaskResultService.addTimeTaskResult(mapValue);
             i=tmstruckTimeTaskResultService.addTimeTaskResult(mapValue);
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
-            return failed("计时失败");
+            if(e.getMessage()==null || e.getMessage().contains("Exception")){
+                return failed("计时失败,未知错误!",e.getMessage());
+            }else{
+                return failed(e.getMessage());
+            }
         }
         }
         return success(i);
         return success(i);
     }
     }
@@ -167,8 +168,17 @@ public class TmstruckTimeTaskResultController extends BaseRESTfulController {
     })
     })
     @PostMapping("/unitSureEndTimeout")
     @PostMapping("/unitSureEndTimeout")
     public RESTfulResult unitSureEndTimeout(@RequestBody(required=false) Map<String,Object> mapValue){
     public RESTfulResult unitSureEndTimeout(@RequestBody(required=false) Map<String,Object> mapValue){
-        int i = tmstruckTimeTaskResultService.unitSureEndTimeout(mapValue);
-        return success(i);
+        try{
+            int i = tmstruckTimeTaskResultService.unitSureEndTimeout(mapValue);
+            return success(i);
+        }catch (Exception e){
+            e.printStackTrace();
+            if(e.getMessage()==null || e.getMessage().contains("Exception")){
+                return failed("计时失败,未知错误!",e.getMessage());
+            }else{
+                return failed(e.getMessage());
+            }
+        }
     }
     }
 
 
     @ApiOperation(value="司机申请结束")
     @ApiOperation(value="司机申请结束")

+ 6 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckTimeTaskResultMapper.java

@@ -37,11 +37,17 @@ public interface TmstruckTimeTaskResultMapper extends IBaseMapper<TmstruckTimeTa
     //根据运输订单号查找需要用车时长
     //根据运输订单号查找需要用车时长
     Map<String,Object>  selectInwardDueTimeByOrderId(BigDecimal orderId);
     Map<String,Object>  selectInwardDueTimeByOrderId(BigDecimal orderId);
 
 
+    //根据运输订单id查找实绩中是否含有已经计时开始的实绩
+    int CountStartTaskByOrderId(BigDecimal orderId);
+
     //根据运输订单id查找实绩中是否含有已经计时结束的实绩
     //根据运输订单id查找实绩中是否含有已经计时结束的实绩
     int CountTimeTaskByOrderId(BigDecimal orderId);
     int CountTimeTaskByOrderId(BigDecimal orderId);
 
 
     Map<String,Object> getRequirementInfo(BigDecimal orderId1);
     Map<String,Object> getRequirementInfo(BigDecimal orderId1);
 
 
+    //查询最新步骤
+    Integer getLastStep(BigDecimal orderId);
+
     //查找计时开始时间
     //查找计时开始时间
     List<Map<String,Object>> getStartTimeTask(Map<String,Object> map);
     List<Map<String,Object>> getStartTimeTask(Map<String,Object> map);
 
 

+ 1 - 1
src/main/java/com/steerinfo/dil/service/ITmstruckTimeTaskResultService.java

@@ -38,7 +38,7 @@ public interface ITmstruckTimeTaskResultService {
     int applyEndTimeout(Map<String, Object> map);
     int applyEndTimeout(Map<String, Object> map);
 
 
     //用车单位确认暂停结束
     //用车单位确认暂停结束
-    int unitSureEndTimeout(Map<String, Object> map);
+    int unitSureEndTimeout(Map<String, Object> map) throws Exception;
 
 
     //确认暂停结束后进行推单
     //确认暂停结束后进行推单
     int pushOrderForPause(Map<String,Object> map);
     int pushOrderForPause(Map<String,Object> map);

+ 18 - 5
src/main/java/com/steerinfo/dil/service/impl/TmstruckTimeTaskResultServiceImpl.java

@@ -166,7 +166,7 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public int unitSureEndTimeout(Map<String, Object> map) {
+    public int unitSureEndTimeout(Map<String, Object> map) throws Exception {
         int i=0;
         int i=0;
         //map中传输的参数为InwardType,orderNumber
         //map中传输的参数为InwardType,orderNumber
         //根据运输订单号查找订单id
         //根据运输订单号查找订单id
@@ -177,6 +177,11 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
         BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
         BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
         map.put("orderId",orderId);
         map.put("orderId",orderId);
         BigDecimal inwardType =DataChange.dataToBigDecimal(map.get("inwardType"));
         BigDecimal inwardType =DataChange.dataToBigDecimal(map.get("inwardType"));
+        Integer lastStep=tmstruckTimeTaskResultMapper.getLastStep(orderId);
+        //校验是否重复操作
+        if(lastStep !=null && lastStep.compareTo(inwardType.intValue())==0){
+            throw new Exception("请勿重复操作!");
+        }
         if (inwardType.intValue()==5){
         if (inwardType.intValue()==5){
             generateTimeTaskResult(map);
             generateTimeTaskResult(map);
         }else if (inwardType.intValue()==7){
         }else if (inwardType.intValue()==7){
@@ -296,10 +301,18 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
         TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
         TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
         BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
         BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
         map.put("orderId", orderId);
         map.put("orderId", orderId);
-        //根据运输订单id查找实绩中是否已经含有计时结束的实绩,如果有则抛出异常
-        int countEndTimeNum = tmstruckTimeTaskResultMapper.CountTimeTaskByOrderId(orderId);
-        if (countEndTimeNum >= 1) {
-            throw new Exception("请勿重复计时");
+        Integer lastStep=tmstruckTimeTaskResultMapper.getLastStep(orderId);
+        //校验是否重复操作
+        if(lastStep !=null && lastStep.compareTo(inwardType.intValue())==0){
+            throw new Exception("请勿重复操作");
+        }
+        //校验是否多次开始
+        if(inwardType.intValue() == 1 && tmstruckTimeTaskResultMapper.CountStartTaskByOrderId(orderId) > 0){
+            throw new Exception("请勿重复开始");
+        }
+        //校验是否多次结束
+        if (inwardType.intValue() == 3 && tmstruckTimeTaskResultMapper.CountTimeTaskByOrderId(orderId) > 0) {
+            throw new Exception("请勿重复结束");
         }
         }
         tmstruckTimeTaskResult.setTimeTaskResultId(tmstruckTimeTaskResultMapper.selectMaxId());
         tmstruckTimeTaskResult.setTimeTaskResultId(tmstruckTimeTaskResultMapper.selectMaxId());
         tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(resultTotalId));
         tmstruckTimeTaskResult.setResultTotalId(DataChange.dataToBigDecimal(resultTotalId));

+ 20 - 0
src/main/resources/com/steerinfo/dil/mapper/TmstruckTimeTaskResultMapper.xml

@@ -941,5 +941,25 @@
     where RS.SHIPPER_NAME is not null AND OO.ORDER_NUMBER=#{orderNumber}
     where RS.SHIPPER_NAME is not null AND OO.ORDER_NUMBER=#{orderNumber}
       FETCH NEXT 1 rows only
       FETCH NEXT 1 rows only
   </select>
   </select>
+  <select id="CountStartTaskByOrderId" resultType="java.lang.Integer">
+    select COUNT(*)
+    from OMSTRUCK_ORDER OO
+           LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+                     ON TTR.ORDER_ID=OO.ORDER_ID
+           LEFT JOIN TMSTRUCK_TIME_TASK_RESULT TTTR
+                     ON TTR.RESULT_TOTAL_ID=TTTR.RESULT_TOTAL_ID
+    WHERE OO.ORDER_ID=#{orderId} and TTTR.RESULT_TIME_TYPE=1
+  </select>
+  <select id="getLastStep" resultType="java.lang.Integer">
+    select TTTR.RESULT_TIME_TYPE
+    from OMSTRUCK_ORDER OO
+           LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+                     ON TTR.ORDER_ID=OO.ORDER_ID
+           LEFT JOIN TMSTRUCK_TIME_TASK_RESULT TTTR
+                     ON TTR.RESULT_TOTAL_ID=TTTR.RESULT_TOTAL_ID
+    WHERE OO.ORDER_ID=#{orderId}
+    ORDER BY TTTR.RESULT_TIME DESC
+    FETCH NEXT 1 ROWS ONLY
+  </select>
 
 
 </mapper>
 </mapper>