瀏覽代碼

Merge remote-tracking branch 'origin/master'

zengyf 2 年之前
父節點
當前提交
9992bd7c1d

+ 23 - 42
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java

@@ -785,27 +785,7 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
         if (result == 0) {
             return failed("匹配不到车牌号!");
         }
-        else {
-                // 调用EAS接口将车牌号传给金蝶
-                Map<String,Object> input = joinFeign.findCarNumberByOrderList(mapList);
-                Map<String, Object> totalMap = easCapacityTestUtil.getTotalMap();
-                totalMap.put("input",input);
-                System.out.println(totalMap);
-                String json = JSONUtils.toJSONString(totalMap);
-                System.out.println(json);
-                Map<String,Object> s = joinFeign.pushCarNumberToEas(totalMap);
-                if (s == null || s.size() == 0) {
-                    try{
-                        //失败,存入重试队列,准备重试
-                        retryQueen.add(mapList);
-                    }catch (Exception e){
-                        System.out.println("保存失败车牌失败");
-                    }
-                    return failed("车牌号同步金蝶失败!");
-                }
-            System.out.println(s);
-            return success(result);
-        }
+        return success(result);
     }
 
     @ApiModelProperty(value = "钢材继续装派单")
@@ -1354,27 +1334,28 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
         if (result1 == 0) {
             return failed("已装货车辆不允许修改车牌");
         }
-        else {
-            // 调用EAS接口将车牌号传给金蝶
-            List<Map<String,Object>> mapList = new ArrayList<>();
-            mapList.add(mapValue);
-            Map<String, Object> input = joinFeign.findCarNumberByOrderList(mapList);
-            Map<String, Object> totalMap = easCapacityTestUtil.getTotalMap();
-            totalMap.put("input", input);
-            System.out.println(totalMap);
-            String json = JSONUtils.toJSONString(totalMap);
-            System.out.println(json);
-            Map<String, Object> s = joinFeign.pushCarNumberToEas(totalMap);
-            System.out.println("-------------------------------------");
-            System.out.println(s);
-            System.out.println("-------------------------------------");
-            if (s == null || s.size() == 0) {
-                //失败,存入重试队列,准备重试
-                retryQueen.add(mapList);
-                return failed("车牌号同步金蝶失败!");
-            }
-            return success(result);
-        }
+        return success(result);
+        //else {
+        //    // 调用EAS接口将车牌号传给金蝶
+        //    List<Map<String,Object>> mapList = new ArrayList<>();
+        //    mapList.add(mapValue);
+        //    Map<String, Object> input = joinFeign.findCarNumberByOrderList(mapList);
+        //    Map<String, Object> totalMap = easCapacityTestUtil.getTotalMap();
+        //    totalMap.put("input", input);
+        //    System.out.println(totalMap);
+        //    String json = JSONUtils.toJSONString(totalMap);
+        //    System.out.println(json);
+        //    Map<String, Object> s = joinFeign.pushCarNumberToEas(totalMap);
+        //    System.out.println("-------------------------------------");
+        //    System.out.println(s);
+        //    System.out.println("-------------------------------------");
+        //    if (s == null || s.size() == 0) {
+        //        //失败,存入重试队列,准备重试
+        //        retryQueen.add(mapList);
+        //        return failed("车牌号同步金蝶失败!");
+        //    }
+        //    return success(result);
+        //}
     }
 
     @ApiModelProperty(value = "修改收货客户的电话(销售)")

+ 29 - 0
src/main/java/com/steerinfo/dil/feign/BmstruckFeign.java

@@ -0,0 +1,29 @@
+package com.steerinfo.dil.feign;
+
+import com.steerinfo.framework.controller.RESTfulResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/9/23 8:46
+ * @Version:V2.0
+ */
+@FeignClient(value = "DIL-BMSTRUCK-API-DEV", url = "${openfeign.BmstruckFeign.url}")
+public interface BmstruckFeign {
+
+    @PostMapping("/api/v1/bmstruck/bmstruckdetailsorder/updateBatchDetailsOrder")
+    Map<String, Object> updateBatchDetailsOrder(Map<String, Object> map);
+
+
+}
+
+

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.java

