Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

zengyf 2 vuotta sitten
vanhempi
commit
de5e3c2e7c
20 muutettua tiedostoa jossa 528 lisäystä ja 37 poistoa
  1. 16 6
      src/main/java/com/steerinfo/dil/controller/TmstruckTimeTaskResultController.java
  2. 20 0
      src/main/java/com/steerinfo/dil/controller/TmstruckTotalResultController.java
  3. 3 1
      src/main/java/com/steerinfo/dil/mapper/TmstruckEnfactoryResultMapper.java
  4. 8 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.java
  5. 6 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckTimeTaskResultMapper.java
  6. 38 1
      src/main/java/com/steerinfo/dil/mapper/TmstruckTotalResultMapper.java
  7. 1 1
      src/main/java/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.java
  8. 1 1
      src/main/java/com/steerinfo/dil/service/ITmstruckTimeTaskResultService.java
  9. 3 0
      src/main/java/com/steerinfo/dil/service/ITmstruckTotalResultService.java
  10. 5 1
      src/main/java/com/steerinfo/dil/service/impl/TmstruckEnfactoryResultServiceImpl.java
  11. 23 0
      src/main/java/com/steerinfo/dil/service/impl/TmstruckLeaveFactoryResultServiceImpl.java
  12. 18 5
      src/main/java/com/steerinfo/dil/service/impl/TmstruckTimeTaskResultServiceImpl.java
  13. 211 11
      src/main/java/com/steerinfo/dil/service/impl/TmstruckTotalResultServiceImpl.java
  14. 4 2
      src/main/resources/com/steerinfo/dil/mapper/StatisticalReportMapper.xml
  15. 13 2
      src/main/resources/com/steerinfo/dil/mapper/TmstruckEnfactoryResultMapper.xml
  16. 26 0
      src/main/resources/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.xml
  17. 20 0
      src/main/resources/com/steerinfo/dil/mapper/TmstruckTimeTaskResultMapper.xml
  18. 108 2
      src/main/resources/com/steerinfo/dil/mapper/TmstruckTotalResultMapper.xml
  19. 2 2
      src/main/resources/com/steerinfo/dil/mapper/TmstruckUnloadResultMapper.xml
  20. 2 2
      src/main/resources/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.xml

+ 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="司机申请结束")

+ 20 - 0
src/main/java/com/steerinfo/dil/controller/TmstruckTotalResultController.java

@@ -127,4 +127,24 @@ public class TmstruckTotalResultController extends BaseRESTfulController {
         PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,qualityResult);
         return success(pageList);
     }
+
+    /**
+     * 修改订单线路ID,并迁移实绩。目前仅支持采购辅料
+     * @param mapValue
+     * @return
+     */
+    @PostMapping("/changeOrderLine")
+    public RESTfulResult changeOrderLine(@RequestBody(required=false) Map<String,Object> mapValue){
+        try{
+            tmstruckTotalResultService.changeOrderLine(mapValue);
+        }catch (Exception e){
+            e.printStackTrace();
+            if(e.getMessage()==null || e.getMessage().contains("Exception")){
+                return failed("修改失败,未知原因!",e.getMessage());
+            }else{
+                return failed(e.getMessage());
+            }
+        }
+        return success(1);
+    }
 }

+ 3 - 1
src/main/java/com/steerinfo/dil/mapper/TmstruckEnfactoryResultMapper.java

@@ -10,7 +10,7 @@ import java.util.List;
 import java.util.Map;
 
 @Mapper
-public interface TmstruckEnfactoryResultMapper extends IBaseMapper<TmstruckEnfactoryResult, Short> {
+public interface TmstruckEnfactoryResultMapper extends IBaseMapper<TmstruckEnfactoryResult, BigDecimal> {
     //获取采购进口矿进厂实绩
     List<Map<String, Object>> getCGJKEnFactoryResult(Map<String, Object> map);
 
@@ -92,4 +92,6 @@ public interface TmstruckEnfactoryResultMapper extends IBaseMapper<TmstruckEnfac
 
     Map<String, Object> selectEnFactoryResultIdSteel(BigDecimal resultTotalId);
 
+    Map<String, Object> selectEnFactoryResultIdGatepost(BigDecimal resultTotalId);
+
 }

+ 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);
 

