Ver código fonte

采购火运装车2

liyg 2 anos atrás
pai
commit
b4e01dbec0

+ 24 - 0
src/main/java/com/steerinfo/dil/config/WebExceptionHandler.java

@@ -0,0 +1,24 @@
+package com.steerinfo.dil.config;
+
+import com.steerinfo.framework.controller.RESTfulResult;
+import org.apache.log4j.Logger;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@ControllerAdvice
+public class WebExceptionHandler {
+
+    static final Logger log = Logger.getLogger(WebExceptionHandler.class);
+
+    @ExceptionHandler(value =Exception.class)
+    @ResponseBody
+    public RESTfulResult exceptionHandler(Exception e){
+        log.error("全局异常捕获:"+e);
+        e.printStackTrace();
+        if(e instanceof NullPointerException){
+            return new RESTfulResult("500", "操作失败:缺乏必要参数!", e);
+        }
+        return new RESTfulResult("500", "操作失败:"+e.getMessage(), e);
+    }
+}

+ 31 - 28
src/main/java/com/steerinfo/dil/controller/TMSController.java

@@ -44,6 +44,9 @@ public class TMSController extends BaseRESTfulController {
     @Autowired
     private RmsFeign rmsFeign;
 
+    @Autowired
+    private UniversalMapper universalMapper;
+
     @ApiOperation(value = "车辆实绩")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "map", value = "参数", required = false, dataType = "map"),
@@ -359,47 +362,50 @@ public class TMSController extends BaseRESTfulController {
         if (fileName != null && fileName.length() > 0) {
             is = new FileInputStream(excel);
         }
+        Map<String,Object> map = new HashMap<>();
         //获取Excel中包含的对象数组
         List<Map<String,Object>> list = ExcelToolUtils.getExcelList(is, fileName, 0);
-        //对不同的对象数组按通知单号求和1
-        /*
-        * requirementMap结构:{
-        *   "通知单号":{
-        *       weight:'重量',
-        *       truckNumber:'车数'
-        *   }
-        * }
-        * */
-        Map<String,Map<String,Object>> requirementMap = new HashMap<>();//需求
+        List<String> capacityIds = new ArrayList<>();
+        for(Map<String,Object> item:list){
+            capacityIds.add(item.get("车号").toString());
+        }
+        map.put("list",list);
+        //校验当前excel是否已经导过
+        if(universalMapper.checkTrainOrder(map) > 0){
+            throw new Exception("存在24小时内的重复运单!不允许重复导入!");
+        }
+        //统计通知单的重量车数和车牌号
         Set<String>  capacitySet = new HashSet<>();//车牌号
         for (Map<String,Object> item : list){
             //通知单统计
-            String key = item.get("通知单号").toString();
-            Map<String,Object> countMap = requirementMap.get(key);
-            if(countMap != null){
-                //已存在,修改
-                BigDecimal weight = DataChange.dataToBigDecimal(countMap.get("weight"));
-                BigDecimal truckNumber = DataChange.dataToBigDecimal(countMap.get("truckNumber"));
-                weight = weight.add(DataChange.dataToBigDecimal(item.get("净重")));
-                truckNumber = truckNumber.add(new BigDecimal(1));
-                countMap.put("weight",weight);
-                countMap.put("truckNumber",truckNumber);
+            String requirementNumber = item.get("通知单号").toString();
+            if(map.get("requirementNumber") != null){
+                if(map.get("requirementNumber").equals(requirementNumber)){
+                    //已存在,修改
+                    BigDecimal weight = DataChange.dataToBigDecimal(map.get("weight"));
+                    BigDecimal truckNumber = DataChange.dataToBigDecimal(map.get("truckNumber"));
+                    weight = weight.add(DataChange.dataToBigDecimal(item.get("净重")));
+                    truckNumber = truckNumber.add(new BigDecimal(1));
+                    map.put("weight",weight);
+                    map.put("truckNumber",truckNumber);
+                }else{
+                    throw new Exception("同一个Excel文件中只允许有一个采购订单号!");
+                }
             }else{
                 //不存在,新增
-                countMap = new HashMap<>();
                 BigDecimal weight = DataChange.dataToBigDecimal(item.get("净重"));
                 BigDecimal truckNumber = new BigDecimal(1);
-                countMap.put("weight",weight);
-                countMap.put("truckNumber",truckNumber);
+                map.put("requirementNumber",requirementNumber);
+                map.put("weight",weight);
+                map.put("truckNumber",truckNumber);
             }
-            requirementMap.put(key,countMap);
             //车牌号去重
             capacitySet.add(item.get("车号").toString());
         }
         //新增火车运力资源
         String[] capacities = capacitySet.toArray(new String[0]);//车牌号
         if(capacities.length != list.size()){
-            throw new Exception("操作失败:车号可能重复!");
+            throw new Exception("车号不允许重复!");
         }else{
             new Runnable(){
                 @Override
@@ -413,12 +419,9 @@ public class TMSController extends BaseRESTfulController {
             }.run();
         }
         //新增AMS及TMS
-        Map<String,Object> map = new HashMap<>();
-        map.put("list",list);
         map.put("userId",userId);
         map.put("userName",userName);
         map.put("materialType",materialType);
-        map.put("requirementMap",requirementMap);
         return tmsFeign.purchaseTrainLoad(map,userId,userName);
     }
 

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

@@ -51,4 +51,6 @@ public interface UniversalMapper {
     List<Map<String, Object>> getColumnAllScheme(Map<String, Object> map);
 
     String getWlUrl();
+
+    int checkTrainOrder(Map<String, Object> map);
 }

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

@@ -436,5 +436,16 @@
         </where>
         FETCH NEXT 100 ROWS ONLY
     </select>
+    <select id="checkTrainOrder" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM OMS_TRANS_ORDER
+        <where>
+            INSERT_TIME > SYSDATE-1
+            AND CAPACITY_ID IN
+            <foreach collection="list" item="item"  open="(" close=")" separator="," >
+                #{item.车号}
+            </foreach>
+        </where>
+    </select>
 
 </mapper>