@@ -44,4 +44,6 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
 
     List<BigDecimal> getSaleMaterialIds(BigDecimal saleOrderMaterialId);
 
+    int getSaleMaterialWeight(Map<String, Object> mapValue);
+
 }

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.java

@@ -61,6 +61,8 @@ public interface AmsSaleOrderMaterialMapper extends IBaseMapper<AmsSaleOrderMate
     Map<String, Object> getSaleMessage(BigDecimal saleOrderId);
     // 通过承运商id查询单价
     List<Map<String, Object>> getPriceList(BigDecimal carrierId);
+    //通过地址ID查询单价
+    BigDecimal getPriceByPlace(BigDecimal placeId);
     // 查询车序号中的物资
     List<Map<String, Object>> getMaterial(BigDecimal saleOrderMaterialId);
     //更新发站

+ 2 - 0
src/main/java/com/steerinfo/dil/service/IAmsSaleOrderService.java

@@ -189,4 +189,6 @@ public interface IAmsSaleOrderService {
     BigDecimal selectTransPortOrder(BigDecimal closeWlEntryId);
 
     int updateTransportOrderStatus(BigDecimal orderId);
+
+   int pushCarNumberToEas(Map<String,Object> map) throws Exception;
 }

+ 76 - 14
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -3,15 +3,13 @@ package com.steerinfo.dil.service.impl;
 import com.alibaba.druid.support.json.JSONUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.steerinfo.dil.feign.JoinFeign;
-import com.steerinfo.dil.feign.OtmsFeign;
-import com.steerinfo.dil.feign.RmsFeign;
-import com.steerinfo.dil.feign.TmsTruckFeign;
+import com.steerinfo.dil.feign.*;
 import com.steerinfo.dil.mapper.*;
 import com.steerinfo.dil.model.*;
 import com.steerinfo.dil.service.IAmsSaleOrderService;
 import com.steerinfo.dil.util.*;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
@@ -106,6 +104,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     @Autowired
     EasFluMakeDateUtil easFluMakeDateUtil;
 
+    @Autowired
+    EASCapacityTestUtil easCapacityTestUtil;
+
+    @Autowired
+    BmstruckFeign bmstruckFeign;
+
     @Override
     public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
         return amsSaleOrderMapper.getSaleOrderInfo(map);
@@ -902,17 +906,18 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
                 }
             }
+            //校验结束,上传金蝶
+            pushCarNumberToEas(map);
             // 得到车序号表主键
             BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
             // 得到承运商
             BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
             // 查询到车序号的单价
-            //BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
+            BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
             // 得到详细地址id
             BigDecimal placeId = amsSaleOrderMapper.getPlaceId(saleOrderMaterialId);
-            BigDecimal priceId = null;
-            // 如果详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配)
-            if (placeId != null && selfMention.equals("否")) {
+            // 如果已经设置单价则不覆盖,详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配)
+            if (priceId == null && placeId != null && selfMention.equals("否")) {
                  priceId = amsSaleOrderMapper.getPriceIdByPlaceId(placeId);
             }
             // 运输线路id
@@ -1682,6 +1687,17 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
             }
         }
+        try{
+            //修改单价
+            Map<String,Object> data=new HashMap<>();
+            List<Map<String,Object>> mapList = new ArrayList<>();
+            mapValue.put("priceId",DataChange.dataToBigDecimal(amsSaleOrderMaterialMapper.getPriceByPlace(addressid2)));
+            mapList.add(mapValue);
+            data.put("mapList",mapList);
+            bmstruckFeign.updateBatchDetailsOrder(data);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
         String addressids="";
         addressids =addressid1+","+addressid2;
         amsSaleOrderMaterial.setShippingAddressIds(addressids);
@@ -1973,6 +1989,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         BigDecimal oldCapacityId = omstruckOrderMapper.getOldCapacityId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
         if(oldCapacityId.compareTo(DataChange.dataToBigDecimal(mapValue.get("capacityId"))) == 0) {
             mapValue.put("result",1);
+            pushCarNumberToEas(mapValue);
             return mapValue;
         }
         Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
@@ -1998,6 +2015,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
             }
         }