+ 38 - 1
src/main/java/com/steerinfo/dil/mapper/TmstruckTotalResultMapper.java

@@ -1,10 +1,11 @@
 package com.steerinfo.dil.mapper;
 
-import com.steerinfo.dil.model.TmstruckTotalResult;
+import com.steerinfo.dil.model.*;
 import com.steerinfo.framework.mapper.IBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 
+import javax.management.ObjectName;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -25,4 +26,40 @@ public interface TmstruckTotalResultMapper extends IBaseMapper<TmstruckTotalResu
 
     //查询当前没有总实绩的运输订单,为其补录
     List<BigDecimal> getOrderForBulu();
+
+    //查询总实绩Id,线路Id
+    Map<String,Object> getLineId(Map<String,Object> map);
+
+    //通过订单Id 查询关联的线路子表顺序
+    List<Map<String, Object>> getLineMesByOrderId(Map<String,Object> map);
+
+    //更新订单线路或者路段顺序号
+    int updateLineId(Map<String,Object> map);
+
+    //查询所有/有效进厂
+    List<TmstruckEnfactoryResult> selectAllEnfactory(Map<String, Object> map);
+
+    //查询所有/有效计量
+    List<TmstruckWeightResult> selectAllWeight(Map<String, Object> map);
+
+    //查询所有/有效装货
+    List<TmstruckLoadResult> selectAllLoad(Map<String, Object> map);
+
+    //查询所有/有效卸货
+    List<TmstruckUnloadResult> selectAllUnload(Map<String, Object> map);
+
+    //查询所有/有效出厂
+    List<TmstruckLeaveFactoryResult> selectAllLeavefactory(Map<String, Object> map);
+
+    //删除所有进厂实绩
+    int deleteEnByEnTotal(Map<String, Object> map);
+
+    //删除所有计量实绩
+    int deleteWeightByEnTotal(Map<String, Object> map);
+
+    //删除所有卸货实绩
+    int deleteUnloadByEnTotal(Map<String, Object> map);
+
+    //删除所有出厂实绩
+    int deleteLeaveByEnTotal(Map<String, Object> map);
 }

+ 1 - 1
src/main/java/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.java

@@ -13,7 +13,7 @@ import java.util.List;
 import java.util.Map;
 
 @Mapper
-public interface TmstruckWeightResultMapper extends IBaseMapper<TmstruckWeightResult, Short> {
+public interface TmstruckWeightResultMapper extends IBaseMapper<TmstruckWeightResult, BigDecimal> {
     //查询最大主键Id
     @Select("select seq_tmstruck_weight_result.nextval from dual")
     BigDecimal selectMaxId();

+ 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);

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

@@ -20,4 +20,7 @@ public interface ITmstruckTotalResultService {
 
     //查询倒库作业
     List<Map<String, Object>> getAllReverseResult(Map<String, Object> mapValue);
+
+    //修改路段顺序号
+    int changeOrderLine(Map<String, Object> mapValue) throws Exception;
 }

+ 5 - 1
src/main/java/com/steerinfo/dil/service/impl/TmstruckEnfactoryResultServiceImpl.java

@@ -179,7 +179,11 @@ public class TmstruckEnfactoryResultServiceImpl implements ITmstruckEnfactoryRes
             selectMap = tmstruckEnfactoryResultMapper.selectEnFactoryResultIdSteel(resultTotalId);
         }
         if(selectMap == null){
-            throw new Exception("该车已进厂!!");
+            if (orderType == 20 || orderType == 12 || orderType == 13 || orderType == 14) {
+                selectMap = tmstruckEnfactoryResultMapper.selectEnFactoryResultIdGatepost(resultTotalId);
+            }else{
+                throw new Exception("该车已进厂!!");
+            }
         }else{
             if(orderType != 1) {
                 BigDecimal segmentSqe = DataChange.dataToBigDecimal(selectMap.get("segmentSqe"));

+ 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));

