Browse Source

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU1/DAL-TMS-TRUCK-API

luobang 2 years ago
parent
commit
49378d508a

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

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

+ 8 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.java

@@ -1,6 +1,7 @@
 package com.steerinfo.dil.mapper;
 
 import com.steerinfo.dil.model.TmstruckLeaveFactoryResult;
+import com.steerinfo.dil.model.TmstruckWeightResult;
 import com.steerinfo.framework.mapper.IBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
@@ -150,4 +151,11 @@ public interface TmstruckLeaveFactoryResultMapper extends IBaseMapper<TmstruckLe
 
     int getPrintNumber(BigDecimal orderId);
 
+    //查询所有出了净重的计量实绩
+    List<Map<String,Object>> getWeightResultNetted(Map<String,Object> map);
+
+    //出厂
+    int updateLeaveTime(Map<String,Object> map);
+    //关单
+    int updateLeaveOrder(Map<String,Object> map);
 }

+ 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);
 
+    //根据运输订单id查找实绩中是否含有已经计时开始的实绩
+    int CountStartTaskByOrderId(BigDecimal orderId);
+
     //根据运输订单id查找实绩中是否含有已经计时结束的实绩
     int CountTimeTaskByOrderId(BigDecimal orderId);
 
     Map<String,Object> getRequirementInfo(BigDecimal orderId1);
 
+    //查询最新步骤
+    Integer getLastStep(BigDecimal orderId);
+
     //查找计时开始时间
     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 unitSureEndTimeout(Map<String, Object> map);
+    int unitSureEndTimeout(Map<String, Object> map) throws Exception;
 
     //确认暂停结束后进行推单
     int pushOrderForPause(Map<String,Object> map);

+ 23 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckLeaveFactoryResultServiceImpl.java

@@ -8,11 +8,13 @@ import com.steerinfo.dil.mapper.TmstruckLeaveFactoryResultMapper;
 import com.steerinfo.dil.mapper.TmstruckLoadResultMapper;
 import com.steerinfo.dil.mapper.UtilsMapper;
 import com.steerinfo.dil.model.TmstruckLeaveFactoryResult;
+import com.steerinfo.dil.model.TmstruckWeightResult;
 import com.steerinfo.dil.service.ITmstruckLeaveFactoryResultService;
 import com.steerinfo.dil.util.DataChange;
 import com.steerinfo.dil.util.HTTPRequestUtils;
 import com.steerinfo.dil.util.getRequestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -673,4 +675,25 @@ public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFact
         }
         return 0;
     }
+
+    /**
+     * 非钢材,出净重24h后自动出厂,并关单
+     */
+    @Scheduled(fixedRate = 1000*60*60*3)
+    public void autoLeaveFactory(){
+        Date date=new Date();
+        Calendar calendar=Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH,-1);
+        date=calendar.getTime();
+        Map<String,Object> map = new HashMap<>();
+        map.put("nowDate",date);
+        List<Map<String,Object>> list = tmstruckLeaveFactoryResultMapper.getWeightResultNetted(map);
+        for(Map<String,Object> item:list){
+            //更新出厂
+            tmstruckLeaveFactoryResultMapper.updateLeaveTime(item);
+            //关闭订单
+            tmstruckLeaveFactoryResultMapper.updateLeaveOrder(item);
+        }
+    }
 }

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

@@ -166,7 +166,7 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
      * @return
      */
     @Override
-    public int unitSureEndTimeout(Map<String, Object> map) {
+    public int unitSureEndTimeout(Map<String, Object> map) throws Exception {
         int i=0;
         //map中传输的参数为InwardType,orderNumber
         //根据运输订单号查找订单id
@@ -177,6 +177,11 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
         BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
         map.put("orderId",orderId);
         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){
             generateTimeTaskResult(map);
         }else if (inwardType.intValue()==7){
@@ -296,10 +301,18 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
         TmstruckTimeTaskResult tmstruckTimeTaskResult = new TmstruckTimeTaskResult();
         BigDecimal orderId = utilsMapper.getOrderIdByOrderNumber(orderNumber);
         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.setResultTotalId(DataChange.dataToBigDecimal(resultTotalId));

+ 26 - 0
src/main/resources/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.xml

@@ -1506,4 +1506,30 @@
         SELECT OO.PRINTNUMBER FROM OMSTRUCK_ORDER OO
         WHERE OO.ORDER_ID = #{orderId}
     </select>
+    <select id="getWeightResultNetted" resultType="java.util.Map">
+        SELECT
+            TWR.WEIGHT_TASK_RESULT_ID "resultId",
+            TWR.RESULT_TOTAL_ID "resultTotalId",
+            TWR.RESULT_GROSS_WEIGHT_TIME "resultGrossWeightTime",
+            TWR.RESULT_TARE_WEIGHT_TIME "resultTareWeightTime",
+            OO.ORDER_ID "orderId"
+        FROM TMSTRUCK_WEIGHT_RESULT TWR
+                 LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TTR .RESULT_TOTAL_ID = TWR .RESULT_TOTAL_ID
+                 LEFT JOIN OMSTRUCK_ORDER OO ON OO .ORDER_ID = TTR .ORDER_ID
+        WHERE OO .ORDER_STATUS = 5 AND OO .ORDER_TYPE != 1 AND TWR .RESULT_NET_WEIGHT IS NOT NULL
+        AND #{nowDate} > TWR .RESULT_GROSS_WEIGHT_TIME
+        AND #{nowDate} > TWR .RESULT_TARE_WEIGHT_TIME
+    </select>
+    <update id="updateLeaveTime">
+        UPDATE TMSTRUCK_LEAVE_FACTORY_RESULT
+        SET TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_OUT_GATE_TIME = SYSDATE,
+            TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_OUT_MODE = '24h自动补扫出厂'
+        WHERE
+            TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_TOTAL_ID = #{resultTotalId}
+    </update>
+    <update id="updateLeaveOrder">
+        UPDATE OMSTRUCK_ORDER
+        SET ORDER_STATUS = 2
+        WHERE ORDER_ID = #{orderId}
+    </update>
 </mapper>

+ 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}
       FETCH NEXT 1 rows only
   </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>