+        pushCarNumberToEas(mapValue);
         BigDecimal capacityTel = omstruckOrderMapper.getCapacityTel(capacityNo);
         if (capacityTel.compareTo(BigDecimal.ZERO)!=0){
             mapValue.put("capacityTel",capacityTel);
@@ -2170,18 +2188,22 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         if ((loadIdList == null || loadIdList.size() == 0) && orderStatus == 5) {
             return result;
         }
+        //判断该分录对应净重有没有出来
+        int netWeightCount = amsSaleMaterialMapper.getSaleMaterialWeight(mapValue);
         //判断关闭分录是否为最后一拼
         int asmMaterialCount = amsSaleMaterialMapper.getSaleMaterialDelete(saleOrderMaterialId);
-        if (asmMaterialCount > 1 && orderStatus == 5) {
+        if (asmMaterialCount > 1 && orderStatus == 5 && netWeightCount == 0) {
                 // 删除实绩表
                 Map<String, Object> loadMap = loadIdList.get(0);
                 Map<String, Object> weightMap = weightIdList.get(0);
                 BigDecimal loadId = (BigDecimal) loadMap.get("loadId");
                 BigDecimal weightId = (BigDecimal) weightMap.get("weightId");
-                result += amsSaleMaterialMapper.deleteLoadResult(loadId);
-                result += amsSaleMaterialMapper.deleteWeightResult(weightId);
-                result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue);
-        }else if(asmMaterialCount <= 1){
+                int i = amsSaleMaterialMapper.deleteWeightResult(weightId);
+                if(i != 0) {
+                    result += amsSaleMaterialMapper.deleteLoadResult(loadId);
+                    result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue);
+                }
+        }else if(asmMaterialCount <= 1 && netWeightCount == 0){
                 //关闭运输订单
                 OmstruckOrder omstruckOrder = new OmstruckOrder();
                 omstruckOrder.setOrderId(DataChange.dataToBigDecimal(orderId));
@@ -2192,7 +2214,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
         }
         result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
-        result += amsSaleMaterialMapper.updateOrderMaterialToClose(mapValue);
+        if(netWeightCount == 0) {
+            result += amsSaleMaterialMapper.updateOrderMaterialToClose(mapValue);
+        }
         return result;
     }
 
@@ -2801,5 +2825,43 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         getEasPrimaryIds(Map);
     }
 
+    /**
+     * 推送车牌号给金蝶
+     * @param map
+     * @return
+     */
+    @Override
+    public int pushCarNumberToEas(Map<String, Object> map) throws Exception {
+        // 调用EAS接口将车牌号传给金蝶
+        List<Map<String,Object>> mapList = new ArrayList<>();
+        mapList.add(map);
+        Map<String,Object> input = joinFeign.findCarNumberByOrderList(mapList);
+        Map<String, Object> totalMap = easCapacityTestUtil.getTotalMap();
+        totalMap.put("input",input);
+        System.out.println(totalMap);
+        String json = JSONUtils.toJSONString(totalMap);
+        System.out.println(json);
+        Map<String,Object> s = joinFeign.pushCarNumberToEas(totalMap);
+        if (s == null || s.size() == 0) {
+            throw new Exception("登录金蝶失败!请重试派车!");
+        }else{
+            try{
+                JSONObject result = new JSONObject(s);
+                //如果status不为1,抛出异常
+                if(!result.getJSONObject("res").getString("status").equals("1")){
+                    throw new Exception("上传金蝶失败!请重试派车:"+result.getJSONObject("requestException").getString("message"));
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+                //只抛出自定义异常
+                if(e.getMessage().contains("Exception")){
+                    throw new Exception("上传金蝶失败!请重试派车!");
+                }else{
+                    throw new Exception(e.getMessage());
+                }
 
+            }
+        }
+        return 1;
+    }
 }