+ 211 - 11
src/main/java/com/steerinfo/dil/service/impl/TmstruckTotalResultServiceImpl.java

@@ -2,23 +2,17 @@ package com.steerinfo.dil.service.impl;
 
 import com.steerinfo.dil.feign.OmsFeign;
 import com.steerinfo.dil.feign.QmsFeign;
-import com.steerinfo.dil.mapper.TmstruckEnfactoryResultMapper;
-import com.steerinfo.dil.mapper.TmstruckTotalResultMapper;
-import com.steerinfo.dil.mapper.TmstruckWeightResultMapper;
-import com.steerinfo.dil.model.TmstruckEnfactoryResult;
-import com.steerinfo.dil.model.TmstruckTotalResult;
-import com.steerinfo.dil.model.TmstruckWeightResult;
+import com.steerinfo.dil.mapper.*;
+import com.steerinfo.dil.model.*;
 import com.steerinfo.dil.service.ITmstruckTotalResultService;
+import com.steerinfo.dil.util.DataChange;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @ author    :TXF
@@ -40,6 +34,36 @@ public class TmstruckTotalResultServiceImpl implements ITmstruckTotalResultServi
     @Autowired
     TmstruckWeightResultMapper tmstruckWeightResultMapper;
 
+    @Autowired
+    TmstruckLoadResultMapper tmstruckLoadResultMapper;
+
+    @Autowired
+    TmstruckUnloadResultMapper tmstruckUnloadResultMapper;
+
+    @Autowired
+    TmstruckLeaveFactoryResultMapper  tmstruckLeaveFactoryResultMapper;
+
+    @Autowired
+    TmstruckEnfactoryResultServiceImpl tmstruckEnfactoryResultService;
+
+    @Autowired
+    TmstruckLoadResultServiceImpl tmstruckLoadResultService;
+
+    @Autowired
+    TmstruckUnloadResultServiceImpl tmstruckUnloadResultService;
+
+    @Autowired
+    TmstruckWeightResultServiceImpl tmstruckWeightResultService;
+
+    @Autowired
+    TmstruckLeaveFactoryResultServiceImpl tmstruckLeaveFactoryResultService;
+
+    @Autowired
+    TmstruckReturnResultServiceImpl tmstruckReturnResultService;
+
+
+
+
     /**
      * 新增实绩总表
      * 运输订单ID
@@ -152,11 +176,187 @@ public class TmstruckTotalResultServiceImpl implements ITmstruckTotalResultServi
     /**
      * 为已接收没有总实绩的运输订单补录总实绩
      */
