suntg 7 年 前
コミット
d09d6c13e0

+ 15 - 0
src/main/java/com/uas/platform/b2b/dao/ErrorLogDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.ErrorLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 平台错误日志记录
+ *
+ * Created by hejq on 2018-06-20.
+ */
+@Repository
+public interface ErrorLogDao extends JpaRepository<ErrorLog, Long>, JpaSpecificationExecutor<ErrorLog> {
+}

+ 15 - 0
src/main/java/com/uas/platform/b2b/dao/ErrorLogDetailDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.ErrorLogDetail;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 日志详情
+ *
+ * Created by hejq on 2018-06-22.
+ */
+@Repository
+public interface ErrorLogDetailDao extends JpaSpecificationExecutor<ErrorLogDetail>, JpaRepository<ErrorLogDetail, Long> {
+}

+ 41 - 0
src/main/java/com/uas/platform/b2b/dao/NotExistOrdersDao.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.NotExistOrders;
+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;
+
+/**
+ * 平台不存在订单数据库操作
+ *
+ * Created by hejq on 2018-06-19.
+ */
+@Repository
+public interface NotExistOrdersDao extends JpaRepository<NotExistOrders, Long>, JpaSpecificationExecutor<NotExistOrders> {
+
+    /**
+     * 通过企业UU和下载状态查询单据
+     *
+     * @param enUU 企业UU
+     * @param status 下载状态
+     * @param type 单据类型
+     * @return
+     */
+    List<NotExistOrders> findByEnUUAndStatusAndType(Long enUU, Integer status, String type);
+
+    /**
+     * 更新下载状态
+     *
+     * @param id id
+     */
+    @Modifying
+    @Transactional
+    @Query("update NotExistOrders set status = 203 where id = :id")
+    void updateStatus(@Param("id") Long id);
+}

+ 25 - 0
src/main/java/com/uas/platform/b2b/dao/SaleOrderItemDao.java

@@ -0,0 +1,25 @@
+package com.uas.platform.b2b.dao;
+
+import com.uas.platform.b2b.model.SaleOrderItem;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 只保存明细
+ * Created by hejq on 2018-06-19.
+ */
+@Repository
+public interface SaleOrderItemDao extends JpaSpecificationExecutor<SaleOrderItem>, JpaRepository<SaleOrderItem, Long> {
+
+    /**
+     * 通过主表id和明细序号查询单据是否存在
+     *
+     * @param puId 主表id
+     * @param number 明细序号
+     * @return
+     */
+    List<SaleOrderItem> findByPuIdAndNumber(Long puId, Short number);
+}

+ 48 - 0
src/main/java/com/uas/platform/b2b/service/NotExistOrderService.java

@@ -0,0 +1,48 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.model.NotExistOrders;
+
+import java.util.List;
+
+/**
+ * 长平台不存在的ERP单据信息
+ *
+ * Created by hejq on 2018-06-19.
+ */
+public interface NotExistOrderService {
+
+    /**
+     * 通过企业UU和下载状态查询单据
+     *
+     * @param enUU 企业UU
+     * @param status 下载状态
+     * @param type 单据类型
+     * @return
+     */
+    List<NotExistOrders> findByEnUUAndStatusAndType(Long enUU, Integer status, String type);
+
+    /**
+     * 根据返回id更新下载状态
+     *
+     * @param idArray 返回id串
+     */
+    void updateDownloadStatus(String[] idArray);
+
+    /**
+     * 通过单据编号,单据类型,序号保存未上传订单信息
+     *
+     * @param orderCode 单据编号
+     * @param orderType 单据类型
+     * @param detno 序号
+     */
+    void save(String orderCode, String orderType, Short detno);
+
+    /**
+     * 批量存储单据不存在信息
+     *
+     * @param orders 单据编号
+     * @param paramString 异常信息
+     * @param sign 标志
+     */
+    void batchSave(List<NotExistOrders> orders, String paramString, String sign);
+}

+ 27 - 0
src/main/java/com/uas/platform/b2b/service/SaleOrderItemService.java

