Просмотр исходного кода

处理根据订单获取发货信息额问题。

yujia 7 лет назад
Родитель
Сommit
e71c9f9ad8

+ 12 - 3
src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceFOrderDao.java

@@ -1,12 +1,13 @@
 package com.uas.platform.b2c.logistics.dao;
 
-import java.util.List;
-
+import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
+import java.util.List;
 
 /**
  * The interface InvoiceFOrder dao.
@@ -38,5 +39,13 @@ public interface InvoiceFOrderDao extends JpaSpecificationExecutor<InvoiceFOrder
 	 * @return list 返回InvoiceFOrder列表
 	 */
 	public List<InvoiceFOrder> findByBuyerenuuAndSendstatusAndUasPurcidNotNull(Long buyerenuu, Integer sendstatus);
+
+	/**
+	 * 统计的数量
+	 * @param invoiceids 出货单号
+	 * @return 返货待发货的数量
+	 */
+	@Query(value = "select count(1) from InvoiceFOrder ifo where ifo.invoiceid in (:invoiceids) and ifo.status = 404")
+	Integer countInBoundInvoiceFOrder(@Param("invoiceids") List<String> invoiceids);
 	
 }

+ 11 - 3
src/main/java/com/uas/platform/b2c/logistics/dao/InvoiceFPurchaseDao.java

@@ -1,14 +1,13 @@
 package com.uas.platform.b2c.logistics.dao;
 
-import java.util.List;
-
+import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2c.logistics.model.InvoiceFPurchase;
+import java.util.List;
 
 /**
  * The interface InvoiceFPurchase dao.
@@ -52,4 +51,13 @@ public interface InvoiceFPurchaseDao extends JpaSpecificationExecutor<InvoiceFPu
 	@Query(value="select count(*) from InvoiceFPurchase a where a.sellerenuu=:enuu and a.status=:status and a.proofingid is null")
 	public int getCountByEnuuAndStatus(@Param("enuu") Long enuu, @Param("status") int status);
 
+
+	/**
+	 * 统计的数量
+	 * @param invoiceids 出货单号
+	 * @return 返货待发货的数量
+	 */
+	@Query(value = "select count(1) from InvoiceFPurchase ifo where ifo.invoiceid in (:invoiceids) and ifo.status = 404")
+	Integer countInBoundInvoiceFOrder(@Param("invoiceids") List<String> invoiceids);
+
 }

+ 15 - 0
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchaseDetail.java

@@ -51,6 +51,12 @@ public class InvoiceFPurchaseDetail {
 	@Column(name = "pudetail_id")
 	private Long pudetailid;
 
+	/**
+	 * 订单id
+	 */
+	@Column(name = "ordetail_id")
+	private Long ordetailid;
+
 	/**
 	 * 批次号
 	 */
@@ -590,4 +596,13 @@ public class InvoiceFPurchaseDetail {
 		this.spec = spec;
 		return this;
 	}
+
+	public Long getOrdetailid() {
+		return ordetailid;
+	}
+
+	public InvoiceFPurchaseDetail setOrdetailid(Long ordetailid) {
+		this.ordetailid = ordetailid;
+		return this;
+	}
 }

+ 8 - 0
src/main/java/com/uas/platform/b2c/logistics/service/InvoiceFOrderService.java

@@ -154,4 +154,12 @@ public interface InvoiceFOrderService {
 	 * @return  InvoiceFOrder
 	 */
 	InvoiceFOrder findByInvoiceid(String invoiceid);
+
+
+	/**
+	 * 传入出货单号,统计该出货单号中,有多少是待收货状态的订单
+	 * @param invoiceids 出货单号的信息
+	 * @return Integer
+	 */
+	Integer countInBoundInvoiceFOrder(List<String> invoiceids);
 }

+ 8 - 0
src/main/java/com/uas/platform/b2c/logistics/service/InvoiceFPurchaseService.java

@@ -184,4 +184,12 @@ public interface InvoiceFPurchaseService {
 	 * @return 返回发货单
 	 */
 	ResultMap ship(String shiInfo, Long id);
+
+
+	/**
+	 * 传入出货单号,统计该出货单号中,有多少是待收货状态的订单
+	 * @param invoiceids 出货单号的信息
+	 * @return Integer
+	 */
+	Integer countInBoundInvoiceFOrder(List<String> invoiceids);
 }