-    @Scheduled(fixedRate = 1000*60*5)
+    //@Scheduled(fixedRate = 1000*60*5)
     public void insertTotalForNullOrder(){
         List<BigDecimal> list=tmstruckTotalResultMapper.getOrderForBulu();
         for(BigDecimal orderId:list){
             addTotalResult(orderId);
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int changeOrderLine(Map<String, Object> mapValue) throws Exception {
+        //查询订单详情
+        Map<String,Object> mesMap=tmstruckTotalResultMapper.getLineId(mapValue);
+        if(mesMap==null){
+            throw new Exception("订单状态异常,无法变更!");
+        }
+        //更新线路Id
+        if(mapValue.get("lineId")==null){
+            throw new Exception("请选择线路!");
+        }else if(DataChange.dataToBigDecimal(mesMap.get("lineId")).compareTo(DataChange.dataToBigDecimal(mapValue.get("lineId")))==0){
+            throw new Exception("线路一致,无需更新!");
+        }else{
+            tmstruckTotalResultMapper.updateLineId(mapValue);
+        }
+        //校验订单,如果未接单就直接结束,已接单则继续修改实绩
+        if(DataChange.dataToBigDecimal(mesMap.get("orderStatus")).compareTo(new BigDecimal(4))==0){
+            return 1;
+        }
+        //查询并记录有效实绩,进厂,计量,装货,卸货,出厂
+        mesMap.put("flag","1");//只查询有效实绩
+        List<TmstruckEnfactoryResult> enfactoryResults= tmstruckTotalResultMapper.selectAllEnfactory(mesMap);
+        List<TmstruckWeightResult> tmstruckWeightResults= tmstruckTotalResultMapper.selectAllWeight(mesMap);
+        List<TmstruckUnloadResult> unloadResults=tmstruckTotalResultMapper.selectAllUnload(mesMap);
+        List<TmstruckLeaveFactoryResult> leaveFactoryResults=tmstruckTotalResultMapper.selectAllLeavefactory(mesMap);
+        System.out.println(enfactoryResults);
+        System.out.println(tmstruckWeightResults);
+        System.out.println(unloadResults);
+        System.out.println(leaveFactoryResults);
+        //删除所有旧线路实绩
+        tmstruckTotalResultMapper.deleteEnByEnTotal(mesMap);
+        tmstruckTotalResultMapper.deleteWeightByEnTotal(mesMap);
+        tmstruckTotalResultMapper.deleteUnloadByEnTotal(mesMap);
+        tmstruckTotalResultMapper.deleteLeaveByEnTotal(mesMap);
+        //新增所有新线路实绩
+        mesMap.put("lineId",mapValue.get("lineId"));
+        addAllSonResult(mesMap);
+        //查询并记录所有新实绩
+        System.out.println("-------------------------------------");
+        mesMap.put("flag","0");//打开查询所有
+        List<TmstruckEnfactoryResult> enfactoryResultsNew= tmstruckTotalResultMapper.selectAllEnfactory(mesMap);
+        List<TmstruckWeightResult> tmstruckWeightResultsNew= tmstruckTotalResultMapper.selectAllWeight(mesMap);
+        //List<TmstruckUnloadResult> unloadResultsNew=tmstruckTotalResultMapper.selectAllUnload(mesMap);//卸货和出厂不处理
+        //List<TmstruckLeaveFactoryResult> leaveFactoryResultsNew=tmstruckTotalResultMapper.selectAllLeavefactory(mesMap);
+        System.out.println(enfactoryResultsNew);
+        System.out.println(tmstruckWeightResultsNew);
+        //System.out.println(unloadResultsNew);
+        //System.out.println(leaveFactoryResultsNew);
+        //更新订单信息,按顺序更新
+        for(int i=0;i<enfactoryResults.size();i++){
+            //进厂实绩
+            try{
+                TmstruckEnfactoryResult oldResult=enfactoryResults.get(i);
+                TmstruckEnfactoryResult newResult=enfactoryResultsNew.get(i);
+                if(oldResult!=null && newResult!=null){
+                    newResult.setGatepostId(oldResult.getGatepostId());
+                    newResult.setResultEntryMode(oldResult.getResultEntryMode());
+                    newResult.setResultEntryGateTime(oldResult.getResultEntryGateTime());
+                }
+                tmstruckEnfactoryResultMapper.updateByPrimaryKeySelective(newResult);
+            }catch (Exception e){
+                //数组越界,不处理
+            }
+        }
+        for(int i=0;i<tmstruckWeightResults.size();i++){
+            //计量实绩
+            try{
+                TmstruckWeightResult oldResult=tmstruckWeightResults.get(i);
+                TmstruckWeightResult newResult=tmstruckWeightResultsNew.get(i);
+                if(oldResult!=null && newResult!=null){
+                    newResult.setResultGrossPlaceId(oldResult.getResultGrossPlaceId());
+                    newResult.setResultGrossWeight(oldResult.getResultGrossWeight());
+                    newResult.setResultGrossWeightTime(oldResult.getResultGrossWeightTime());
+                    newResult.setMaterialId(oldResult.getMaterialId());
+                    newResult.setResultPoundNo(oldResult.getResultPoundNo());
+                    newResult.setResultTarePlaceId(oldResult.getResultTarePlaceId());
+                    newResult.setResultTareWeight(oldResult.getResultTareWeight());
+                    newResult.setResultTareWeightTime(oldResult.getResultTareWeightTime());
+                    newResult.setResultNetWeight(oldResult.getResultNetWeight());
+                }
+                tmstruckWeightResultMapper.updateByPrimaryKeySelective(newResult);
+            }catch (Exception e){
+                //数组越界,不处理
+            }
+        }
+        return 1;
+    }
+
+    /**
+     * 通过线路子表路线图生成各实绩
+     * @param map
+     * @return
+     */
+    public int addAllSonResult(Map<String, Object> map){
+        Integer resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId")).intValue();
+        Integer lineId = DataChange.dataToBigDecimal(map.get("lineId")).intValue();
+        int result = 0;
+        //通过总实绩Id 查询关联的线路子表顺序
+        List<Map<String, Object>> segmentList = tmstruckTotalResultMapper.getLineMesByOrderId(map);
+        Map<String,Object> totalIdMap = new HashMap<>();
+        totalIdMap.put("resultTotalId",resultTotalId);
+        totalIdMap.put("lineId", lineId);
+        // 遍历路段顺序号子表
+        int count = 0;
+        BigDecimal lineType = (BigDecimal) segmentList.get(0).get("lineType");
+        if (lineType.intValue() == 4) {
+            count++;
+        }
+        //存放皮重路段顺序号和毛重路段顺序号map
+        Map<String, Object> tareAndGrossSegmentMap = new HashMap<>();
+        for (Map<String,Object> segmentMap : segmentList) {
+            BigDecimal segmentSqe = (BigDecimal) segmentMap.get("segmentSqe");
+            String linkName = (String) segmentMap.get("linkName");
+            totalIdMap.put("segmentSqe",segmentSqe);
+            // 判断是否是计毛
+            if (linkName.equals("计毛")) {
+                // 如果是计量则加一
+                count ++;
+                tareAndGrossSegmentMap.put("grossSegmentSqe", segmentSqe);
+                // 有两个计量的时候则新增实绩
+                if (count == 2) {
+                    totalIdMap.putAll(tareAndGrossSegmentMap);//将皮重顺序号和毛重路段顺序号放进去
+                    tmstruckWeightResultService.addWeightResult(totalIdMap);
+                    // 新增一次则对计数器清零
+                    count = 0;
+                    tareAndGrossSegmentMap.clear(); // 清空毛重皮重 map
+                    result++;
+                }
+            }
+            // 判断是否是计皮
+            if (linkName.equals("计皮")) {
+                // 如果是计皮则加一
+                count ++;
+                tareAndGrossSegmentMap.put("tareSegmentSqe", segmentSqe);
+                // 有两个计量的时候则新增实绩
+                if (count == 2) {
+                    totalIdMap.putAll(tareAndGrossSegmentMap);
+                    tmstruckWeightResultService.addWeightResult(totalIdMap);
+                    // 新增一次则对计数器清零
+                    count = 0;
+                    tareAndGrossSegmentMap.clear(); // 清空毛重皮重 map
+                    result++;
+                }
+            }
+            // 进厂
+            if (linkName.equals("进厂")) {
+                tmstruckEnfactoryResultService.addEnFactoryResult(totalIdMap);
+                result++;
+            }
+            // 出厂
+            if (linkName.equals("出厂")) {
+                tmstruckLeaveFactoryResultService.addLeaveFactory(totalIdMap);
+                result++;
+            }
+            // 装货
+            if (linkName.equals("装货")) {
+                tmstruckLoadResultService.addLoadResult(totalIdMap);
+                result++;
+            }
+            // 卸货
+            if (linkName.equals("卸货")) {
+                tmstruckUnloadResultService.addUnloadResult(totalIdMap);
+                result++;
+            }
+            // 退货
+//            if (linkName.equals("退货")) {
+//                totalIdMap.put("returnReason", map.get("returnReason")); //退货原因 仅退货有用
+//                totalIdMap.put("orderId", map.get("orderId")); //添加新订单ID
+//                tmstruckReturnResultService.addReturnGoodsResult(totalIdMap);
+//                result++;
+//            }
+        }
+        return result;
+    }
 }

+ 4 - 2
src/main/resources/com/steerinfo/dil/mapper/StatisticalReportMapper.xml

@@ -2091,8 +2091,10 @@
                     LEFT JOIN TMSTRUCK_ENFACTORY_RESULT TER
                               ON TER.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
                     LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR
-                              ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
-                             AND TWR.MATERIAL_ID = RM.MATERIAL_ID
+                              ON
+                    TWR.SALE_MATERIAL_ID = ASM.SALE_MATERIAL_ID
+                    and twr.SALE_MATERIAL_ID is not null
+                    OR ( TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID AND TWR.MATERIAL_ID = RM.MATERIAL_ID and twr.sale_material_id is null )
                     LEFT JOIN TMSTRUCK_LOAD_RESULT TLR
                               ON TLR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
                                   AND TLR.MATERIAL_ID = RM.MATERIAL_ID

+ 13 - 2
src/main/resources/com/steerinfo/dil/mapper/TmstruckEnfactoryResultMapper.xml

@@ -125,7 +125,7 @@
             </if>
         </where>
     </sql>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
         delete from TMSTRUCK_ENFACTORY_RESULT
         where RESULT_ID = #{resultId,jdbcType=DECIMAL}
     </delete>
@@ -339,7 +339,7 @@
         </set>
         where RESULT_ID = #{resultId,jdbcType=DECIMAL}
     </update>
-    <select id="selectByPrimaryKey" parameterType="java.lang.Short" resultMap="BaseResultMap">
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
         <include refid="select"/>
         where RESULT_ID = #{resultId,jdbcType=DECIMAL}
     </select>
@@ -1562,5 +1562,16 @@
               order by TER.SEGMEN_SQE)
         where rownum = 1
     </select>
