Bläddra i källkod

针对ERP单据上传时存在物料不存在的情况,进行统计处理,并通过查询获取数据返回ERP更新物料上传状态

hejq 8 år sedan
förälder
incheckning
3fa5b27325

+ 9 - 13
src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java

@@ -377,19 +377,15 @@ public class BaseInfoController {
 		String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
 		InputStream is = null;
 		Workbook workbook = null;
-//		try {
-			is = uploadItem.getFile().getInputStream();
-			if ("xls".equals(suffix)) {
-				workbook = new HSSFWorkbook(is);
-			} else if ("xlsx".equals(suffix)) {
-				workbook = new XSSFWorkbook(is);
-			} else {
-				throw new IllegalOperatorException("文件格不正确,请上传.xls或.xlsx的文件");
-			}
-			map = baseInfoService.releaseByWorkbook(workbook);
-//		} catch (Exception e) {
-//			e.printStackTrace();
-//		}
+		is = uploadItem.getFile().getInputStream();
+		if ("xls".equals(suffix)) {
+			workbook = new HSSFWorkbook(is);
+		} else if ("xlsx".equals(suffix)) {
+			workbook = new XSSFWorkbook(is);
+		} else {
+			throw new IllegalOperatorException("文件格不正确,请上传.xls或.xlsx的文件");
+		}
+		map = baseInfoService.releaseByWorkbook(workbook);
 		logger.log("商品批次", "[" + SystemSession.getUser().getUserName() + "]通过excel导入了物料,数量为" + map.size());
 		return map;
 	}

+ 49 - 0
src/main/java/com/uas/platform/b2b/dao/NotExistProductDao.java

@@ -0,0 +1,49 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.NotExistProduct;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * 平台不存在的ERP物料编号数据库操作
+ *
+ * Created by hejq on 2018-03-14.
+ */
+@Repository
+public interface NotExistProductDao extends JpaSpecificationExecutor<NotExistProduct>, JpaRepository<NotExistProduct, Long> {
+
+    /**
+     * 通过企业UU和下载状态查询平台不存在的物料信息
+     *
+     * @param enuu 企业UU
+     * @param status 下载状态
+     * @return
+     */
+    List<NotExistProduct> findByEnuuAndStatus(Long enuu, Integer status);
+
+    /**
+     * 更新下载状态
+     *
+     * @param id id
+     */
+    @Modifying
+    @Transactional
+    @Query("update NotExistProduct set status = 203 where id = :id")
+    void updateStatus(@Param("id") Long id);
+
+    /**
+     * 通过企业和物料编号查询是否存在该条记录
+     *
+     * @param enuu 企业UU
+     * @param code 物料编号
+     * @return
+     */
+    List<NotExistProduct> findByEnuuAndCode(Long enuu, String code);
+}

+ 44 - 0
src/main/java/com/uas/platform/b2b/erp/controller/ProdController.java

@@ -4,8 +4,11 @@ import com.uas.platform.b2b.erp.model.Prod;
 import com.uas.platform.b2b.erp.model.ProductSaler;
 import com.uas.platform.b2b.erp.service.ProdService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
+import com.uas.platform.b2b.model.NotExistProduct;
 import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.service.NotExistProductService;
 import com.uas.platform.b2b.service.ProductService;
