Преглед на файлове

修改国产矿导入和新增逻辑

liyg преди 2 години
родител
ревизия
42171c288f

+ 16 - 1
src/main/java/com/steerinfo/dil/controller/TmstrainLoadingResultController.java

@@ -334,6 +334,18 @@ public class TmstrainLoadingResultController extends BaseRESTfulController {
         return success(pageList);
     }
 
+    @ApiOperation(value = "国产矿导入")
+    @PostMapping(value = "/importDomesticLoadResult")
+    public RESTfulResult importDomesticLoadResult(@RequestBody(required = false) Map<String, Object> mapValue) {
+        List<Map<String,Object>> result=null;
+        try{
+            result=tmstrainLoadingResultService.importDomesticLoadResult(mapValue);
+        }catch (Exception e){
+            return failed(e.getMessage());
+        }
+        return success(result);
+    }
+
     @ApiOperation(value = "国产矿物流新增装车")
     @PostMapping(value = "/addDomesticLoadResult")
     public RESTfulResult addDomesticLoadResult(@RequestBody(required = false) Map<String, Object> mapValue) {
@@ -364,11 +376,14 @@ public class TmstrainLoadingResultController extends BaseRESTfulController {
                                               Integer pageNum,
                                               Integer pageSize,
                                               String materialName,
-                                              String resultForeignShipName) {
+                                              String resultForeignShipName,
+                                              String supplierName) {
         if(materialName!=null)
             map.put("materialName",materialName);
         if(resultForeignShipName!=null)
             map.put("resultForeignShipName",resultForeignShipName);
+        if(supplierName!=null)
+            map.put("supplierName",supplierName);
         //不分页筛选数据
         PageHelper.startPage(pageNum, pageSize);
         //分页数据

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

@@ -109,4 +109,6 @@ public interface TmstrainLoadingResultMapper extends IBaseMapper<TmstrainLoading
     //展示最近使用的采购订单号
     List<Map<String,Object>> selectPurchaseOrderNo(Map<String,Object> map);
 
+    //根据三要素查询采购订单号
+    List<Map<String,Object>> findPurchaseOrder(Map<String,Object> map);
 }

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

@@ -50,6 +50,9 @@ public interface ITmstrainLoadingResultService{
      //内转新增装车实绩
     int addTrainLoadResultForConverted(Map<String, Object> map);
 
+    //国产矿导入
+    List<Map<String, Object>> importDomesticLoadResult(Map<String, Object> mapValue);
+
     //添加国产矿装车实绩
     int addDomesticLoadResult(Map<String, Object> mapValue) throws Exception;
 

+ 73 - 24
src/main/java/com/steerinfo/dil/service/impl/TmstrainLoadingResultServiceImpl.java

@@ -201,28 +201,18 @@ public class TmstrainLoadingResultServiceImpl implements ITmstrainLoadingResultS
     }
 
     /**
-     * 国产矿新增导入
+     * 国产矿导入,返回配单信息
      * @param mapValue
      * @return
      */
-    @Transactional(rollbackFor = {Exception.class})
-    public int addDomesticLoadResult(Map<String, Object> mapValue) throws Exception {
+    @Override
+    public List<Map<String, Object>> importDomesticLoadResult(Map<String, Object> mapValue) {
+        System.out.println("导入Excel:");
+        System.out.println(mapValue);
         List<Map<String, Object>> list= (List<Map<String, Object>>) mapValue.get("list");
-        String userId=null;
-        if(mapValue.get("userId")!=null)
-            userId=mapValue.get("userId").toString();
-        else
-            throw new Exception("用户id为空,请先登录再操作!");
-        //装车实绩list
-        List<TmstrainLoadingResult> loadingResults=new ArrayList<>();
         //获取分隔符
         List<String> splits=tmstrainLoadingResultMapper.findSplitsForDomestic();
-        int i = 0;
-        for(Map<String,Object> map:list){
-            TmstrainLoadingResult result=new TmstrainLoadingResult();
-            //设置序列号主键
-            BigDecimal maxId = tmstrainLoadingResultMapper.selectMaxId();
-            result.setResultId(maxId);
+        for(Map<String, Object> map:list){
             //配单
             List<Map<String,Object>> orderList= tmstrainLoadingResultMapper.getPurchaseOrderList(map);
             if(orderList.size() <= 0){
@@ -236,22 +226,78 @@ public class TmstrainLoadingResultServiceImpl implements ITmstrainLoadingResultS
                         break;
                     }
                 }
+                System.out.println("切割后的公司前缀:"+map.get("supplierName"));
                 orderList=tmstrainLoadingResultMapper.getPurchaseOrderList(map);
+                map.remove("supplierName");
             }
-            if(orderList.size() > 0){
+            if(orderList.size() == 1){
+                //只有采购订单唯一才配单,其他一律原样返回
                 Map<String,Object> details=orderList.get(0);
+                String purchaseOrderNo=(String) details.get("purchaseOrderNo");
+                String materialName=(String)details.get("materialName");
+                String resultForeignShipName=(String)details.get("resultForeignShipName");
+                String supplierName=(String)details.get("supplierName");
                 BigDecimal purchaseOrderId=DataChange.dataToBigDecimal(details.get("purchaseOrderId"));
                 BigDecimal materialId=DataChange.dataToBigDecimal(details.get("materialId"));
                 BigDecimal supplierId=DataChange.dataToBigDecimal(details.get("supplierId"));
                 BigDecimal batchId=DataChange.dataToBigDecimal(details.get("batchId"));
-                result.setPurchaseOrderRailPlanId(purchaseOrderId);
-                result.setMaterialId(materialId);
-                result.setSendUnitId(supplierId);
-                result.setBatchId(batchId);
+                map.put("purchaseOrderNo",purchaseOrderNo);
+                map.put("materialName",materialName);
+                map.put("unloadPoint",resultForeignShipName);
+                map.put("supplierName",supplierName);
+                map.put("purchaseOrderId",purchaseOrderId);
+                map.put("materialId",materialId);
+                map.put("supplierId",supplierId);
+                map.put("batchId",batchId);
             }else{
-                throw new Exception("没有对应的国产矿采购订单号:"+map.get("productName"));
+                map.put("purchaseOrderNo","请手动选择采购订单");
             }
+        }
+        System.out.println("返回配单数据:");
+        System.out.println(list);
+        return list;
+    }
+
+    /**
+     * 国产矿新增
+     * @param mapValue
+     * @return
+     */
+    @Transactional(rollbackFor = {Exception.class})
+    public int addDomesticLoadResult(Map<String, Object> mapValue) throws Exception {
+        System.out.println(mapValue);
+        List<Map<String, Object>> list= (List<Map<String, Object>>) mapValue.get("list");
+        String userId=null;
+        if(list.size()<=0){
+            throw new Exception("没有传入任何车皮");
+        }
+        if(mapValue.get("userId")!=null)
+            userId=mapValue.get("userId").toString();
+        else
+            throw new Exception("用户id为空,请先登录再操作!");
+        //装车实绩list
+        List<TmstrainLoadingResult> loadingResults=new ArrayList<>();
+        int i = 0;
+        for(Map<String,Object> map:list){
+            TmstrainLoadingResult result=new TmstrainLoadingResult();
+            //设置序列号主键
+            BigDecimal maxId = tmstrainLoadingResultMapper.selectMaxId();
+            result.setResultId(maxId);
             //处理实绩表
+            BigDecimal purchaseOrderId=DataChange.dataToBigDecimal(map.get("purchaseOrderId"));
+            BigDecimal materialId=DataChange.dataToBigDecimal(map.get("materialId"));
+            BigDecimal supplierId=DataChange.dataToBigDecimal(map.get("supplierId"));
+            BigDecimal batchId=DataChange.dataToBigDecimal(map.get("batchId"));
+            if(purchaseOrderId.intValue()==0
+            || materialId.intValue()==0
+            || supplierId.intValue()==0
+            || batchId.intValue()==0){
+                throw new Exception("该车皮没有选择采购订单:"+map.get("wagonNo"));
+            }
+            result.setPurchaseOrderRailPlanId(purchaseOrderId);
+            result.setMaterialId(materialId);
+            result.setSendUnitId(supplierId);
+            result.setBatchId(batchId);
             result.setArrivalStationId(new BigDecimal(map.get("arrivalStationId").toString()));//到站
             result.setResultLoadingDate(new Date((Long)map.get("resultLoadingDate")));//装车日期
             result.setResultType(new BigDecimal(map.get("resultType").toString()));//装车类型,国产矿应该为3
@@ -285,6 +331,9 @@ public class TmstrainLoadingResultServiceImpl implements ITmstrainLoadingResultS
             addRegularField(result,userId);
             //通过车皮号计算车皮标重
             result.setResultBillableTonnage(new BigDecimal(calculateWagonWeight(result.getResultWagonNo())));
+            if(result.getResultWagonNo().length()!=7 || result.getResultBillableTonnage().intValue()<=0){
+                throw new Exception("车皮号异常:"+result.getResultWagonNo());
+            }
             //通过到站ID匹配计量衡 如果是老区轨道衡或者是新区轨道衡 则匹配轨道衡
             //如果到站ID是老区轨道衡
             BigDecimal arrivalStationId = result.getArrivalStationId();
@@ -312,7 +361,7 @@ public class TmstrainLoadingResultServiceImpl implements ITmstrainLoadingResultS
                 throw new Exception("计量委托发送失败!");
             }
         }
-        return count;
+        return 0;
     }
 
     /**
@@ -670,7 +719,7 @@ public class TmstrainLoadingResultServiceImpl implements ITmstrainLoadingResultS
      */
     @Override
     public List<Map<String, Object>> getPurchaseOrderList(Map<String, Object> map) {
-        return tmstrainLoadingResultMapper.getPurchaseOrderList(map);
+        return tmstrainLoadingResultMapper.findPurchaseOrder(map);
     }
 
 

+ 58 - 0
src/main/resources/com/steerinfo/dil/mapper/TmstrainLoadingResultMapper.xml

@@ -1373,6 +1373,8 @@
       (ARRIVAL_ID,ARRIVAL_NAME,INSERT_TIME,UPDATE_TIME)
     VALUES(#{arrivalId}, #{arrivalName},#{insertTime},#{updateTime})
   </insert>
+
+
   <!--  国产矿查询采购订单号-->
   <select id="getPurchaseOrderList" parameterType="java.util.Map" resultType="java.util.Map">
     SELECT
@@ -1434,9 +1436,15 @@
         and INSTR(rsu.SUPPLIER_NAME,#{supplierName}) > 0
       </if>
     </if>
+    <if test="productName==null and supplierName !=null and supplierName!=''.toString">
+        and INSTR(rsu.SUPPLIER_NAME,#{supplierName}) > 0
+    </if>
     <if test="unloadPoint!=null and unloadPoint!=''.toString()">
       and  INSTR(db.RESULT_FOREIGN_SHIP_NAME, #{unloadPoint}) > 0
     </if>
+    <if test="sendStation!=null and sendStation!=''.toString()">
+      and  INSTR(db.RESULT_FOREIGN_SHIP_NAME, #{sendStation}) > 0
+    </if>
     ORDER BY
     <if test="productName!=null and productName!=''.toString()">
       nvl(length(trim(rm.MATERIAL_NAME)),0) DESC,--品名匹配物资名,按物资长度降序,匹配得多的在前
@@ -1568,4 +1576,54 @@
     from RMSTRAIN_ARRIVAL_SEND RAS
    WHERE  RAS.ARRIVAL_ID = #{arrivalStationId}
   </select>
+
+<!--  根据三要素查询采购订单号-->
+  <select id="findPurchaseOrder" resultType="java.util.Map">
+    SELECT
+    apo.INSERT_TIME as "insertTime",
+    apo.PURCHASE_ORDER_NO as "purchaseOrderNo",
+    apo.PURCHASE_ORDER_DATE as "purchaseOrderDate",
+    rm.MATERIAL_NAME as "materialName",
+    rm.MATERIAL_ID  as "materialId",
+    db.RESULT_FOREIGN_SHIP_NAME as "resultForeignShipName",
+    rsu.SUPPLIER_NAME as "supplierName",
+    rsu.SUPPLIER_ID as "supplierId",
+    rsb.SHIPPER_NAME as "buyerName",
+    apo.PURCHASE_ORDER_BUYER as "purchaseOrderBuyer",
+    apo.PUCHASE_ORDER_MATERIAL_NUMBER as "purChaseOrderMaterialNumber",
+    rsr.SHIPPER_NAME as "receiverName",
+    rsr.SHIPPER_ID   as   "receiverUnitId",
+    apo.PUCHASE_ORDER_DELIVERY_DATE as "purchaseOrderDeliveryDate",
+    apo.INSERT_UPDATE_REMARK as "insertUpdateRemark",
+    apo.PURCHASE_ORDER_ID as "purchaseOrderId",
+    apo.PURCHASING_ORGANIZATION_ID  "orgId",
+    db.BATCH_ID "batchId"
+    FROM AMS_PURCHASE_ORDER apo
+    LEFT JOIN DIL_BATCH db
+    ON apo.BATCH_ID = db.BATCH_ID
+    LEFT JOIN RMS_MATERIAL rm
+    ON rm.MATERIAL_ID = db.MATERIAL_ID
+    LEFT JOIN RMS_SUPPLIER rsu
+    ON apo.SUPPLIER_UNIT_ID = rsu.SUPPLIER_ID
+    LEFT JOIN RMS_SHIPPER rsb
+    ON apo.PURCHASING_ORGANIZATION_ID = rsb.SHIPPER_ID
+    LEFT JOIN RMS_SHIPPER rsr
+    ON apo.RECEIVE_UNIT_ID = rsr.SHIPPER_ID
+    where
+    apo.DELETED = 0
+    and rm.MATERIAL_NAME is not null
+    and db.RESULT_FOREIGN_SHIP_NAME is not null
+    and rsu.SUPPLIER_NAME is not null
+    <if test="materialName != null and materialName!=''.toString()" >
+      and  rm.MATERIAL_NAME like concat(concat('%',#{materialName}),'%')
+    </if>
+    <if test="resultForeignShipName != null and resultForeignShipName!=''.toString()">
+      and db.RESULT_FOREIGN_SHIP_NAME like concat(concat('%',#{resultForeignShipName}),'%')
+    </if>
+    <if test="supplierName !=null and supplierName!=''.toString">
+      and rsu.SUPPLIER_NAME like concat(concat('%',#{supplierName}),'%')
+    </if>
+    ORDER BY
+    apo.PURCHASE_ORDER_DATE DESC
+  </select>
 </mapper>