+    <select id="selectEnFactoryResultIdGatepost" resultType="java.util.Map">
+        select *
+        from (select TER.RESULT_ID       "resultId",
+                     TER.SEGMEN_SQE      "segmentSqe", --进厂的路段顺序号
+                     TER.RESULT_ENTRY_GATE_TIME,
+                     TER.INSERT_UPDATE_REMARK   "insertUpdateRemark"
+              from TMSTRUCK_ENFACTORY_RESULT TER
+              where TER.RESULT_TOTAL_ID = #{resultTotalId}
+              order by TER.SEGMEN_SQE desc)
+        where rownum = 1
+    </select>
 
 </mapper>

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

@@ -1507,4 +1507,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>

+ 108 - 2
src/main/resources/com/steerinfo/dil/mapper/TmstruckTotalResultMapper.xml

@@ -331,14 +331,14 @@
     #{item.resultTotalId,jdbcType=DECIMAL}
      </foreach>
   </update>
-  <delete id="batchDelete" parameterType="java.util.List">
+    <delete id="batchDelete" parameterType="java.util.List">
     delete from TMSTRUCK_TOTAL_RESULT
     where RESULT_TOTAL_ID in
     <foreach close=")" collection="list" item="id" open="(" separator=",">
       #{id}
     </foreach>
   </delete>