@@ -0,0 +1,27 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.erp.model.PurchaseDetail;
+import com.uas.platform.b2b.model.SaleOrderItem;
+
+import java.util.List;
+
+/**
+ * 采购订单明细
+ *
+ * Created by hejq on 2018-06-19.
+ */
+public interface SaleOrderItemService {
+
+    /**
+     * 批量保存
+     */
+    void save(List<SaleOrderItem> items);
+
+    /**
+     * 将ERP采购单明细封装成平台所需明细
+     *
+     * @param details 采购单明细
+     * @return
+     */
+    List<SaleOrderItem> covert(List<PurchaseDetail> details);
+}

+ 87 - 0
src/main/java/com/uas/platform/b2b/service/impl/NotExistOrderServiceImpl.java

@@ -0,0 +1,87 @@
+package com.uas.platform.b2b.service.impl;
+
+import com.uas.platform.b2b.dao.NotExistOrdersDao;
+import com.uas.platform.b2b.erp.exception.NotFoundUtils;
+import com.uas.platform.b2b.model.NotExistOrders;
+import com.uas.platform.b2b.service.NotExistOrderService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.Status;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 长平台不存在的ERP单据信息
+ *
+ * Created by hejq on 2018-06-19.
+ */
+@Service
+public class NotExistOrderServiceImpl implements NotExistOrderService {
+
+    @Autowired
+    private NotExistOrdersDao ordersDao;
+
+    /**
+     * 通过企业UU和下载状态查询单据
+     *
+     * @param enUU   企业UU
+     * @param status 下载状态
+     * @param type   单据类型
+     * @return
+     */
+    @Override
+    public List<NotExistOrders> findByEnUUAndStatusAndType(Long enUU, Integer status, String type) {
+        return ordersDao.findByEnUUAndStatusAndType(enUU, status, type);
+    }
+
+    /**
+     * 根据返回id更新下载状态
+     *
+     * @param idArray 返回id串
+     */
+    @Override
+    public void updateDownloadStatus(String[] idArray) {
+        if (idArray.length > 0) {
+            for (String id : idArray) {
+                ordersDao.updateStatus(Long.valueOf(id));
+            }
+        }
+    }
+
+    /**
+     * 通过单据编号,单据类型,序号保存未上传订单信息
+     *
+     * @param orderCode 单据编号
+     * @param orderType 单据类型
+     * @param detno     序号
+     */
+    @Override
+    public void save(String orderCode, String orderType, Short detno) {
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        List<NotExistOrders> ordersList = ordersDao.findByEnUUAndStatusAndType(enUU, Status.NOT_UPLOAD.value(), orderType);
+        if (CollectionUtils.isEmpty(ordersList)) {
+            ordersDao.save(new NotExistOrders(enUU, orderCode, orderType, detno, ""));
+        } else {
+            NotExistOrders order = ordersList.get(0);
+            if (order.getStatus() == Status.DOWNLOADED.value()) {
+                order.setStatus(Status.NOT_UPLOAD.value());
+                ordersDao.save(order);
+            }
+        }
+    }
+
+    /**
+     * 批量存储单据不存在信息
+     *
+     * @param orders      单据编号
+     * @param paramString 异常信息
+     * @param sign        标志
+     */
+    @Override
+    public void batchSave(List<NotExistOrders> orders, String paramString, String sign) {
+        ordersDao.save(orders);
+        NotFoundUtils.OrderNotFound(paramString, sign);
+    }
+}

+ 141 - 0
src/main/java/com/uas/platform/b2b/service/impl/SaleOrderItemServiceImpl.java

