Преглед изворни кода

通过单号和企业UU查询单据是否存在的方法更新

hejq пре 7 година
родитељ
комит
77d6a5de22

+ 15 - 4
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java

@@ -20,13 +20,24 @@ import java.util.List;
 public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder>, JpaRepository<PurchaseOrder, Long> {
 
 	/**
+     * 通过企业UU和采购单单号查询采购单
+     *
 	 * @param enUU
 	 *            买方企业ID
 	 * @param code
 	 *            订单号
 	 * @return
 	 */
-	public List<PurchaseOrder> findByEnUUAndCode(long enUU, String code);
+	List<PurchaseOrder> findByEnUUAndCode(long enUU, String code);
+
+    /**
+     * 通过企业UU和采购单单号查询数量
+     *
+     * @param enUU 企业UU
+     * @param code 采购单单号
+     * @return
+     */
+	Integer countByEnUUAndCode(long enUU, String code);
 
 	/**
 	 * 按采购单的供应商企业ID和采购单状态来统计条数
@@ -36,16 +47,16 @@ public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder
 	 * @return
 	 */
 	@Query("select count(o) from PurchaseOrder o where o.vendUU = :vendUU and o.status = :status")
-	public int getCountByVendUUAndStatus(@Param("vendUU") long vendUU, @Param("status") short status);
+	int getCountByVendUUAndStatus(@Param("vendUU") long vendUU, @Param("status") short status);
 
 	/**
 	 * 获得每种单据状态的未读数量
 	 *
 	 * @param ids 未读单据id
-	 * @return 返回各个状态的数量,Object数据第一个值为数量,第二个值为砖头
+	 * @return 返回各个状态的数量,Object数据第一个值为数量,第二个值为状态
 	 */
 	@Query("select count(p), p.status from PurchaseOrderAll p where p.id in :ids and (p.end = 0 or p.end is null) and (p.status = 201 or p.status = 200) group by p.status")
-	public List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
+	List<Object[]> getUnreadCountEveryStatus(@Param("ids") List<Long> ids);
 
 	/**
 	 * 筛选出已回复单据的id号

+ 28 - 15
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseProdInOutServiceImpl.java

@@ -14,6 +14,7 @@ import com.uas.platform.b2b.service.NotExistOrderService;
 import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.support.CollectionUtil;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Constant;
 import org.apache.axis.utils.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,6 +62,9 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
 	@Autowired
     private PurchaseService purchaseService;
 
+	@Autowired
+    private PurchaseOrderDao purchaseOrderDao;
+
 	@Override
 	public List<PurchaseAcceptItem> convertProdInOuts(List<PurchaseProdInOut> prodInOuts) throws Exception {
 		List<PurchaseAcceptItem> acceptItems = new ArrayList<PurchaseAcceptItem>();
@@ -173,25 +177,34 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
         for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
             PurchaseAcceptItem item = it.next();
             if (item.getOrderItem() != null) {
-                List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
-                        .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
-                                item.getOrderItem().getNumber());
-                // 对应的采购单存在
-                if (purchaseOrderItems.size() > 0) {
-                    // 对应的采购单明细set进去
-                    item.setOrderItem(purchaseOrderItems.get(0));
-                    item.setOrderItemId(purchaseOrderItems.get(0).getId());
-                    // 设置主记录
-                    item.setAccept(accept);
-                    item.setErpDate(new Date());
-                    item.setProduct(purchaseOrderItems.get(0).getProduct());
-                    acceptItems.add(item);
-                } else {
+                Integer orderCount = purchaseOrderDao.countByEnUUAndCode(enUU, item.getOrderItem().getOrder().getCode());
+                if (orderCount == 0) {
                     if (StringUtils.isEmpty(uuid)) {
                         uuid = StringUtil.uuid();
                     }
                     ordersList.add(new NotExistOrders(enUU, item.getOrderItem().getOrder().getCode(),
-                            com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), uuid));
+                            com.uas.platform.b2b.temporary.model.OrderType.saleMain.name(), Constant.NO, uuid));
+                } else {
+                    List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
+                            .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
+                                    item.getOrderItem().getNumber());
+                    // 对应的采购单存在
+                    if (purchaseOrderItems.size() > 0) {
+                        // 对应的采购单明细set进去
+                        item.setOrderItem(purchaseOrderItems.get(0));
+                        item.setOrderItemId(purchaseOrderItems.get(0).getId());
+                        // 设置主记录
+                        item.setAccept(accept);
+                        item.setErpDate(new Date());
+                        item.setProduct(purchaseOrderItems.get(0).getProduct());
+                        acceptItems.add(item);
+                    } else {
+                        if (StringUtils.isEmpty(uuid)) {
+                            uuid = StringUtil.uuid();
+                        }
+                        ordersList.add(new NotExistOrders(enUU, item.getOrderItem().getOrder().getCode(),
+                                com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), uuid));
+                    }
                 }
             } else {
                 ProductInfo productInfo = products.get(item.getProdcode());

+ 2 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseServiceImpl.java

@@ -73,8 +73,8 @@ public class PurchaseServiceImpl implements PurchaseService {
 		Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
 		for (Purchase purchase : purchases) {
 			// 先查看是否已存在
-			List<PurchaseOrder> orders = purchaseOrderDao.findByEnUUAndCode(enUU, purchase.getPu_code());
-			if (CollectionUtils.isEmpty(orders)) {
+			Integer orderCount = purchaseOrderDao.countByEnUUAndCode(enUU, purchase.getPu_code());
+			if (orderCount == 0) {
 				PurchaseOrderInfo order = purchase.convert();
 				// 将order的UserUU set 为em_uu
 				List<Vendor> vendors = vendorDao.findByMyEnUUAndVendUU(order.getEnUU(), order.getVendUU());

+ 1 - 1
src/main/java/com/uas/platform/b2b/model/PurchaseAcceptItem.java

@@ -55,7 +55,7 @@ public class PurchaseAcceptItem extends AbstractOrderProduct {
 	/**
 	 * 采购订单明细
 	 */
-	@OneToOne(cascade = {  })
+	@OneToOne()
 	@JoinColumn(name = "pai_pdid", insertable = false, updatable = false)
 	private PurchaseOrderItem orderItem;