-  <!-- 友情提示!!!-->
+    <!-- 友情提示!!!-->
   <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
 <!-- 查询计数实绩 -->
   <select id="selectCountList" resultType="java.util.Map" parameterType="java.lang.String">
@@ -595,4 +595,110 @@
                                      LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TTR .ORDER_ID = OO .ORDER_ID
         WHERE TTR .RESULT_TOTAL_ID IS NULL and ORDER_STATUS=5
     </select>
+    <select id="getLineId" resultType="java.util.Map">
+        SELECT
+            TTR.RESULT_TOTAL_ID "resultTotalId",
+            OO.LINE_ID "lineId",
+            OO.ORDER_STATUS "orderStatus"
+        FROM OMSTRUCK_ORDER OO
+        LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TTR .ORDER_ID = OO .ORDER_ID
+        WHERE OO.ORDER_ID = #{orderId} AND OO.ORDER_STATUS IN (4,5) AND OO.ORDER_TYPE=5
+    </select>
+    <select id="getLineMesByOrderId" resultType="java.util.Map">
+        select  RLS.SEGMENT_SQE           "segmentSqe",
+                RLS.SEGMENT_START_NODE_ID "type",
+                RL.LINK_NAME              "linkName",
+                RLI.LINE_TYPE             "lineType"
+        from RMS_LINE_SEGEMNT RLS
+                 left join RMS_LINK RL
+                           on RL.LINK_ID = RLS.SEGMENT_START_NODE_ID
+                 left join RMS_LINE RLI
+                           ON RLI.LINE_ID = RLS.LINE_ID
+        where RLS.LINE_ID = #{lineId}
+          AND RLS.DELETED = 0
+        order by "segmentSqe"
+    </select>
+    <update id="updateLineId">
+        UPDATE OMSTRUCK_ORDER
+        SET LINE_ID=#{lineId}
+        <if test="orderStatus!=null">
+            ,ORDER_STATUS=#{orderStatus}
+        </if>
+        WHERE ORDER_ID=#{orderId}
+    </update>
+    <select id="selectAllEnfactory" resultType="com.steerinfo.dil.model.TmstruckEnfactoryResult">
+        SELECT RESULT_ID "resultId",
+        RESULT_TOTAL_ID "resultTotalId",
+        TMSTRUCK_ENFACTORY_RESULT.GATEPOST_ID "gatepostId",
+        RESULT_ENTRY_MODE   "resultEntryMode",
+        RESULT_ENTRY_GATE_TIME "resultEntryGateTime"
+        FROM TMSTRUCK_ENFACTORY_RESULT
+        WHERE RESULT_TOTAL_ID=#{resultTotalId}
+        <if test="flag==null || flag==1">
+            AND RESULT_ENTRY_GATE_TIME IS NOT NULL
+        </if>
+    </select>
+    <select id="selectAllWeight" resultType="com.steerinfo.dil.model.TmstruckWeightResult">
+        SELECT TMSTRUCK_WEIGHT_RESULT.WEIGHT_TASK_RESULT_ID "weightTaskResultId",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_TOTAL_ID "resultTotalId",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_POUND_NO "resultPoundNo",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_GROSS_WEIGHT "resultGrossWeight",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_GROSS_WEIGHT_TIME "resultGrossWeightTime",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_TARE_WEIGHT "resultTareWeight",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_TARE_WEIGHT_TIME "resultTareWeightTime",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_NET_WEIGHT "resultNetWeight",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_GROSS_PLACE_ID "resultGrossPlaceId",
+        TMSTRUCK_WEIGHT_RESULT.RESULT_TARE_PLACE_ID "resultTarePlaceId",
+        TMSTRUCK_WEIGHT_RESULT.MATERIAL_ID "materialId"
+        FROM TMSTRUCK_WEIGHT_RESULT
+        WHERE RESULT_TOTAL_ID=#{resultTotalId}
+        <if test="flag==null || flag==1">
+            AND (RESULT_TARE_WEIGHT_TIME IS NOT NULL OR RESULT_GROSS_WEIGHT_TIME IS NOT NULL)
+        </if>
+    </select>
+    <select id="selectAllLoad" resultType="com.steerinfo.dil.model.TmstruckLoadResult">
+        SELECT  *
+        FROM TMSTRUCK_LOAD_RESULT
+        WHERE RESULT_TOTAL_ID=#{resultTotalId}
+        <if test="flag==null || flag==1">
+            AND RESULT_LOAD_END_TIME IS NOT NULL
+        </if>
+    </select>
+    <select id="selectAllUnload" resultType="com.steerinfo.dil.model.TmstruckUnloadResult">
+        SELECT
+        TMSTRUCK_UNLOAD_RESULT.RESULT_ID "resultId",
+        TMSTRUCK_UNLOAD_RESULT.RESULT_TOTAL_ID "resultTotalId",
+        TMSTRUCK_UNLOAD_RESULT.RESULT_START_TIME "resultStartTime",
+        TMSTRUCK_UNLOAD_RESULT.RESULT_END_TIME "resultEndTime"
+        FROM TMSTRUCK_UNLOAD_RESULT
+        WHERE RESULT_TOTAL_ID=#{resultTotalId}
+        <if test="flag==null || flag==1">
+            AND RESULT_END_TIME IS NOT NULL
+        </if>
+    </select>
+    <select id="selectAllLeavefactory" resultType="com.steerinfo.dil.model.TmstruckLeaveFactoryResult">
+        SELECT
+        TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_ID  "resultId",
+        TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_TOTAL_ID  "resultTotalId",
+        TMSTRUCK_LEAVE_FACTORY_RESULT.GATEPOST_ID  "gatepostId",
+        TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_OUT_MODE "resultOutMode",
+        TMSTRUCK_LEAVE_FACTORY_RESULT.RESULT_OUT_GATE_TIME "resultOutGateTime"
+        FROM TMSTRUCK_LEAVE_FACTORY_RESULT
+        WHERE RESULT_TOTAL_ID=#{resultTotalId}
+        <if test="flag==null || flag==1">
+            AND RESULT_OUT_GATE_TIME IS NOT NULL
+        </if>
+    </select>
+    <delete id="deleteEnByEnTotal">
+        DELETE FROM TMSTRUCK_ENFACTORY_RESULT WHERE RESULT_TOTAL_ID=#{resultTotalId}
+    </delete>
+    <delete id="deleteWeightByEnTotal">
+        DELETE FROM TMSTRUCK_WEIGHT_RESULT WHERE RESULT_TOTAL_ID=#{resultTotalId}
+    </delete>
+    <delete id="deleteUnloadByEnTotal">
+        DELETE FROM TMSTRUCK_UNLOAD_RESULT WHERE RESULT_TOTAL_ID=#{resultTotalId}
+    </delete>
+    <delete id="deleteLeaveByEnTotal">
+        DELETE FROM TMSTRUCK_LEAVE_FACTORY_RESULT WHERE RESULT_TOTAL_ID=#{resultTotalId}
+    </delete>
 </mapper>