+import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
@@ -40,6 +43,9 @@ public class ProdController {
 	@Autowired
 	private ProductService productService;
 
+	@Autowired
+    private NotExistProductService notExistProductService;
+
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	/**
@@ -169,4 +175,42 @@ public class ProdController {
         productService.quitProdSaler(productSalers);
         logger.log("物料资料", "ERP取消个人物料同步到平台", productSalers.size());
     }
+
+    /**
+     * 获取未上传的物料信息
+     * @return
+     */
+    @RequestMapping(value = "/notExistProds", method = RequestMethod.GET)
+	@ResponseBody
+	public List<Prod> findNotExistProducts() {
+        List<Prod> prods = covert(notExistProductService.findByEnuuAndStatus(SystemSession.getUser().getEnterprise().getUu(), Status.NOT_UPLOAD.value()));
+        logger.log("物料资料", "ERP获取平台未上传的物料信息", prods.size());
+        return prods;
+	}
+
+    private List<Prod> covert(List<NotExistProduct> productList) {
+        List<Prod> prods = new ArrayList<Prod>();
+        if (!CollectionUtils.isEmpty(productList)) {
+            for (NotExistProduct product : productList) {
+                Prod prod = new Prod();
+                prod.setB2b_id(product.getId());
+                prod.setPr_code(product.getCode());
+                prods.add(prod);
+            }
+        }
+        return prods;
+    }
+
+    /**
+     * 获取数据后更新下载状态
+     *
+     * @param data 封装的id串
+     * @throws Exception
+     */
+    @RequestMapping(value = "/notExistProds/back", method = RequestMethod.POST)
+    @ResponseBody
+    public void updateNotExistProdsStatus(@RequestParam("data") String data) throws Exception {
+        notExistProductService.updateDownloadStatus(URLDecoder.decode(data, "UTF-8").split(","));
+        logger.log("物料资料", "ERP获取平台未上传的物料信息返回更新下载状态", URLDecoder.decode(data, "UTF-8").split(",").length);
+    }
 }

+ 16 - 18
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -1,15 +1,7 @@
 package com.uas.platform.b2b.erp.service.impl;
 
-import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.core.util.ContextUtils;
-import com.uas.platform.b2b.dao.CommonDao;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryItemDao;
-import com.uas.platform.b2b.dao.SaleQuotationItemDao;
-import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
@@ -18,17 +10,10 @@ import com.uas.platform.b2b.erp.service.InquiryService;
 import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.event.PurchaseInquiryItemSaveReleaseEvent;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurchaseInquiry;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.SaleQuotation;
-import com.uas.platform.b2b.model.SaleQuotationItem;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
-import com.uas.platform.b2b.temporary.model.PartnershipRecord;
+import com.uas.platform.core.exception.NotFoundException;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
@@ -73,6 +58,9 @@ public class InquiryServiceImpl implements InquiryService {
 	@Autowired
 	private VendorService vendorService;
 
+	@Autowired
+    private NotExistProductDao notExistProductDao;
+
     private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
 	private final static UsageBufferedLogger usageLogger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
@@ -125,6 +113,16 @@ public class InquiryServiceImpl implements InquiryService {
 							if (products.size() > 0) {
 								item.setProduct(products.get(0));
 								item.setProductId(products.get(0).getId());
+							} else {
+                                List<NotExistProduct> productList = notExistProductDao.findByEnuuAndCode(enUU, product.getCode());
+                                if (org.springframework.util.CollectionUtils.isEmpty(productList)) {
+                                    notExistProductDao.save(new NotExistProduct(product.getCode(), enUU, "inquiry", inquiry.getIn_code()));
+                                } else {
+                                    NotExistProduct prod = productList.get(0);
+                                    prod.setStatus(Status.NOT_UPLOAD.value());
+                                    notExistProductDao.save(prod);
+                                }
+                                throw new NotFoundException(product.getCode());
 							}
 							inquiryItems.add(item);
 						}

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

@@ -1,6 +1,5 @@
 package com.uas.platform.b2b.erp.service.impl;
 
-import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.MessageLog;
@@ -12,7 +11,6 @@ import com.uas.platform.b2b.erp.service.VendorService;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
-import com.uas.platform.b2b.temporary.model.PartnershipRecord;
 import com.uas.platform.core.exception.NotFoundException;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
@@ -52,6 +50,9 @@ public class PurchaseServiceImpl implements PurchaseService {
 	@Autowired
 	private VendorService vendorService;
 
+	@Autowired
+    private NotExistProductDao notExistProductDao;
+
 	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	@Override
@@ -102,7 +103,15 @@ public class PurchaseServiceImpl implements PurchaseService {
 							item.setErpDate(new Date());
 							orderItems.add(item);
 						} else {
-							throw new NotFoundException("企业uu为【" + product.getEnUU() + "】编号为【" + product.getCode() + "】的物料");
+						    List<NotExistProduct> productList = notExistProductDao.findByEnuuAndCode(enUU, product.getCode());
+						    if (CollectionUtils.isEmpty(productList)) {
+                                notExistProductDao.save(new NotExistProduct(product.getCode(), enUU, "purchase", purchase.getPu_code()));
+                            } else {
+                                NotExistProduct prod = productList.get(0);
+                                prod.setStatus(Status.NOT_UPLOAD.value());
+                                notExistProductDao.save(prod);
+                            }
+							throw new NotFoundException(product.getCode());
 						}
 					}
 				}