+ 15 - 0
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFOrderServiceImpl.java

@@ -696,4 +696,19 @@ public class InvoiceFOrderServiceImpl implements InvoiceFOrderService {
 			return inForDao.findByInvoiceid(invoiceid);
 		}
 	}
+
+	/**
+	 * 传入出货单号,统计该出货单号中,有多少是待收货状态的订单
+	 *
+	 * @param invoiceids 出货单号的信息
+	 * @return Integer
+	 */
+	@Override
+	public Integer countInBoundInvoiceFOrder(List<String> invoiceids) {
+		if (CollectionUtils.isEmpty(invoiceids)) {
+			return 0;
+		} else {
+			return inForDao.countInBoundInvoiceFOrder(invoiceids);
+		}
+	}
 }

+ 19 - 0
src/main/java/com/uas/platform/b2c/logistics/service/impl/InvoiceFPurchaseServiceImpl.java

@@ -278,6 +278,10 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 						continue;
 					}
 					qty = Double.valueOf(qty1.toString());
+					double sumQty = NumberUtil.add(qty, puDetail.getShipQty());
+					if (NumberUtil.compare(sumQty, puDetail.getNumber()) > 0) {
+						throw new IllegalOperatorException("存在发货数量超过待发货数");
+					}
 				}
 			}
 			if ((Status.TOBESHIPPED.value() != puDetail.getStatus() && Status.CONFIRMED.value() != puDetail.getStatus()) || NumberUtil.compare(qty, DoubleConstant.zero) < 1) {
@@ -749,4 +753,19 @@ public class InvoiceFPurchaseServiceImpl implements InvoiceFPurchaseService {
 		purchaseDao.save(purchase);
 		return ResultMap.success("ok");
 	}
+
+	/**
+	 * 传入出货单号,统计该出货单号中,有多少是待收货状态的订单
+	 *
+	 * @param invoiceids 出货单号的信息
+	 * @return Integer
+	 */
+	@Override
+	public Integer countInBoundInvoiceFOrder(List<String> invoiceids) {
+		if (CollectionUtils.isEmpty(invoiceids)) {
+			return 0;
+		} else {
+			return inFpuDao.countInBoundInvoiceFOrder(invoiceids);
+		}
+	}
 }

+ 11 - 0
src/main/java/com/uas/platform/b2c/trade/order/controller/OrderController.java

@@ -973,4 +973,15 @@ public class OrderController {
 	public ResultMap checkConsignment(@RequestBody List<String> uuidArray){
 		return orderService.checkConsignment(uuidArray);
 	}
+
+	/**
+	 * 根据订单号和发货单号获取发货信息
+	 * @param id 订单的id
+	 * @param invoiceid 发货单的id。
+	 * @return  ResultMap
+	 */
+	@RequestMapping(value = "/invoiceid", method = RequestMethod.GET)
+	public ResultMap findInvoiceByIdAndInvoiceId(Long id, String invoiceid) {
+		return orderService.findInvoiceByIdAndInvoiceId(id, invoiceid);
+	}
 }

