HUJIANGUO 3 年之前
父節點
當前提交
85bdcfe98d

+ 2 - 2
pom.xml

@@ -109,8 +109,8 @@
                     <!--包名-->
                     <targetPackage>com.steerinfo.dil</targetPackage>
                     <tables>
-                        <param>RMS_SUPPLIER</param>
-<!--                        <param>RMS_CONSIGNEE</param>-->
+<!--                        <param>Omstruck_Order</param>-->
+<!--                        <param>TMSTRAIN_WEIGHT_RESULT</param>-->
                     </tables>
                 </configuration>
                 <executions>

+ 22 - 0
src/main/java/com/steerinfo/dil/controller/OmstruckOrderController.java

@@ -11,6 +11,7 @@ import com.steerinfo.dil.util.PageListAdd;
 
 import com.steerinfo.framework.controller.RESTfulResult;
 import com.steerinfo.framework.service.pagehelper.PageHelper;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -312,10 +313,21 @@ public class OmstruckOrderController extends BaseRESTfulController {
         return success(pageList);
 
     }
+    @ApiOperation(value="判断一车多单是否还有订单,如果还有就推送消息再给司机")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name ="mapValue",value = "orderId")
+    })
+    @PostMapping("/pushMessageToDriver")
+    public RESTfulResult pushMessageToDriver(@RequestBody Map<String,Object> mapValue){
+
+        omstruckOrderService.pushMessageToDriver(mapValue);
+        return null;
+    }
 
     @ApiOperation(value = "司机接收、拒绝接单")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "map", value = "运输订单主键id加同意/拒绝状态码/拒绝原因insertUpdateRemark", required = false, dataType = "Map"),
