Przeglądaj źródła

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

luobang 2 lat temu
rodzic
commit
83593b4e0f

+ 21 - 1
src/main/java/com/steerinfo/dil/controller/TmstruckTimeTaskResultController.java

@@ -196,6 +196,23 @@ public class TmstruckTimeTaskResultController extends BaseRESTfulController {
         return success(i);
     }
 
+
+
+    @ApiOperation(value="修改计时时长")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapValue", value = "运输订单号", required = false, dataType = "Map"),
+    })
+    @PostMapping("/modifyTimeTaskResult")
+    public RESTfulResult modifyTimeTaskResult(@RequestBody(required=false) Map<String,Object> mapValue) throws Exception{
+        int i = 0;
+        try{
+            i=tmstruckTimeTaskResultService.modifyTimeTaskResult(mapValue);
+        }catch (Exception e){
+            return failed(e.getMessage());
+        }
+        return success(i);
+    }
+
     @ApiOperation(value="查询计时作业")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),
@@ -214,11 +231,14 @@ public class TmstruckTimeTaskResultController extends BaseRESTfulController {
                                           String startTime,
                                           String endTime
     ){
+        if (mapValue==null){
+            mapValue=new HashMap<>();
+        }
         DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
         if (con!=null&&!con.equals("undifined")&&!con.equals("")){
             mapValue.put("con","%" + con + "%");
         }
-        if (userId!=null&&!userId.equals("undifined")&&!con.equals("")){
+        if (userId!=null&&!userId.equals("undifined")&&!userId.equals("")){
             mapValue.put("userId",userId);
         }
         PageHelper.startPage(pageNum,pageSize);

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

@@ -42,4 +42,10 @@ public interface TmstruckTimeTaskResultMapper extends IBaseMapper<TmstruckTimeTa
 
     Map<String,Object> getRequirementInfo(BigDecimal orderId1);
 
+    //查找计时开始时间
+    List<Map<String,Object>> getStartTimeTask(Map<String,Object> map);
+
+    //查找总时长
+    Map<String,Object> getResultValue(String orderNumber);
+
 }

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

@@ -62,6 +62,9 @@ public interface ITmstruckTimeTaskResultService {
     //生成账单
     int genernateInwardTime(Map<String,Object> map);
 
+    //修改计时时长
+    int modifyTimeTaskResult(Map<String, Object> mapValue) throws Exception;
+
 
     //修改计时作业
 //    int updateTimeTaskResult(Map<String,Object> map);

+ 126 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckTimeTaskResultServiceImpl.java

@@ -1,5 +1,6 @@
 package com.steerinfo.dil.service.impl;
 
+import com.alibaba.druid.sql.visitor.functions.If;
 import com.steerinfo.dil.feign.AmsFeign;
 import com.steerinfo.dil.feign.BmsTruckFeign;
 import com.steerinfo.dil.feign.OmsFeign;
@@ -15,6 +16,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.xml.crypto.Data;
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -479,4 +482,127 @@ public class TmstruckTimeTaskResultServiceImpl implements ITmstruckTimeTaskResul
 
         return i;
     }
+
+    //修改计时时长
+    @Transactional(rollbackFor = {Exception.class})
+    @Override
+    public int modifyTimeTaskResult(Map<String, Object> mapValue) throws Exception {
+        String orderNumber =(String) mapValue.get("orderNumber");
+        int i=0;
+        Date resultTimeNew = null;
+        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String resultTime1 = (String) mapValue.get("resultTime");
+        try {
+             resultTimeNew = simpleDateFormat.parse( resultTime1);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        long resultTime;
+        BigDecimal resultValueNew=null;
+        BigDecimal resultTimeEnd=null;
+        TmstruckTimeTaskResult tmstruckTimeTaskResult=new TmstruckTimeTaskResult();
+        //查找计时开始时间
+        List<Map<String, Object>> startTimeTaskIdList = tmstruckTimeTaskResultMapper.getStartTimeTask(mapValue);
+        Map<String,Object> map = tmstruckTimeTaskResultMapper.getResultValue(orderNumber);
+        BigDecimal orderId =DataChange.dataToBigDecimal(map.get("orderId"));
+        BigDecimal timeTaskResultId = DataChange.dataToBigDecimal(map.get("timeTaskResultId"));
+        BigDecimal resultValue =DataChange.dataToBigDecimal(map.get("resultValue"));
+        if (startTimeTaskIdList.size() != 1) {
+            //根据运输订单查找是否有多条计时开始时间
+            throw new Exception("计时开始超过一条或者没有计时开始时间");
+        } else {
+            Map<String, Object> stringObjectMap = startTimeTaskIdList.get(0);
+           //获取计时总时长的实绩id
+            Date resultTimeOld =(Date)stringObjectMap.get("resultTime");
+            BigDecimal timeTaskResultIdStart = DataChange.dataToBigDecimal(stringObjectMap.get("timeTaskResultId"));
+            if (DataChange.dataToBigDecimal(mapValue.get("resultType")).intValue()==1) {
+                //修改计时开始时间
+                //获取修改之前的计时开始时间,如果修改之前的计时开始时间大于修改之后的修改时间就date(resultTimeOld)-date(resultTimeNew)
+                //resultValue+相差时长
+                if (resultTimeOld.getTime()>resultTimeNew.getTime()) {
+                    resultTime = resultTimeOld.getTime() - resultTimeNew.getTime();
+                    resultTimeEnd = new BigDecimal(resultTime / (1000 * 60));
+                    resultValueNew = resultTimeEnd.add(resultValue);
+                }
+                //获取修改之前的计时开始时间,如果修改之前的计时开始时间大于修改之后的修改时间就date(resultTimeNew)-date(resultTimeOld)
+                //resultValue-相差时长
+                if (resultTimeNew.getTime()>resultTimeOld.getTime()) {
+                    resultTime = resultTimeNew.getTime() - resultTimeOld.getTime();
+                    resultTimeEnd = new BigDecimal(resultTime / (1000 * 60));
+                    resultValueNew = resultValue.subtract(resultTimeEnd);
+                }
+                tmstruckTimeTaskResult.setTimeTaskResultId(timeTaskResultIdStart);
+                tmstruckTimeTaskResult.setResultTime(resultTimeNew);
+                i+= tmstruckTimeTaskResultMapper.updateByPrimaryKeySelective(tmstruckTimeTaskResult);
+            }else if (DataChange.dataToBigDecimal(mapValue.get("resultType")).intValue()==3){
+                //修改计时结束时间
+                //获取修改之后的计时结束时间,如果修改之前的计时结束时间大于修改之后的修改时间就date(resultTimeOld)-date(resultTimeNew)
+                //resultValue-相差时长
+                if (resultTimeOld.getTime()>resultTimeNew.getTime()) {
+                    resultTime = resultTimeOld.getTime() - resultTimeNew.getTime();
+                    resultTimeEnd = new BigDecimal(resultTime / (1000 * 60));
+                    resultValueNew=resultValue.subtract(resultTimeEnd);
+                }
+                //获取修改之后的计时结束时间,如果修改之前的计时结束时间大于修改之后的修改时间就date(resultTimeNew)-date(resultTimeOld)
+                //resultValue+相差时长
+                if (resultTimeNew.getTime()>resultTimeOld.getTime()) {
+                    resultTime = resultTimeNew.getTime() - resultTimeOld.getTime();
+                    System.out.println(resultTime);
+                    resultTimeEnd = new BigDecimal(resultTime / (1000 * 60));
+                    //新的计时时长
+                    resultValueNew=resultValue.add(resultTimeEnd);
+                }
+                tmstruckTimeTaskResult.setTimeTaskResultId(timeTaskResultIdStart);
+                tmstruckTimeTaskResult.setResultTime(resultTimeNew);
+                i+= tmstruckTimeTaskResultMapper.updateByPrimaryKeySelective(tmstruckTimeTaskResult);
+            }else {
+                throw new Exception("暂停时长不支持修改");
+            }
+            TmstruckTimeTaskResult tmstruckTimeTaskResult1=new TmstruckTimeTaskResult();
+            tmstruckTimeTaskResult1.setTimeTaskResultId(timeTaskResultId);
+            Map<String, Object> requirementInfo = tmstruckTimeTaskResultMapper.getRequirementInfo(orderId);
+            String capacityTypeName =(String) requirementInfo.get("capacityTypeName");
+            if (capacityTypeName.contains("吊车")) {
+                //100吨以下
+                if (resultValueNew==null){
+                    throw new Exception("请确认是否修改了计时开始/结束时间");
+                }
+                BigDecimal hours=new BigDecimal(resultValueNew.intValue() / 60);
+                BigDecimal minutes=new BigDecimal(resultValueNew.intValue()%60);
+                int hour = Integer.parseInt(String.valueOf(hours));
+                if (TwoHour.contains(capacityTypeName)) {
+                    //判断是否小于2个小时
+                    if (hour<2&&hour>0){
+                        //设置为两个小时
+                        tmstruckTimeTaskResult1.setResultAboutTime(2+"小时");
+                    }else {
+                        //设置实际作业时长-dateTime3
+                        tmstruckTimeTaskResult1.setResultAboutTime(hour+"小时"+minutes+"分钟");
+                    }
+                    //如果为100吨以上吊车
+                }else if (FourHour.contains(capacityTypeName)){
+                    //1、如实际使用时间不足4小时按照(使用时间+4小时)进行最终结算
+                    if (hour<0) {
+                        tmstruckTimeTaskResult1.setResultAboutTime("4小时");
+                    }
+                    else if (hour<4&&hour>=0){
+                        //计算小时和分钟
+                        tmstruckTimeTaskResult1.setResultAboutTime(4+hours.intValue()+"小时"+minutes+"分钟");
+                    }else if (hour>=4&&hour<8){
+                        //2、如实际使用时间超出4小时加上车辆往返时间4小时超过8小时的按8小时计算
+                        tmstruckTimeTaskResult1.setResultAboutTime(8+"小时");
+                    }else if (hour>=8){
+                        tmstruckTimeTaskResult1.setResultAboutTime(hours+"小时"+minutes+"分钟");
+                    }
+                }
+            }
+
+            tmstruckTimeTaskResult1.setInsertUpdateRemark("管理员修改时间");
+            tmstruckTimeTaskResult1.setUpdateTime(new Date());
+            tmstruckTimeTaskResult1.setResultValue(resultValueNew);
+            tmstruckTimeTaskResult1.setUpdateUsername("admin");
+             i+=tmstruckTimeTaskResultMapper.updateByPrimaryKeySelective(tmstruckTimeTaskResult1);
+        }
+        return i;
+    }
 }

+ 26 - 1
src/main/resources/com/steerinfo/dil/mapper/TmstruckTimeTaskResultMapper.xml

@@ -761,7 +761,7 @@
       or RS.SHIPPER_NAME LIKE #{con}
     </if>
     <if test="userId!=null">
-      AND AIR.INSERT_USERNAME LIKE #{userId}
+      AND  instr(AIR.INSERT_USERNAME,#{userId}) > 0
     </if>
     <if test="oneDate != null">
       and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;= TTTR.INSERT_TIME
@@ -876,4 +876,29 @@
     where oo.ORDER_ID = #{orderId1}
   </select>
 
+<!-- 查找计时开始时间-->
+  <select id="getStartTimeTask" resultType="java.util.Map" parameterType="java.util.Map">
+    select TTTR.TIME_TASK_RESULT_ID "timeTaskResultId",
+           TTTR.RESULT_TIME "resultTime"
+    from OMSTRUCK_ORDER OO
+    LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+    ON OO.ORDER_ID=TTR.ORDER_ID
+    LEFT JOIN TMSTRUCK_TIME_TASK_RESULT TTTR
+    ON TTTR.RESULT_TOTAL_ID=TTR.RESULT_TOTAL_ID
+    WHERE  TTTR.RESULT_TIME_TYPE = #{resultType} and OO.ORDER_NUMBER = #{orderNumber}
+  </select>
+
+<!-- 查找计时总时长-->
+  <select id="getResultValue" resultType="java.util.Map" parameterType="java.lang.String">
+    select TTTR.RESULT_VALUE "resultValue",
+            TTTR.TIME_TASK_RESULT_ID "timeTaskResultId",
+           OO.ORDER_ID "orderId"
+    from OMSTRUCK_ORDER OO
+     LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+    ON OO.ORDER_ID=TTR.ORDER_ID
+    LEFT JOIN TMSTRUCK_TIME_TASK_RESULT TTTR
+    ON TTR.RESULT_TOTAL_ID= TTTR.RESULT_TOTAL_ID
+    WHERE  TTTR.RESULT_TIME_TYPE= 3 AND OO.ORDER_NUMBER=#{orderNumber}
+  </select>
+
 </mapper>