+ 152 - 0
src/main/java/com/uas/platform/b2b/model/NotExistProduct.java

@@ -0,0 +1,152 @@
+package com.uas.platform.b2b.model;
+
+import com.uas.platform.core.model.Status;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 这张表用来记录ERP订单上传过程中未存在的物料信息
+ *
+ * Created by hejq on 2018-03-14.
+ */
+@Table(name = "erp$products")
+@Entity
+public class NotExistProduct implements Serializable {
+
+    /**
+     * default serialVersionUID
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "erp$products_gen")
+    @SequenceGenerator(name = "erp$products_gen", sequenceName = "erp$products_seq", allocationSize = 1)
+    @Column(name = "pr_id")
+    private Long id;
+
+    /**
+     * 物料编号
+     */
+    @Column(name = "pr_code")
+    private String code;
+
+    /**
+     * 企业
+     */
+    @Column(name = "pr_enuu")
+    private Long enuu;
+
+    /**
+     * 下载状态<br>
+     *     <pro>
+     *         203: 已下载, 202 未下载
+     *     </pro>
+     */
+    @Column(name = "pr_status")
+    private Integer status;
+
+    /**
+     * 单据日期
+     */
+    @Column(name = "pr_date")
+    private Date date;
+
+    /**
+     * 物料来源,哪个单据发现的
+     */
+    @Column(name = "pr_source")
+    private String source;
+
+    /**
+     * 单据编号
+     */
+    @Column(name = "pr_sourcecode")
+    private String sourceCode;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Long getEnuu() {
+        return enuu;
+    }
+
+    public void setEnuu(Long enuu) {
+        this.enuu = enuu;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getSourceCode() {
+        return sourceCode;
+    }
+
+    public void setSourceCode(String sourceCode) {
+        this.sourceCode = sourceCode;
+    }
+
+    public NotExistProduct() {
+
+    }
+
+    public NotExistProduct(String code, Long enuu, String source, String sourceCode) {
+        this.code = code;
+        this.enuu = enuu;
+        this.source = source;
+        this.sourceCode = sourceCode;
+        this.date = new Date(System.currentTimeMillis());
+        this.status = Status.NOT_UPLOAD.value();
+    }
+
+    @Override
+    public String toString() {
+        return "NotExistProduct{" +
+                "id=" + id +
+                ", code='" + code + '\'' +
+                ", enuu=" + enuu +
+                ", status=" + status +
+                ", date=" + date +
+                ", source='" + source + '\'' +
+                ", sourceCode='" + sourceCode + '\'' +
+                '}';
+    }
+}

+ 30 - 0
src/main/java/com/uas/platform/b2b/service/NotExistProductService.java

@@ -0,0 +1,30 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.erp.model.Prod;
+import com.uas.platform.b2b.model.NotExistProduct;
+
+import java.util.List;
+
+/**
+ * 查询平台不存在的ERP的物料信息
+ *
+ * Created by hejq on 2018-03-14.
+ */
+public interface NotExistProductService {
+
+    /**
+     * 通过企业UU和下载状态查询未上传的物料
+     *
+     * @param enuu 企业UU
+     * @param status 下载状态
+     * @return
+     */
+    List<NotExistProduct> findByEnuuAndStatus(Long enuu, Integer status);
+
+    /**
+     * 更新下载状态
+     *
+     * @param idArray id信息
+     */
+    void updateDownloadStatus(String[] idArray);
+}

+ 4 - 27
src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java

@@ -459,35 +459,9 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 		return map;
 	}
 