@@ -0,0 +1,141 @@
+package com.uas.platform.b2b.service.impl;
+
+import com.uas.platform.b2b.core.util.StringUtil;
+import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
+import com.uas.platform.b2b.erp.model.*;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.Attach;
+import com.uas.platform.b2b.service.NotExistOrderService;
+import com.uas.platform.b2b.service.NotExistProductService;
+import com.uas.platform.b2b.service.SaleOrderItemService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.b2b.temporary.model.OrderType;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.Status;
+import org.apache.axis.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+/**
+ * 明细附件
+ *
+ * Created by hejq on 2018-06-19.
+ */
+@Service
+public class SaleOrderItemServiceImpl implements SaleOrderItemService {
+
+    @Autowired
+    private SaleOrderItemDao itemDao;
+
+    @Autowired
+    private PurchaseOrderDao orderDao;
+
+    @Autowired
+    private ProductDao productDao;
+
+    @Autowired
+    private NotExistProductService notExistProductService;
+
+    @Autowired
+    private NotExistOrderService orderService;
+
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    /**
+     * 批量保存
+     *
+     * @param items
+     */
+    @Override
+    public void save(List<SaleOrderItem> items) {
+        if (!CollectionUtils.isEmpty(items)) {
+            items = itemDao.save(items);
+            for (SaleOrderItem item : items) {
+                orderDao.updatePurchaseStatus((short) Status.NOT_REPLY.value(), item.getPuId());
+                logger.log("更新采购单状态", "通过自动上传采购单明细更新采购单状态", "pd_id: " + item.getId() + ";pu_id: " + item.getPuId());
+            }
+        }
+    }
+
+    /**
+     * 将ERP采购单明细封装成平台所需明细
+     *
+     * @param details 采购单明细
+     * @return
+     */
+    @Override
+    public List<SaleOrderItem> covert(List<PurchaseDetail> details) {
+        List<SaleOrderItem> items = new ArrayList<>();
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        List<NotExistOrders> ordersList = new ArrayList<>();
+        String sign = "";
+        for (PurchaseDetail detail : details) {
+            List<PurchaseOrder> orders = orderDao.findByEnUUAndCode(enUU, detail.getPd_code());
+            if (!CollectionUtils.isEmpty(orders)) {
+                Long puId = orders.get(0).getId();
+                SaleOrderItem item = convert(detail);
+                if (null != item) {
+                    item.setPuId(puId);
+                    items.add(item);
+                }
+            } else {
+                if (StringUtils.isEmpty(sign)) {
+                    sign = StringUtil.uuid();
+                }
+                ordersList.add(new NotExistOrders(enUU, detail.getPd_code(), OrderType.saleMain.name(), Constant.NO, sign));
+            }
+        }
+        if (!CollectionUtils.isEmpty(ordersList)) {
+            orderService.batchSave(ordersList, ExceptionNote.SALE_NOTFOUND.getPhrase(), sign);
+        }
+        return items;
+    }
+
+    /**
+     * 将ERP采购单明细封装成平台所需明细
+     *
+     * @param detail 采购单明细
+     * @return
+     */
+    private SaleOrderItem convert(PurchaseDetail detail) {
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        SaleOrderItem item = new SaleOrderItem();
+        item.setDelivery(detail.getPd_delivery());
+        item.setNumber(detail.getPd_detno());
+        item.setPrice(detail.getPd_price());
+        item.setQty(detail.getPd_qty());
+        item.setTaxrate(detail.getPd_rate());
+        item.setFactory(detail.getPd_factory());
+        item.setVendspec(detail.getPd_vendspec());
+        item.setRemark(detail.getPd_remark());
+        item.setStatus((short) Status.NOT_REPLY.value());
+        item.setBeipin(detail.getPd_beipin());
+        item.setErpDate(new Date(System.currentTimeMillis()));
+        if (!org.apache.commons.collections.CollectionUtils.isEmpty(detail.getAttaches())) {
+            Set<Attach> b2bAttaches = new HashSet<Attach>();
+            for(com.uas.platform.b2b.erp.model.Attach attach : detail.getAttaches()) {
+                com.uas.platform.b2b.model.Attach b2bAttach = attach.convertToB2bAttach("客户采购订单明细物料附件");
+                b2bAttaches.add(b2bAttach);
+            }
+            item.setAttachs(b2bAttaches);
+        }
+        List<Product> products = productDao.findByEnUUAndCode(enUU, detail.getPd_prodcode());
+        if (!CollectionUtils.isEmpty(products)) {
+            item.setProductId(products.get(0).getId());
+            return item;
+        }  else {
+            List<NotExistProduct> productList = new ArrayList<>();
+            String sign = StringUtil.uuid();
+            productList.add(new NotExistProduct(detail.getPd_prodcode(), enUU,  OrderType.purchase.name(),
+                    detail.getPd_code(), detail.getPd_detno(), sign));
+            notExistProductService.batchSave(productList, ExceptionNote.SALE_PRODUCT_NOTFOUND.getPhrase(), sign);
+        }
+        return null;
+    }
+}