luobang před 2 roky
rodič
revize
2826f36764

+ 5 - 0
src/main/java/com/steerinfo/dil/mapper/BmstruckStatementMapper.java

@@ -52,4 +52,9 @@ public interface BmstruckStatementMapper extends IBaseMapper<BmstruckStatement,
 
     //查询账单下的所有详单
     List<Map<String, Object>> findDetailsForStatement(Map<String, Object> map);
+
+    List<Map<String, Object>> getSaleAreaList(Map<String, Object> map);
+
+    BigDecimal getReceiverCustomerId(String receiverCustomer);
+
 }

+ 11 - 1
src/main/java/com/steerinfo/dil/service/impl/BmstruckStatementServiceImpl.java

@@ -82,7 +82,17 @@ public class BmstruckStatementServiceImpl implements IBmstruckStatementService {
         //查询单位
         List<Map<String, Object>> companys = bmstruckStatementMapper.getDetailIds(map);
         if(companys.size()>1){
-            throw new Exception("存在多个承运商和收货客户!请检查所勾选的订单!");
+            List<Map<String,Object>> saleAreaList = bmstruckStatementMapper.getSaleAreaList(map);
+            if (saleAreaList.size() > 1) {
+                throw new Exception("存在多个承运商和收货客户或一票制多个片区和多个收款客户!请检查所勾选的订单!");
+            }else if(saleAreaList.size() == 1 && saleAreaList.get(0) != null) {
+                if(!"钢材工程组".equals(saleAreaList.get(0).get("saleArea"))) {
+                    throw new Exception("非一票制禁止上传多家客户");
+                }
+                String receiverCustomer = saleAreaList.get(0).get("receiverCustomer") + "";
+                BigDecimal receiverCustomerId = bmstruckStatementMapper.getReceiverCustomerId(receiverCustomer);
+                companys.get(0).put("consigneeId",receiverCustomerId);
+            }
         }else if(companys.size() == 0){
             throw new Exception("没有查询到承运商和收货客户!");
         }

+ 25 - 0
src/main/resources/com/steerinfo/dil/mapper/BmstruckStatementMapper.xml

@@ -1174,4 +1174,29 @@
         order by ASO.SALE_ORDER_ID DESC, ASOM.SALE_ORDER_MATERIAL_ID DESC,OO.ORDER_ID  DESC
         )
     </select>
+    <select id="getSaleAreaList" resultType="java.util.Map">
+        SELECT DISTINCT
+        ASM.TRANSFER_OUT_OF_WAREHOUSE "saleArea",
+        ASO.SALE_ORDER_RECEIVE_CUSTOMER "receiverCustomer"
+        FROM AMS_SALE_ORDER ASO
+        LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+        ON ASOM.SALE_ORDER_ID = ASO.SALE_ORDER_ID
+        LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+        ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN AMS_SALE_TRUCKNO_MATERIAL ASTM
+        ON ASTM.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        LEFT JOIN AMS_SALE_MATERIAL ASM
+        ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+        LEFT JOIN OMSTRUCK_ORDER OO
+        ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+        WHERE OO.ORDER_ID IN
+        <foreach collection="orderList" item="orderId" open="(" close=")" separator=",">
+            #{orderId}
+        </foreach>
+    </select>
+    <select id="getReceiverCustomerId" resultType="java.math.BigDecimal" parameterType="string">
+        SELECT RC.CONSIGNEE_ID FROM RMS_CONSIGNEE RC
+        WHERE RC.CONSIGNEE_COMPANY_NAME = #{receiverCustomer}
+        FETCH FIRST 1 ROW ONLY
+    </select>
 </mapper>