+ 2 - 0
src/main/resources/application-prod.yml

@@ -24,6 +24,8 @@ openfeign:
      url: ${OTMSFEIGN_URL:172.16.33.166:8038}
    RmsFeign:
      url: ${RMSFEIGN_URL:172.16.33.166:8060}
+   BmstruckFeign:
+     url: ${BMSTRUCKFEIGN_URL:172.16.33.166:8076}
  #正式环境端口
 
 mvc:

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

@@ -775,6 +775,7 @@
 
   <delete id="deleteWeightResult" parameterType="DECIMAL" >
     DELETE FROM TMSTRUCK_WEIGHT_RESULT WHERE WEIGHT_TASK_RESULT_ID = #{weightId}
+    and RESULT_NET_WEIGHT IS NULL
   </delete>
 
   <delete id="updateOrderMaterialToClose" parameterType="java.util.Map" >
@@ -859,9 +860,22 @@
       SELECT ASTM.MATERIAL_ID FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
       WHERE ASTM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
     </select>
-    <update id="updateSaleMaterialMakeDate">
+  <update id="updateSaleMaterialMakeDate">
     update AMS_SALE_MATERIAL ASM
     SET ASM.SALE_MAKE_DATE = #{easprimaryIdMakeDate}
     WHERE ASM.EAS_PRIMARY_ID = #{FSALEORDERENTRYID}
   </update>
+  <select id="getSaleMaterialWeight" resultType="java.lang.Integer" parameterType="map">
+    SELECT COUNT(TWR.RESULT_TOTAL_ID)  FROM OMSTRUCK_ORDER OO
+    LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+    ON TTR.ORDER_ID = OO.ORDER_ID
+    LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR
+    ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+    WHERE
+    TWR.RESULT_NET_WEIGHT IS NOT NULL
+    AND
+    TWR.MATERIAL_ID = (select ASM.MATERIAL_ID from AMS_SALE_MATERIAL ASM where ASM.SALE_MATERIAL_ID = #{saleMaterialId})
+    AND
+    OO.ORDER_ID = #{orderId}
+  </select>
 </mapper>

+ 4 - 8
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -3388,14 +3388,10 @@
   </select>
 
   <select id="getOrderPrice" parameterType="java.util.Map" resultType="DECIMAL" >
-    SELECT ACTP.PRICE_ID AS "priceId"
-    FROM AMS_CONTRACT_TRANSPORT_PRICE ACTP
-           LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
-                     ON ASOM.SALE_SHIPPING_ADDRESS_ID = ACTP.PLACE_ID
-    WHERE ACTP.CARRIER_ID = #{carrierId}
-      AND ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
-    AND ACTP.DELETED = 0
-    ORDER BY ACTP.INSERT_TIME DESC
+    SELECT PRICE_ID AS "priceId"
+    FROM AMS_SALE_ORDER_MATERIAL
+    WHERE SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+    ORDER BY INSERT_TIME DESC
     FETCH NEXT 1 ROWS ONLY
   </select>
 

+ 8 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.xml

@@ -969,4 +969,12 @@
     delete from OMSTRUCK_ORDER OO
     where oo.ORDER_ID = #{orderId}
   </delete>
+  <select id="getPriceByPlace" resultType="java.math.BigDecimal">
+    SELECT ACTP.PRICE_ID    AS "priceId"
+    FROM AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    WHERE ACTP.PLACE_ID = #{placeId}
+      AND ACTP.DELETED = 0
+    ORDER BY ACTP.PRICE_VALUE DESC
+      FETCH NEXT 1 ROWS ONLY
+  </select>
 </mapper>