Browse Source

【怡海能达商城对接】【客户资料生成、供应商资料取数调整】

chenw 6 years ago
parent
commit
859b74cef2

+ 9 - 0
src/main/java/com/uas/erp/schedular/diymall/domain/Order.java

@@ -45,6 +45,15 @@ public class Order {
     OrderExpress orderExpress; // 订单物流信息
     List<OrderTimeAxis> orderTimeAxis; //订单时间轴
     SellerDueBank sellerDueBank; // 商家收款信息
+    private int erpEnuu;        //erp-客户或供应商enuu
+
+    public int getErpEnuu() {
+        return erpEnuu;
+    }
+
+    public void setErpEnuu(int erpEnuu) {
+        this.erpEnuu = erpEnuu;
+    }
 
     public String getCode() {
         return code;

+ 75 - 12
src/main/java/com/uas/erp/schedular/mall/task/OrderTask.java

@@ -337,7 +337,7 @@ public class OrderTask extends AbstractTask {
                         + "pu_paymentscode,pu_payments,pu_buyercode,pu_buyername,pu_departmentcode,pu_departmentname,pu_shipaddresscode,pu_pocode,pu_status,pu_statuscode,"
                         + "pu_recordman,pu_indate,pu_auditman,pu_auditdate,pu_getprice,pu_isadvance,PU_SENDSTATUS) values(?,?,sysdate,'代运营订单','RMB','1',?,?,?,?,?,?,?,?,'ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',sysdate,'ADMIN',sysdate,'0','unadvance','已上传')";
         //供应商资料生成逻辑
-        Vendor vendor = getVendorByUUOrName(order.getCode(), order.getSellerEnuu(), order.getSellerName());
+        Vendor vendor = getVendorByUUOrName(order.getCode(), order.getErpEnuu());
         if (null == vendor) {
             return false;
         }
@@ -424,21 +424,16 @@ public class OrderTask extends AbstractTask {
      * 获取供应商资料
      * @param enUU
      */
-    private Vendor getVendorByUUOrName(String orderCode, Integer enUU, String enName){
+    private Vendor getVendorByUUOrName(String orderCode, Integer enUU){
         Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_uu = ? and rownum = 1", Vendor.class, enUU);
         if (!ObjectUtils.isEmpty(vendor)) {
             return vendor;
         }else {
-            vendor = jdbcTemplate.queryForBean("SELECT * FROM VENDOR WHERE VE_NAME = ? AND ROWNUM = 1", Vendor.class, enName);
-            if (!ObjectUtils.isEmpty(vendor)) {
-                return vendor;
-            }else {
-                //记录日志
-                String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                        "values(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', sysdate, null, '未找到对应的供应商资料!')";
-                jdbcTemplate.execute(logOrderSql);
-                return null;
-            }
+            //记录日志
+            String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+                    "values(LOGORDER_SEQ.NEXTVAL,'" + orderCode + "', '失败', sysdate, null, '未找到对应的供应商资料!')";
+            jdbcTemplate.execute(logOrderSql);
+            return null;
         }
     }
 
@@ -475,4 +470,72 @@ public class OrderTask extends AbstractTask {
     }
 
 
+    @TaskMapping(title = "生成客户资料", fixedDelay = 60000)
+    public void downloadCustomer() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+        String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
+        Long updateTime = System.currentTimeMillis() - 24 * 60 * 60 * 1000;
+        //获取需要生成数据的供应商
+        List<Map<String, Object>> vendorList = jdbcTemplate.queryForList("SELECT VE_UU,VE_ACCESSSECRET FROM VENDOR WHERE VE_ENABLEMALL = '1'");
+        if (CollectionUtils.isEmpty(vendorList)) {
+            LOGGER.error("没有启用的供应商");
+            return;
+        }
+        for (Map<String, Object> map : vendorList){
+            Object vendUU = map.get("VE_UU"), vendAccessSecret = map.get("VE_ACCESSSECRET");
+            OrdersInfo ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, 1);
+            PagingInfo pageInfo = ordersInfo.getPagingInfo();
+            if (!ObjectUtils.isEmpty(pageInfo) && pageInfo.getTotalCount() > 0) {
+                int totalCount = pageInfo.getTotalCount();
+                if (totalCount > 30) {
+                    //生成单据
+                    createCustomer(ordersInfo.getOrder());
+                    //获取额外部分的数据
+                    int endCount = Double.valueOf(Math.ceil(totalCount / 30.0)).intValue();
+                    for (int i = 2; i <= endCount; i++) {
+                        ordersInfo = getOrdersByUU(url, String.valueOf(vendUU), String.valueOf(vendAccessSecret), updateTime, 30, i);
+                        createCustomer(ordersInfo.getOrder());
+                    }
+                }else {
+                    //生成单据
+                    createCustomer(ordersInfo.getOrder());
+                }
+            }
+
+        }
+    }
+
+    private void createCustomer(List<Order> orderList) {
+        for (Order order : orderList) {
+            //此单是否已下载过
+            int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
+            if (count == 0) {
+                //取已发货状态的订单生成
+                if (order.getStatus() != 141000 && order.getStatus() != 141010 && order.getStatus() == 141095) {
+                    if (order.getEnuu() != null && order.getEnuu() != 0) {
+                        Customer customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_UU = ? and nvl(cu_uu,' ') <> 0 and CU_AUDITSTATUS = '已审核'", Customer.class, order.getEnuu());
+                        if (ObjectUtils.isEmpty(customer)) {
+                            customer = jdbcTemplate.queryForBean("select * from CUSTOMER where CU_NAME = ? and CU_AUDITSTATUS = '已审核'", Customer.class, order.getBuyerEnName());
+                            if (ObjectUtils.isEmpty(customer)) {
+                                //未找到对应的客户资料,新建一个
+                                int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
+                                String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
+                                //营业执照号
+                                String identityNum = "";
+                                OrderInvoice orderInvoice = order.getOrderInvoice();
+                                if (!ObjectUtils.isEmpty(orderInvoice)) {
+                                    identityNum = orderInvoice.getIdentityNum();
+                                }
+                                String insertCustomerSql = "insert into customer(cu_id,cu_code,cu_name,cu_shortname,cu_businesscode,cu_uu,cu_arcode,cu_arname,cu_paymentscode,cu_payments,cu_sellercode,cu_sellername,cu_servicecode,"
+                                        + "cu_servicename,cu_kind,cu_agenttype,cu_cop,cu_enablecredit,cu_shipment,cu_email,cu_tel,cu_contact,cu_mobile,cu_recordman,cu_recorddate,cu_auditman,cu_auditdate,cu_auditstatus,cu_auditstatuscode)"
+                                        + "values(" + id + ",'" + customerCode + "','" + order.getBuyerEnName() + "','" + order.getBuyerEnName() + "','" + identityNum + "','" + order.getEnuu() + "','"+customerCode+"','"+order.getBuyerEnName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
+                                        + "'普通客户','普通客户','深圳怡海能达','否','快递','" + order.getBuyerEmail() + "','" + order.getBuyerMobile() + "','" + order.getBuyerName() + "','" + order.getBuyerMobile() + "','ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
+                                jdbcTemplate.execute(insertCustomerSql);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
 }