+ 2 - 2
src/main/resources/com/steerinfo/dil/mapper/TmstruckUnloadResultMapper.xml

@@ -162,7 +162,7 @@
             </if>
         </where>
     </sql>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
         delete from TMSTRUCK_UNLOAD_RESULT
         where RESULT_ID = #{resultId,jdbcType=DECIMAL}
     </delete>
@@ -443,7 +443,7 @@
         </set>
         where RESULT_ID = #{resultId,jdbcType=DECIMAL}
     </update>
-    <select id="selectByPrimaryKey" parameterType="java.lang.Short" resultMap="BaseResultMap">
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
         <include refid="select" />
         where RESULT_ID = #{resultId,jdbcType=DECIMAL}
     </select>

+ 2 - 2
src/main/resources/com/steerinfo/dil/mapper/TmstruckWeightResultMapper.xml

@@ -185,7 +185,7 @@
             </if>
         </where>
     </sql>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
+    <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
         delete from TMSTRUCK_WEIGHT_RESULT
         where WEIGHT_TASK_RESULT_ID = #{weightTaskResultId,jdbcType=DECIMAL}
     </delete>
@@ -509,7 +509,7 @@
         </set>
         where WEIGHT_TASK_RESULT_ID = #{weightTaskResultId,jdbcType=DECIMAL}
     </update>
-    <select id="selectByPrimaryKey" parameterType="java.lang.Short" resultMap="BaseResultMap">
+    <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
         <include refid="select"/>
         where WEIGHT_TASK_RESULT_ID = #{weightTaskResultId,jdbcType=DECIMAL}
     </select>