txf 3 tahun lalu
induk
melakukan
0f83aa00bb

+ 23 - 1
src/main/java/com/steerinfo/dil/controller/TMSController.java

@@ -3,7 +3,9 @@ package com.steerinfo.dil.controller;
 import com.steerinfo.dil.feign.TmsshipFeign;
 import com.steerinfo.dil.feign.TmsTrainFeign;
 import com.steerinfo.dil.feign.TmsTruckFeign;
+import com.steerinfo.dil.mapper.UniversalMapper;
 import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.DataChange;
 import com.steerinfo.framework.controller.RESTfulResult;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -31,7 +33,8 @@ public class TMSController extends BaseRESTfulController {
     private TmsTrainFeign tmsTrainFeign;
     @Autowired
     TmsshipFeign tmsshipFeign;
-
+    @Autowired
+    UniversalMapper universalMapper;
     /*======================================船运==========================================*/
 
     /**
@@ -1265,6 +1268,25 @@ public class TMSController extends BaseRESTfulController {
     })
     @PostMapping("/enFactoryResultByPDA")
     public Map<String, Object> enFactoryResultByPDA(@RequestBody(required = false) Map<String, Object> mapValue) {
+        //PDA扫码会多个反斜杠所以需要截取
+        String orderNumber = (String) mapValue.get("orderNumber");
+        orderNumber = orderNumber.substring(0, orderNumber.length()-1);
+        mapValue.put("orderNumber", orderNumber);
+        //通过订单号获取订单ID 和 订单类型
+        Map<String, Object> orderMesMap = universalMapper.getOrderMesByOrderNumber(orderNumber);
+        BigDecimal orderType = DataChange.dataToBigDecimal(orderMesMap);
+        //如果订单类型为2 则需要财务公司审核才能进厂
+        if(orderType.intValue() == 2){
+            Integer saleOrderStatus = universalMapper.getSaleOrderStatus(DataChange.dataToBigDecimal(orderMesMap.get("orderId")));
+            if(saleOrderStatus != 4){
+                //如果不等于4则是未通过财务审批 ,不可以进厂
+                Map<String, Object> returnMap = new HashMap<>();
+                returnMap.put("code", "201");
+                returnMap.put("status", "failed");
+                returnMap.put("data", "审批未通过不能进厂!");
+                return returnMap;
+            }
+        }
         return tmsTruckFeign.enFactoryResultByPDA(mapValue);
     }
 

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/UniversalMapper.java

@@ -87,4 +87,7 @@ public interface UniversalMapper {
     BigDecimal getCarrierIdBySSO(String carrierSsoId);
 
     Integer getSaleOrderStatus(BigDecimal orderId);
+
+    //通过运输订单号查询订单类型和ID
+    Map<String, Object> getOrderMesByOrderNumber(String orderNumber);
 }

+ 159 - 0
src/main/java/com/steerinfo/dil/util/DataChange.java

@@ -0,0 +1,159 @@
+package com.steerinfo.dil.util;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ author    :TXF
+ * @ time      :2021/8/25 11:25
+ */
+
+public class DataChange {
+
+
+    /**
+     * 解析前端传来的日期字符串
+     * @param vueDate
+     * @return
+     */
+    public static Date dataToDate(Object vueDate){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date parseDate = null;
+        if (vueDate != null){
+            try {
+                String date = (String) vueDate;
+                parseDate = sdf.parse(date);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+        return parseDate;
+    }
+
+    /**
+     * 数据转换成BigDecimal
+     * @param data
+     * @return
+     */
+    public static BigDecimal dataToBigDecimal(Object data){
+        if (data != null){
+            if(data instanceof BigDecimal){
+                return (BigDecimal) data;
+            }else{
+                String str = String.valueOf(data);
+                BigDecimal decimal = null;
+                if(!"".equals(str)){
+                    try {
+                        decimal = new BigDecimal(str);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        return new BigDecimal(0);
+                    }
+                }
+                return decimal;
+            }
+        }
+        return new BigDecimal(0);
+    }
+
+    /**
+     * 将时间截取到天  为字符串类型 用于前端只显示到天
+     * @param date 传入时间
+     * @return
+     */
+    public static String dateToDayDate(Object date){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date changeDate = null;
+        if(date == null)
+            return null;
+        try{
+             changeDate = (Date) date;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return sdf.format(changeDate);
+    }
+
+    /**
+     * 遍历从数据库中传进来的数据
+     * @param list 从数据库查询出来的list数据列表
+     * @param key map中多个需要转换的date参数
+     */
+    public static void changeDateToDayDate(List<Map<String, Object>> list, String ...key){
+        //遍历List
+        for (Map<String, Object> map : list) {
+            for (String s : key) {
+                //从map中取 date的值 并转换成字符串类型的日期
+                String stringDate = dateToDayDate(map.get(s));
+                map.put(s, stringDate);
+            }
+        }
+    }
+
+    /**
+     * 遍历列表使只显示两位小数
+     * @param list
+     * @param key
+     */
+    public static void dataTo2Number(List<Map<String, Object>> list, String ...key){
+        //遍历List
+        for (Map<String, Object> map : list) {
+            for (String s : key) {
+                //修改数据为带两位小数
+                BigDecimal oldDate = (BigDecimal) map.get(s);
+                DecimalFormat df =  new DecimalFormat("0.00");
+                String resultDeduction = df.format(oldDate.doubleValue());
+                map.put(s, resultDeduction);
+            }
+        }
+    }
+
+    /**
+     * 计算相差时间  日时分秒
+     * @param
+     * @return
+     */
+    public static String calculatedTimeDifference(Date time1, Date time2){
+        long t1 = time1.getTime();
+        long t2 = time2.getTime();
+        if(t1 > t2){
+            long temp = t1;
+            t1 = t2;
+            t2 = temp;
+        }
+        long between = t2 - t1;
+        long day = between / (24 * 60 * 60 * 1000);
+        long hour = (between / (60 * 60 * 1000) - day * 24);
+        long min = ((between / (60 * 1000)) - day * 24 * 60 - hour * 60);
+        long s = (between / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
+        return day + "天"+  + hour+ "时" + min + "分"  + s + "秒";
+    }
+
+    /**
+     * 生成带时间的八位数顺序号
+     * @param start 前缀
+     * @param id 顺序号  主键Id
+     * @return
+     */
+    public static String generateEightDigitsNumber(String start, Integer id){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        StringBuilder sb = new StringBuilder(start + sdf.format(new Date()));
+        sb.append(
+                id < 10
+                        ? "0000000" + id : id < 100
+                        ? "000000" + id : id < 1000
+                        ? "00000" + id : id < 10000
+                        ? "0000" + id : id < 100000
+                        ? "000" + id : id < 1000000
+                        ? "00" + id : id < 10000000
+                        ? "0" + id : id.toString()
+        );
+        return sb.toString();
+    }
+
+}

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

@@ -583,4 +583,12 @@
         WHERE OO.ORDER_ID = #{orderId}
     </select>
 
+<!--  通过运输订单号查询订单类型和ID  -->
+    <select id="getOrderMesByOrderId" parameterType="string" resultType="java.util.Map">
+        select OO.ORDER_ID "orderId",
+               OO.ORDER_TYPE "orderType"
+        from OMSTRUCK_ORDER OO
+        where OO.ORDER_NUMBER = #{orderNumber}
+    </select>
+
 </mapper>