+            @ApiImplicitParam(name = "map", value = "运输订单主键id加同意/拒绝状态码/拒绝原因insertUpdateRemark", required = false, dataType = "Map"),
     })
     @PostMapping("/driverReceiveOrRefuse")
     public RESTfulResult driverReceiveOrRefuse(@RequestBody Map<String, Object> map) {
@@ -1341,6 +1353,16 @@ public class OmstruckOrderController extends BaseRESTfulController {
     @PostMapping("/driverConfirmation")
     public RESTfulResult driverConfirmation(@RequestBody(required = false) Map<String,Object> mapvalue) {
         int result = omstruckOrderService.driverConfirmation(mapvalue);
+        if(result == 0){
+            return failed(result);
+        }
+        return success(result);
+    }
+
+    @ApiOperation(value = "查询订单是否确认")
+    @PostMapping("/getDriverConfirmation")
+    public RESTfulResult getDriverConfirmation(@RequestBody(required = false) Map<String,Object> map) {
+        boolean result = omstruckOrderService.getDriverConfirmation(map);
         return success(result);
     }
 

+ 1 - 0
src/main/java/com/steerinfo/dil/controller/OmstruckOrderSeparateController.java

@@ -146,6 +146,7 @@ public class OmstruckOrderSeparateController extends BaseRESTfulController {
             esFeign.insertIndex(allTruckOrder);
             //删除
             allTruckOrder.remove(allTruckOrder.size() - 1);
+            allTruckOrder.remove(allTruckOrder.size() - 1);
         }
         if (allTruckOrder == null)
             allTruckOrder = omstruckOrderSeparateService.getInputOrderList(mapValue);

+ 5 - 0
src/main/java/com/steerinfo/dil/feign/AmsFeign.java

@@ -19,4 +19,9 @@ public interface AmsFeign {
     //更改计划子表重量
     @PostMapping("api/v1/ams/amstruckpurplanmaterial/updateMaterial")
     RESTfulResult updateMaterial(@RequestBody(required = false) Map<String, Object> map);
+
+
+    //更改计划子表重量
+    @PostMapping("api/v1/ams/amstrucksporadicorders/addSporadicOrderTimes")
+    RESTfulResult addSporadicOrderTimes(@RequestBody(required = false) Map<String, Object> map);
 }

+ 16 - 0
src/main/java/com/steerinfo/dil/mapper/OmstruckOrderMapper.java

@@ -256,4 +256,20 @@ public interface OmstruckOrderMapper extends IBaseMapper<OmstruckOrder, BigDecim
     BigDecimal getCarrierIdBySSO(String carrierSsoId);
 
     List<Map<String, Object>> getOrderMaterialList(BigDecimal orderId);
+
+    //通过订单查询趟次
+    Integer getSporadicOrderTimes(BigDecimal orderId);
+
+    //查询订单是否确认
+    Integer getDriverConfirmation(BigDecimal orderId);
+
+    //查看当前订单最大路段顺序号 与当前订单路段顺序号
+    Map<String, Object> getMaxLineSeqByOrderId(BigDecimal orderId);
+
+    //通过订单id查询零星订单id,运力id
+    Map<String, Object> getSporadicOrdermapAddOrder(BigDecimal orderId);
+//
+//    //通过订单查询趟次
+//    Integer getSporadicOrderTimes(BigDecimal orderId);
+
 }

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

@@ -2,6 +2,7 @@ package com.steerinfo.dil.mapper;
 
 import com.steerinfo.dil.model.OmstruckOrder;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -75,9 +76,16 @@ public interface OmstruckOrderSeparateMapper {
     // 查询销售订单的物资件数或重量
     List<Map<String, Object>> getWeightOrNumber(BigDecimal saleOrderMaterialId);
 
+
+    int updateTimes(@Param("orderPlanId") BigDecimal orderPlanId, @Param("times")int times);
+
     //查询当前车辆之前所有已完成的订单
     List<Map<String, Object>> getCapacityAllOrder(String capacityNumber);
 
     //查询订单发货日期(订单类型为2)
     Integer getDeliveryDate(Object orderId);
+
+
+//    int updateTimes(@Param("orderPlanId") BigDecimal orderPlanId, @Param("times")int times);
+
 }

+ 7 - 0
src/main/java/com/steerinfo/dil/service/IOmstruckOrderSeparateService.java

@@ -2,6 +2,7 @@ package com.steerinfo.dil.service;
 
 import com.steerinfo.dil.model.OmstruckOrder;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -17,9 +18,15 @@ public interface IOmstruckOrderSeparateService {
 
     //根据运输订单id修改运力id
     int updateOmstruckOrder(OmstruckOrder omstruckOrder);
+
+
     List<Map<String,Object>> getUnloadOrderMaterial(Map<String, Object> map);
+
     // 承运商销售分派运输订单给司机
     Integer addSaleTruckOrder(Map<String, Object> mapValue);
     // 关闭订单
     int closeOrder(Integer orderId);
+
+    //更改趟次
+    int updateTimes(BigDecimal orderPlanId, int i);
 }

+ 7 - 0
src/main/java/com/steerinfo/dil/service/IOmstruckOrderService.java

@@ -171,6 +171,9 @@ public interface IOmstruckOrderService {
     //司机确认订单
     int driverConfirmation(Map<String, Object> map);
 
+    //查询订单是否确认
+    boolean getDriverConfirmation(Map<String, Object> map);
+
     //通过运输订单号查询订单信息给司机
     Map<String, Object> getMessageToApp(Map<String, Object> map);
 
@@ -179,4 +182,8 @@ public interface IOmstruckOrderService {
 
     // 新增采购进口矿订单
     int addInputOrder(Map<String, Object> mapValue);
+
+    void pushMesToWebsocket(Map<String, Object> map);
+
+    void pushMessageToDriver(Map<String, Object> mapValue);
 }

+ 10 - 0
src/main/java/com/steerinfo/dil/service/impl/OmstruckOrderSeparateServiceImpl.java

@@ -395,6 +395,10 @@ public class OmstruckOrderSeparateServiceImpl implements IOmstruckOrderSeparateS
         return result;
     }
 
+    @Override
+    public int updateTimes(BigDecimal orderPlanId, int times) {
+        return omstruckOrderSeparateMapper.updateTimes(orderPlanId, times);
+    }
     /**
      * 根据运单id关闭运输订单
      * @param orderId
@@ -418,4 +422,10 @@ public class OmstruckOrderSeparateServiceImpl implements IOmstruckOrderSeparateS
     public List<Map<String, Object>> getCapacityAllOrder(String capacityNumber){
         return omstruckOrderSeparateMapper.getCapacityAllOrder(capacityNumber);
     }
+
+
+//    @Override
+//    public int updateTimes(BigDecimal orderPlanId, int times) {
+//         return omstruckOrderSeparateMapper.updateTimes(orderPlanId,times);
+//       }
 }

+ 71 - 7
src/main/java/com/steerinfo/dil/service/impl/OmstruckOrderServiceImpl.java

@@ -499,6 +499,27 @@ public class OmstruckOrderServiceImpl implements IOmstruckOrderService {
         System.out.println(s);
     }
 
+    @Override//判断一车多单是否还有订单,如果又就再推送消息给他
+    public void pushMessageToDriver(Map<String, Object> mapValue) {
+        Map<String,Object> mapAddOrder  =omstruckOrderMapper.getSporadicOrdermapAddOrder(new BigDecimal(mapValue.get("orderId").toString()));
+        BigDecimal sporadicOrderTimes = DataChange.dataToBigDecimal(mapAddOrder.get("sporadicOrderTimes"));
+        BigDecimal sporadicOrderId = DataChange.dataToBigDecimal(mapAddOrder.get("sporadicOrderId"));
+        BigDecimal orderId = DataChange.dataToBigDecimal(mapValue.get("orderId"));
+        BigDecimal capacityId = DataChange.dataToBigDecimal(mapAddOrder.get("capacityId"));
+        Map<String, Object> addMapSporadicOrder = new HashMap<>();
+        addMapSporadicOrder.put("sporadicOrderId",sporadicOrderId);
+        addMapSporadicOrder.put("orderId",orderId);
+        List<Map<String,Object>> mapList = new ArrayList<>();
+        Map<String,Object> map=new HashMap<>();
+        map.put("capacityId",capacityId);
+        mapList.add(map);
+        addMapSporadicOrder.put("mapList",mapList);
+        if (sporadicOrderTimes.intValue()>0){
+            //mapvalue需要orderId,零星订单id,maplist放一个运力id
+            amsFeign.addSporadicOrderTimes(addMapSporadicOrder);
+        }
+    }
+
     /**
      * 销售物流,下发订单
      *
@@ -545,12 +566,12 @@ public class OmstruckOrderServiceImpl implements IOmstruckOrderService {
      */
     @Override
     @Transactional
-    public int driverReceiveOrRefuse(Map<String, Object> map) {
+    public synchronized int driverReceiveOrRefuse(Map<String, Object> map) {
         BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
         OmstruckOrder omstruckOrder = new OmstruckOrder();
-        if((Integer) map.get("orderReceiveStatus") == 1){
+        if((Integer) map.get("orderReceiveStatus") == 1) {
             List<Integer> orderIdList = omstruckOrderMapper.getReceiveOrderIdListByCapacityNum((String) map.get("capacityNumber"));
-            if(orderIdList.size() > 0){
+            if (orderIdList.size() > 0) {
                 return 0;
             }
             omstruckOrder.setOrderStatus(new BigDecimal(5)); //5 :已接收
@@ -558,7 +579,19 @@ public class OmstruckOrderServiceImpl implements IOmstruckOrderService {
             Map<String, Object> orderMessage = omstruckOrderSeparateMapper.getOrderMessagge(orderId);
             //添加各个实绩
             omstruckOrderSeparateService.addAllSonResult(orderMessage);
-        }else { //其他状态都视为 拒绝接单
+
+            //判断订单是否是一车多单
+            BigDecimal orderType = (BigDecimal) orderMessage.get("orderType");
+            if (orderType.intValue()==15 || orderType.intValue()==16) {
+                //通过订单查询趟次
+                Integer sporadicOrderTimes = omstruckOrderMapper.getSporadicOrderTimes(orderId);
+                //生成作业实绩之后、更改订单数量
+                if (orderMessage.containsKey("orderPlanId") && sporadicOrderTimes > 0) {
+                    int state = omstruckOrderSeparateService.updateTimes(new BigDecimal(orderMessage.get("orderPlanId").toString()), sporadicOrderTimes - 1);
+                    System.out.println(state);
+                }
+            }
+        } else { //其他状态都视为 拒绝接单
             omstruckOrder.setOrderStatus(new BigDecimal(6));
             //添加拒绝原因
             omstruckOrder.setInsertUpdateRemark((String) map.get("insertUpdateRemark"));
@@ -613,7 +646,6 @@ public class OmstruckOrderServiceImpl implements IOmstruckOrderService {
     /**
      * 司机接单推送数据
      * 车牌号
-     *
      * @param
      * @return
      */
@@ -1576,15 +1608,47 @@ public class OmstruckOrderServiceImpl implements IOmstruckOrderService {
     @Override
     public int driverConfirmation(Map<String, Object> map) {
         OmstruckOrder omstruckOrder = new OmstruckOrder();
+        BigDecimal orderId;
         //通过运输订单号查询运输订单Id
-        Integer orderId = omstruckOrderMapper.getOrderIdByOrderNumber((String) map.get("orderNumber"));
-        omstruckOrder.setOrderId(new BigDecimal(orderId));
+        if(map.get("orderId") == null){
+            orderId = new BigDecimal(omstruckOrderMapper.getOrderIdByOrderNumber((String) map.get("orderNumber")));
+        }else {
+            orderId = DataChange.dataToBigDecimal(map.get("orderId"));
+        }
+        Map<String, Object> seqMap = omstruckOrderMapper.getMaxLineSeqByOrderId(orderId);
+        if(seqMap != null){
+            //如果没有到最后一步之前 不允许确认
+            BigDecimal orderLineSequence = DataChange.dataToBigDecimal(seqMap.get("orderLineSequence"));
+            BigDecimal maxSegmentSqe = DataChange.dataToBigDecimal(seqMap.get("segmentSqe"));
+            int i = maxSegmentSqe.intValue() - orderLineSequence.intValue();
+            if( i != 1){
+                return 0;
+            }
+        }
+
+        omstruckOrder.setOrderId(orderId);
         //设置司机确认订单
         omstruckOrder.setDriverConfirmation(new BigDecimal(1));
         omstruckOrder.setUpdateTime(new Date());
         return omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
     }
 
+    /**
+     * 查询订单是否确认
+     * @Author TXF
+     * @Date 2022/1/4 23:36
+     * @param map {orderId}
+     * @return
+     **/
+    public boolean getDriverConfirmation(Map<String, Object> map){
+        Integer driverConfirmation = omstruckOrderMapper.getDriverConfirmation(DataChange.dataToBigDecimal(map.get("orderId")));
+        if(driverConfirmation == null){
+            return true;
+        }else {
+            return false;
+        }
+    }
+
     /**
      * 通过运输订单号查询订单信息给司机
      * @param map

+ 17 - 2
src/main/resources/application-dev.yml

@@ -1,9 +1,24 @@
+#测试环境
 spring:
   datasource:
     url: jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri
-    password: Dil123789
-    username: dil
+    password: root123
+    username: dagang
     driver-class-name: oracle.jdbc.OracleDriver
   application:
     name: DAL-OMS-API-DEV
 
+#feign设置
+openfeign:
+  ColumnDataFeign:
+    url: ${COLUMNDATAFEIGN_URL:172.16.33.166:8001}
+  TmsTruckFeign:
+    url: ${TMSTRUCKFEIGN_URL:172.16.33.166:8008}
+  AmsFeign:
+    url: ${AMSFEIGN_URL:172.16.33.166:8015}
+  ImFeign:
+    url: ${IMFEIGN_URL:172.16.33.166:8018}
+
+server:
+  port: 8016
+

+ 16 - 1
src/main/resources/application-prod.yml

@@ -1,3 +1,4 @@
+#正式环境
 spring:
   datasource:
     url: jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri
@@ -5,4 +6,18 @@ spring:
     username: dil
     driver-class-name: oracle.jdbc.OracleDriver
   application:
-    name: DAL-OMS-API-PROD
+    name: DAL-OMS-API-PROD
+
+#feign设置
+openfeign:
+  ColumnDataFeign:
+    url: ${COLUMNDATAFEIGN_URL:172.16.33.166:8083}
+  TmsTruckFeign:
+    url: ${TMSTRUCKFEIGN_URL:172.16.33.166:8088}
+  AmsFeign:
+    url: ${AMSFEIGN_URL:172.16.33.166:8079}
+  ImFeign:
+    url: ${IMFEIGN_URL:172.16.33.166:8055}
+
+server:
+  port: 8095

+ 4 - 27
src/main/resources/bootstrap.yml

@@ -1,7 +1,7 @@
 api.version: api/v1/oms
 spring:
   profiles:
-    include: ${SPRING_PROFILES:dev}
+    include: ${SPRING_PROFILES:prod}
   jackson:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8
@@ -43,28 +43,11 @@ redis:
     time: 864000000
   database: 0
 
-#feign设置
-openfeign:
-  #正式环境
-  ColumnDataFeign:
-    url: ${COLUMNDATAFEIGN_URL:172.16.33.166:8083}
-  TmsTruckFeign:
-    url: ${TMSTRUCKFEIGN_URL:172.16.33.166:8088}
-  AmsFeign:
-    url: ${AMSFEIGN_URL:172.16.33.166:8079}
-  ImFeign:
-    url: ${IMFEIGN_URL:172.16.33.166:8055}
 
 
-  #测试环境
-#  ColumnDataFeign:
-#    url: ${COLUMNDATAFEIGN_URL:172.16.33.166:8001}
-#  TmsTruckFeign:
-#    url: ${TMSTRUCKFEIGN_URL:172.16.33.166:8008}
-#  AmsFeign:
-#    url: ${AMSFEIGN_URL:172.16.33.166:8015}
-#  ImFeign:
-#    url: ${IMFEIGN_URL:172.16.33.166:8018}
+
+
+
 
 
 mybatis:
@@ -74,9 +57,3 @@ mybatis:
     #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     mapUnderscoreToCamelCase: true
     call-setters-on-nulls: true
-
-server:
-  #正式
-   port: 8095
-  #测试
-#  port: 8016

+ 37 - 0
src/main/resources/com/steerinfo/dil/mapper/OmstruckOrderMapper.xml

@@ -2952,4 +2952,41 @@
         ON RM.MATERIAL_ID = OOM.MATERIAL_ID
         WHERE OOM.ORDER_ID = #{orderId}
     </select>
+
+    <select id="getSporadicOrderTimes" resultType="java.lang.Integer">
+         select aso.sporadic_order_times from OMSTRUCK_ORDER oo
+            left join  AMSTRUCK_SPORADIC_ORDER  aso
+            on oo.ORDER_PLAN_ID=aso.sporadic_order_id
+            where oo.order_id= #{orderId}
+    </select>
+
+
+    <!--  查询订单是否确认  -->
+    <select id="getDriverConfirmation" parameterType="java.math.BigDecimal" resultType="java.lang.Integer">
+        select OO.DRIVER_CONFIRMATION
+        from OMSTRUCK_ORDER OO
+        where OO.ORDER_ID = #{orderId}
+    </select>
+
+<!--  查看当前订单最大路段顺序号  -->
+    <select id="getMaxLineSeqByOrderId" parameterType="java.math.BigDecimal" resultType="java.util.Map">
+        select OO.ORDER_LINE_SEQUENCE "orderLineSequence",
+               (select max(RLS.SEGMENT_SQE)
+                    from RMS_LINE_SEGEMNT RLS
+                   where RLS.LINE_ID = RL.LINE_ID
+               )    "segmentSqe"
+        from OMSTRUCK_ORDER OO
+        join RMS_LINE RL
+            on RL.LINE_ID = OO.LINE_ID
+        where OO.ORDER_ID = #{orderId}
+    </select>
+    <select id="getSporadicOrdermapAddOrder" resultType="java.util.Map">
+        select aso.sporadic_order_times "sporadicOrderTimes",
+               aso.SPORADIC_ORDER_ID "sporadicOrderId",
+               oo.CAPACITY_ID "capacityId"
+            from OMSTRUCK_ORDER oo
+            left join  AMSTRUCK_SPORADIC_ORDER  aso
+            on oo.ORDER_PLAN_ID=aso.sporadic_order_id
+        where oo.order_id= #{orderId}
+    </select>
 </mapper>

+ 15 - 1
src/main/resources/com/steerinfo/dil/mapper/OmstruckOrderSeparateMapper.xml

@@ -47,7 +47,12 @@
         set OO.ORDER_STATUS = #{orderStatus}
         where OO.ORDER_ID = #{orderId}
     </update>
-
+<!--    修改运输订单趟次-->
+    <update id="updateTimes">
+        update AMSTRUCK_SPORADIC_ORDER  set sporadic_order_times =#{times}
+        where sporadic_order_id= #{orderPlanId}
+    </update>
+    
     <!-- 得到运单id -->
     <select id="getOrderIdByTotalId" parameterType="DECIMAL" resultType="DECIMAL">
         SELECT TTR.ORDER_ID AS "orderId"
@@ -408,6 +413,9 @@
             <if test="type == 2">
                 and OO.ORDER_TYPE = 14
             </if>
+            <if test="type == 3">
+                and OO.ORDER_TYPE in (15,16)
+            </if>
             <if test="carrierId != null">
                 and ASO.CARRIER_ID = (select rc.carrier_id from rms_carrier rc
                 where rc.carrier_sso_id= #{carrierId})
@@ -493,4 +501,10 @@
           and TO_CHAR(ASOM.SALE_DATE_OF_RECEIPT, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
     </select>
 
+ <!--    修改运输订单趟次-->
+<!--     <update id="updateTimes">-->
+<!--          update AMSTRUCK_SPORADIC_ORDER  set sporadic_order_times =#{times}-->
+<!--          where sporadic_order_id= #{orderPlanId}-->
+<!--      </update>-->
+
 </mapper>