-//	private void saveUserOrders(final Product product){
-//		ThreadTask.getInstance().execute(new Runnable() {
-//			@Override
-//			public void run() {
-//			/* 添加供应商的阅读记录*/
-//				List<User> users = userDao.findByEnUU(product.getEnUU());
-//				UserOrders userOrders;
-//				List<UserOrders> list = new ArrayList<>();
-//				for (User user : users) {
-//					if (user == null || Objects.equals(user.getUserUU(), SystemSession.getUser().getUserUU())) {
-//						continue;
-//					}
-//					userOrders = new UserOrders(user.getUserUU(), product.getEnUU(), product.getId(), product.getIsPurchase() == Constant.YES ? "purc":"sale", "products");
-//					list.add(userOrders);
-//				}
-//				userOrderDao.save(list);
-//			}
-//		});
-//	}
-
 	@Override
 	public Product findById(Long id) {
 		Product product = productDao.findOne(id);
-		Integer num = productDao.findProductBusinessStatusById(id);
-//		if (num > 0) {
-//			product.setIsbusiness(Constant.YES);
-//		} else {
-//			product.setIsbusiness(Constant.NO);
-//		}
 		return product;
 	}
 
@@ -691,6 +665,9 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 		order.setVendusertel(neworder.getVendusertel());
 		order = purchaseOrderAllDao.save(order);
         order.setDisplay(Constant.YES);
+        if (order.getStatus().equals(Status.NOT_REPLY.value())) {
+        	order.setSendStatus((short) Status.NOT_UPLOAD.value());
+		}
         saveUserOrders(order);
 		short i = 1;
 		if (!CollectionUtils.isEmpty(neworder.getOrderItems())) {
@@ -730,7 +707,7 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 				i++;
 			}
 		}
-		orderDetails = purchaseOrderAllItemDao.save(orderDetails);
+		purchaseOrderAllItemDao.save(orderDetails);
 		if (order.getStatus().equals(Status.UNAUDIT.value())) {
 			logger.log("购物车添加商品", "向购物车添加商品(id=" + order.getId() + ")", SystemSession.getUser().getUserUU(),
 					SystemSession.getUser().getIp());

+ 50 - 0
src/main/java/com/uas/platform/b2b/service/impl/NotExistProductServiceImpl.java

@@ -0,0 +1,50 @@
+package com.uas.platform.b2b.service.impl;
+
+import com.uas.platform.b2b.dao.CommonDao;
+import com.uas.platform.b2b.dao.NotExistProductDao;
+import com.uas.platform.b2b.erp.model.Prod;
+import com.uas.platform.b2b.model.NotExistProduct;
+import com.uas.platform.b2b.service.NotExistProductService;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 查询平台不存在的ERP的物料信息
+ *
+ * Created by hejq on 2018-03-14.
+ */
+@Service
+public class NotExistProductServiceImpl implements NotExistProductService {
+
+    @Autowired
+    private NotExistProductDao notExistProductDao;
+
+    /**
+     * 通过企业UU和下载状态查询未上传的物料
+     *
+     * @param enuu   企业UU
+     * @param status 下载状态
+     * @return
+     */
+    @Override
+    public List<NotExistProduct> findByEnuuAndStatus(Long enuu, Integer status) {
+        return notExistProductDao.findByEnuuAndStatus(enuu, status);
+    }
+
+    /**
+     * 更新下载状态
+     *
+     * @param idArray id信息
+     */
+    @Override
+    public void updateDownloadStatus(String[] idArray) {
+        if (idArray.length > 0) {
+            for (String id : idArray) {
+                notExistProductDao.updateStatus(Long.valueOf(id));
+            }
+        }
+    }
+}