+ 12 - 0
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -449,6 +449,9 @@ public class Order extends Document implements Serializable {
 	@Column(name = "or_inids", length = 1000)
 	private String inIds = "";
 
+	@Transient
+	private Boolean signReceive;
+
 	/**
 	 * 订单明细
 	 */
@@ -2926,4 +2929,13 @@ public class Order extends Document implements Serializable {
 	public void setShipQty(Double shipQty) {
 		this.shipQty = shipQty;
 	}
+
+	public Boolean getSignReceive() {
+		return signReceive;
+	}
+
+	public Order setSignReceive(Boolean signReceive) {
+		this.signReceive = signReceive;
+		return this;
+	}
 }

+ 16 - 0
src/main/java/com/uas/platform/b2c/trade/order/model/PurchaseDetail.java

@@ -69,6 +69,12 @@ public class PurchaseDetail extends Document {
 	@Column(name = "orderdetail_id", unique = true)
 	private String orderdetailid;
 
+	/**
+	 * 订单主键
+	 */
+	@Column(name = "or_detail_id")
+	private Long orDetailId;
+
 	/**
 	 * 来源订单明细批次(这里多个订单转一个采购单,是先以卖家分组,再将同批次累加形成明细)
 	 *
@@ -1151,6 +1157,7 @@ public class PurchaseDetail extends Document {
 		this.goodsnumber = oDetail.getGoodsnumber();
 		this.spec = oDetail.getSpec();
 		this.productid = oDetail.getProductId();
+		this.orDetailId = oDetail.getId();
 	}
 
 	/**
@@ -1583,6 +1590,15 @@ public class PurchaseDetail extends Document {
 		return this;
 	}
 
+	public Long getOrDetailId() {
+		return orDetailId;
+	}
+
+	public PurchaseDetail setOrDetailId(Long orDetailId) {
+		this.orDetailId = orDetailId;
+		return this;
+	}
+
 	@Override
 	public String toString() {
 		return "PurchaseDetail [id=" + id + ", detno=" + detno + ", detailid=" + detailid + ", orderdetailid=" + orderdetailid + ", batchCode=" + batchCode + ", uuid=" + uuid + ", billStatus="

+ 9 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/OrderService.java

@@ -673,4 +673,13 @@ public interface OrderService {
 	 * @return
 	 */
 	void sendConfirmPaidMessage(Order order);
+
+
+	/**
+	 * 根据订单号和发货单号获取发货信息
+	 * @param id 订单的id
+	 * @param invoiceid 发货单的id。
+	 * @return  ResultMap
+	 */
+	ResultMap findInvoiceByIdAndInvoiceId(Long id, String invoiceid);
 }

+ 59 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -1731,6 +1731,7 @@ public class OrderServiceImpl implements OrderService {
             }
 
         }
+        setSignReceive(order);
         return order;
     }
 
@@ -2091,6 +2092,11 @@ public class OrderServiceImpl implements OrderService {
                 order.setInstallment(installment);
             }
         }
+        List<String> inids = null;
+        Integer count = 0;
+        for (Order order : pageOrders) {
+            setSignReceive(order);
+        }
 
         modelMap.addAttribute("content", pageOrders.getContent());
         modelMap.addAttribute("totalElements", pageOrders.getTotalElements());
@@ -2101,6 +2107,33 @@ public class OrderServiceImpl implements OrderService {
         return modelMap;
     }
 
+    /**
+     * 设置指定订单的签收字段
+     * @param order
+     */
+    private void setSignReceive(Order order) {
+        String inIds = order.getInIds();
+        if (StringUtils.isEmpty(inIds)) {
+            return ;
+        }
+        List<String> inids = new ArrayList<>();
+        Integer count = 0;
+        String[] ids = inIds.split(SplitChar.COMMA);
+        for (String id : ids) {
+            inids.add(id);
+        }
+        if (sysConf.getStoreid().equals(order.getStoreid())) {
+            count = invoiceFOrderService.countInBoundInvoiceFOrder(inids);
+        } else {
+            count = invoiceFPService.countInBoundInvoiceFOrder(inids);
+        }
+        if (count > 0) {
+            order.setSignReceive(Boolean.TRUE);
+        } else {
+            order.setSignReceive(Boolean.FALSE);
+        }
+    }
+
     @Deprecated
     private List<BaseOrder> getCountsOfAllStatusBySearch(ModelMap modelMap, String status, String keyword, PageParams params) {
         SPage<BaseOrder> orderIds = orderSearchService.getOrderIdsWithDetail(keyword, OrderSearchService.Table_name.ORDER, params);
@@ -3498,4 +3531,30 @@ public class OrderServiceImpl implements OrderService {
             }
         }
     }
+
+    /**
+     * 根据订单号和发货单号获取发货信息
+     *
+     * @param id        订单的id
+     * @param invoiceid 发货单的id。
+     * @return ResultMap
+     */
+    @Override
+    public ResultMap findInvoiceByIdAndInvoiceId(Long id, String invoiceid) {
+        if (id == null || StringUtils.isEmpty(invoiceid)) {
+            return ResultMap.success(null);
+        } else {
+            Order order = orderDao.findOne(id);
+            if (order == null) {
+                return ResultMap.success(null);
+            }
+            if (sysConf.getStoreid().equals(order.getStoreid())) {
+                InvoiceFOrder invoiceFOrder = invoiceFOrderService.findByInvoiceid(invoiceid);
+                return ResultMap.success(invoiceFOrder);
+            } else {
+                InvoiceFPurchase invoiceFPurchase = invoiceFPurchaseDao.findByInvoiceid(invoiceid);
+                return ResultMap.success(invoiceFPurchase);
+            }
+        }
+    }
 }