Browse Source

注释商城同步ERP

zhaoy 6 years ago
parent
commit
3adc02b91b

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

@@ -52,539 +52,539 @@ public class OrderTask extends AbstractTask {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(OrderTask.class);
 
-    @TaskMapping(title = "上传出货单过账状态到商城", cron = "0 0 1 * * ?")
-    public void uploadPoststatus() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-        Master master = ContextHolder.getMaster();
-        if ("test".equalsIgnoreCase(master.getEnv())) {
-            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
-        }
-        //获取需要上传的数据
-        List<OrderDeliver> orderDeliverList = jdbcTemplate.queryForBeanList("SELECT distinct SA_POCODE as orderCode,TRIM(',' FROM SA_EXPRESSCODE_USER) AS expressCode,TRIM(',' FROM SA_EXPRESSINC_USER) AS expressInc FROM SALE WHERE NVL(SA_SENDPOSTSTATUS,' ') = '待上传' AND SA_KIND = '商城订单'", OrderDeliver.class);
-        if (!CollectionUtils.isEmpty(orderDeliverList)) {
-            //发送同步数据
-            JSONObject json = new JSONObject();
-            json.put("secretId", master.getMa_uu());
-            json.put("signature", "");
-            json.put("orderDeliver", orderDeliverList);
-            String signatureValues = OpenApiSignUtil.sign(JSON.toJSONString(json), master.getMa_accesssecret());
-            json.put("signature", signatureValues);
-
-            RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
-            HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
-            String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/deliver", requestEntity, String.class);
-            LOGGER.info("response={}", response);
-            DeliverResp deliverResp = JSON.parseObject(response, DeliverResp.class);
-            //成功后,更新上传状态
-            if (deliverResp.getRespHeader().getCode() == 0) {
-                StringBuilder sb = new StringBuilder();
-                for (OrderDeliver orderDeliver : orderDeliverList) {
-                    sb.append("'" + orderDeliver.getOrderCode() + "',");
-                }
-                String pocodes = sb.substring(0, sb.length() - 1);
-                jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE IN (" + pocodes +")");
-                postERPUUToMall(pocodes, master.getMa_uu(), master.getMa_accesssecret());
-            }else {
-                List<DeliverError> deliverErrorList = deliverResp.getDeliverError();
-                StringBuilder sb = new StringBuilder();
-                for (DeliverError deliverError : deliverErrorList) {
-                    jdbcTemplate.execute("INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) VALUES(LOGORDER_SEQ.NEXTVAL, "
-                            + "'"+deliverError.getOrderCode()+"','失败',SYSDATE,NULL,'出货单过账状态同步失败,原因:"+deliverError.getErrorMsg()+"')");
-                    sb.append("'" + deliverError.getOrderCode() + "',");
-                }
-                String pocodes = sb.substring(0, sb.length() - 1);
-                jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE NOT IN (" + pocodes +")");
-            }
-        }
-    }
-
-    private void postERPUUToMall(String PoCodes, Long secretId, String accesssecret) {
-        try {
-            JSONObject json = new JSONObject();
-            json.put("secretId", secretId);
-            json.put("signature", "");
-            List<Map<String, Object>> orderInfoList = jdbcTemplate.queryForList("SELECT SA_POCODE, CU_UU FROM SALE LEFT JOIN CUSTOMER ON SA_CUSTCODE = CU_CODE WHERE SA_POCODE IN (" + PoCodes +")");
-            JSONArray orderUpdateList = new JSONArray();
-            for (Map<String, Object> map : orderInfoList) {
-                JSONObject orderUpdate = new JSONObject();
-                orderUpdate.put("orderCode", map.get("SA_POCODE"));
-                orderUpdate.put("erpEnuu", map.get("CU_UU"));
-                orderUpdateList.add(orderUpdate);
-            }
-            json.put("orderUpdate", orderUpdateList);
-            String signatureValue = OpenApiSignUtil.sign(json.toString(), accesssecret);
-            json.put("signature", signatureValue);
-            RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
-            HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
-            String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/batch/update", requestEntity, String.class);
-            JSONObject respObject = JSON.parseObject(response).getJSONObject("respHeader");
-            if (respObject.getInteger("code") != 0) {
-                LOGGER.info("同步客户至优软商城失败:【" + respObject.getString("msg") + "】");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @TaskMapping(title = "下载已过账销售订单,生成采购/销售/入库/出货单据", cron = "0 0 1 * * ?")
-    public void downloadOrder() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+//    @TaskMapping(title = "上传出货单过账状态到商城", cron = "0 0 1 * * ?")
+//    public void uploadPoststatus() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
 //        Master master = ContextHolder.getMaster();
 //        if ("test".equalsIgnoreCase(master.getEnv())) {
 //            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
 //        }
-        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");
-            int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
-            if(0 == data){
-                updateTime = 0L;
-            }
-            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) {
-                    //生成单据
-                    generateOrder(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);
-                        generateOrder(ordersInfo.getOrder());
-                    }
-                }else {
-                    //生成单据
-                    generateOrder(ordersInfo.getOrder());
-                }
-            }
-        }
-        int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
-        if (0 == data) {
-            jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallOrder' and caller = 'mallOrder!YHND'");
-        }
-    }
-
-    /**
-     * 生成订单数据
-     * @param orderList
-     */
-    private void generateOrder(List<Order> orderList) {
-        LOGGER.info("订单数据orderList={}", JSON.toJSONString(orderList));
-        for (Order order : orderList) {
-            //此单是否已下载过
-            int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
-            if (count == 0) {
-                //取已发货状态的订单生成
-                if (order.getStatus() == 141040 || order.getStatus() == 141050 || order.getStatus() == 141091) {
-                    String purchaseCode = jdbcTemplate.generateCode("Purchase", 2);
-                    String saleCode = jdbcTemplate.generateCode("Sale", 2);
-                    //1.生成采购订单
-                    boolean success = generatePurchase(order, purchaseCode, saleCode);
-                    if (success) {
-                        //2.生成销售订单
-                        generateSale(order, saleCode);
-                        //3.生成采购验收单
-                        Map<String, String> purchaseInMap = purcahseIn(order, saleCode, purchaseCode);
-                        //4.生成销售出货单
-                        String saleOutCode = saleOut(order, saleCode, purchaseInMap.get("batchCode"));
-                        //5.过账
-                        postPurchaseAndSale(purchaseInMap.get("inoutno"), saleOutCode);
-                    }
-                }
-            }
-        }
-    }
-
-    private void postPurchaseAndSale(String purchaseInCode, String saleOutCode) {
-        String message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "采购验收单", purchaseInCode, "ADMIN");
-        if (StringUtils.isEmpty(message)) {
-            message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "出货单", saleOutCode, "ADMIN");
-        }
-
-    }
-
-    /**
-     * 生成销售出货单并过账
-     * @param saleCode
-     */
-    private String saleOut(Order order, String saleCode,String batchCode) {
-        String saleOutCode = jdbcTemplate.generateCode("ProdInOut!Sale", 2);
-        Integer saleOutId = jdbcTemplate.generate("prodinout_seq");
-        //主表
-        String mainSql = "INSERT INTO PRODINOUT(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardid,pi_cardcode,pi_title,pi_arcode,pi_arname,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
-                        + "pi_departmentcode,pi_departmentname,pi_address,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_purposename,pi_expresscode,pi_tocode,pi_recordman,pi_recorddate,"
-                        + "pi_auditman,pi_auditdate,pi_printstatus,pi_printstatuscode,pi_sellercode,pi_sellername,pi_sendstatus) SELECT " + saleOutId + ",'"+ saleOutCode +"','出货单',SYSDATE,'RMB','1',sa_custid,sa_custcode,sa_custname,"
-                        + "sa_apcustcode,sa_apcustname,sa_paymentscode,sa_payments,'ADMIN','管理员',sa_departmentcode,sa_departmentname,sa_toplace,'已审核','AUDITED','未过账','UNPOST',sa_need3,sa_need2,'普通','ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','ADMIN','管理员','已上传' "
-                        + " FROM SALE WHERE SA_CODE = ?";
-        //明细表
-        String detailSql = "INSERT INTO PRODIODETAIL(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_auditstatus,pd_outqty,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_sendprice,pd_taxrate,pd_batchCode,pd_pocode,pd_invoiceName) "
-                        + " SELECT PRODIODETAIL_SEQ.NEXTVAL," + saleOutId + ",ROWNUM,'" + saleOutCode + "','出货单','ENTERING',SD_QTY,SA_CODE,SD_DETNO,SD_PRODCODE,SD_PRODID,'SZ01','深圳仓',SD_PRICE,'13','"+ batchCode + "',SA_POCODE,sd_invoiceName "
-                        + " FROM SALE LEFT JOIN SALEDETAIL ON SA_ID = SD_SAID WHERE SA_CODE = ?";
-
-        jdbcTemplate.execute(mainSql, saleCode);
-        jdbcTemplate.execute(detailSql, saleCode);
-        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售出货单生成成功')";
-        jdbcTemplate.execute(logOrderSql);
-        return saleOutCode;
-    }
-
-    /**
-     * 生成采购验收单
-     * @param purchaseCode
-     */
-    private Map<String, String> purcahseIn(Order order,String saleCode, String purchaseCode) {
-        Map<String, String> resultMap = new HashMap<>(2);
-        String purcCheckinCode = jdbcTemplate.generateCode("ProdInOut!PurcCheckin",2);
-        Integer purcCheckinId = jdbcTemplate.getInt("SELECT PRODINOUT_SEQ.NEXTVAL FROM DUAL");
-        Double total = Double.valueOf(jdbcTemplate.getString("select round(sum(pd_price * pd_qty),2) from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?", purchaseCode));
-        // 1.主表数据
-        String mainSql = "INSERT INTO prodinout(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardcode,pi_title,pi_receivecode,pi_receivename,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
-                + "pi_departmentcode,pi_departmentname,pi_total,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_recordman,pi_recorddate,pi_auditman,pi_auditdate,pi_updateman,pi_updatedate,pi_printstatus,pi_printstatuscode,pi_whcode,pi_whname,pi_sendstatus) "
-                + "SELECT '" + purcCheckinId + "','" + purcCheckinCode + "','采购验收单',SYSDATE,'RMB','1',pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_paymentscode,pu_payments,'ADMIN','管理员',"
-                + "'B15','优软云运营组','"+ total +"','已审核','AUDITED','未过账','UNPOST','ADMIN',SYSDATE,'ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','SZ01','深圳仓','已上传' FROM PURCHASE WHERE PU_CODE = ?";
-        // 2.明细表数据
-        //取批号
-        String batchCode = jdbcTemplate.callForString("{call utl_rseq(?,?,?)}", "BatchCode", "/yyMMdd/5");
-        String detailSql = "insert into prodiodetail(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_accountstatus,pd_accountstatuscode,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_inqty,pd_orderprice,pd_taxrate,pd_batchcode,pd_invoiceName) "
-                        + " select prodiodetail_seq.nextval," + purcCheckinId + ",rownum,'"+ purcCheckinCode +"','采购验收单','未核算','UNACCOUNT',pu_code,pd_detno,pd_prodcode,pd_prodid,'SZ01','深圳仓',pd_qty,pd_price,'13','"+batchCode+"',pd_invoiceName from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?";
-
-        jdbcTemplate.execute(mainSql, purchaseCode);
-        jdbcTemplate.execute(detailSql, purchaseCode);
-        resultMap.put("batchCode", batchCode);
-        resultMap.put("inoutno", purcCheckinCode);
-        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购验收单生成成功')";
-        jdbcTemplate.execute(logOrderSql);
-        return resultMap;
-    }
-
-    /**
-     * 生成销售订单
-     * @param order
-     * @param saleCode
-     */
-    private void generateSale(Order order,String saleCode) {
-        int saleId = jdbcTemplate.getInt("SELECT SALE_SEQ.NEXTVAL FROM DUAL");
-        //客户资料
-        Customer customer = generateCustomer(order);
-        if(ObjectUtils.isEmpty(customer)){
-            String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                    "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '销售订单生成失败,没有客户资料')";
-            jdbcTemplate.execute(logOrderSql);
-            return;
-        }
-        //销售订单主表
-        String insertSaleSql = "INSERT INTO SALE(SA_ID,SA_CODE,SA_DATE,SA_KIND,SA_CURRENCY,SA_RATE,SA_CUSTID,SA_CUSTCODE,SA_CUSTNAME,SA_APCUSTCODE,"
-                + "SA_APCUSTNAME,SA_PAYMENTSCODE,SA_PAYMENTS,SA_SELLERCODE,SA_SELLER,SA_DEPARTMENTCODE,SA_DEPARTMENTNAME,"
-                + "SA_TOPLACE,SA_POCODE,SA_STATUS,SA_STATUSCODE,SA_RECORDER,SA_RECORDDATE,SA_AUDITMAN,SA_AUDITDATE,sa_need3,SA_NEED2) "
-                + "VALUES(?,?,SYSDATE,'代运营订单','RMB','1',?,?,?,?,?,'PC31','CBD(款到发货)','ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',SYSDATE,'ADMIN',SYSDATE,?,?)";
-        //销售订单明细表
-        String insertDetailSql = "INSERT INTO SALEDETAIL(SD_ID, SD_SAID, SD_CODE, SD_DETNO, SD_PRODID, SD_PRODCODE, SD_QTY, SD_PRICE, SD_TAXRATE, SD_DELIVERY,sd_invoiceName) "
-                + "SELECT SALEDETAIL_SEQ.NEXTVAL,'"+saleId+"','"+saleCode+"',pd_detno,pd_prodid,pd_prodcode,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName FROM PURCHASE LEFT JOIN PURCHASEDETAIL ON PU_ID = PD_PUID WHERE PU_REFCODE = '"+saleCode+"'";
-
-        jdbcTemplate.execute(insertSaleSql, saleId, saleCode, customer.getCu_id(), customer.getCu_code(), customer.getCu_name(), customer.getCu_arcode(), customer.getCu_arname(),
-                order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode(), order.getBuyerName(), order.getBuyerMobile());
-        jdbcTemplate.execute(insertDetailSql);
-        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售订单生成成功')";
-        jdbcTemplate.execute(logOrderSql);
-    }
-
-    /**
-     * 生成客户资料
-     */
-    private Customer generateCustomer(Order order) {
-        Customer customer = null;
-        if (order.getEnuu() == null || order.getEnuu() == 0) {
-            OrderInvoice orderInvoice = order.getOrderInvoice();
-            if (ObjectUtils.isEmpty(orderInvoice)) {
-                //虚拟客户
-                customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_CODE = ?", Customer.class, "C0023");
-                return customer;
-            }else {
-                customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_NAME = ? AND CU_BUSINESSCODE = ?", Customer.class, orderInvoice.getName(), orderInvoice.getIdentityNum());
-                if (!ObjectUtils.isEmpty(customer)){
-                    return customer;
-                }else {
-                    int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
-                    String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
-                    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 + "','" + orderInvoice.getName() + "','" + orderInvoice.getName() + "','" + orderInvoice.getIdentityNum() + "',null,'"+customerCode+"','"+orderInvoice.getName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
-                            + "'普通客户','普通客户','深圳怡海能达','否','快递',null,null,null,null,'ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
-                    jdbcTemplate.execute(insertCustomerSql);
-                    customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
-                    return customer;
-                }
-            }
-        }else {
-            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);
-                    customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
-                }
-            }
-        }
-        return customer;
-    }
-
-    /**
-     * 生成采购订单
-     * @param order
-     */
-    private boolean generatePurchase(Order order,String purchaseCode, String saleCode) {
-        int purchaseId = jdbcTemplate.getInt("select purchase_seq.nextval from dual");
-        String insertMainSql = "insert into purchase(pu_id,pu_code,pu_date,pu_kind,pu_currency,pu_rate,pu_refcode,pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_vendoruu,"
-                        + "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','已上传')";
-        //供应商资料生成逻辑
-        if (order.getErpEnuu() == null || order.getErpEnuu() == 0) {
-            return false;
-        }
-        Vendor vendor = getVendorByUUOrName(order.getCode(), order.getErpEnuu());
-        if (null == vendor) {
-            return false;
-        }
-        List<OrderProduct> productList = order.getOrderProduct();
-        List<String> insertDetailSqlList = new ArrayList<>(productList.size());
-        for (int i = 0, len = productList.size(); i < len; i++) {
-            OrderProduct product = productList.get(i);
-            String prodCode = "";
-            Integer prodId = null;
-            //物料生成逻辑
-            Map<String, Object> productMap = generateProduct(product, order.getCode(), vendor);
-            if (!CollectionUtils.isEmpty(productMap)) {
-                prodCode = String.valueOf(productMap.get("prodCode"));
-                prodId = Integer.valueOf(String.valueOf(productMap.get("prodId")));
-            }else {
-                String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                        "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '采购订单生成失败,没有物料资料')";
-                jdbcTemplate.execute(logOrderSql);
-                return false;
-            }
-            String insertDetailSql = "insert into PurchaseDetail(pd_id,pd_puid,pd_detno,pd_code,pd_prodcode,pd_prodid,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName) "
-                    + " values(PurchaseDetail_seq.nextval,"+ purchaseId +","+ (i+1) +",'"+ purchaseCode +"','"+ prodCode +"',"+prodId+",'"+ product.getAmount() +"','"+ product.getUnitPrice() +"','13',sysdate+"+product.getMaxDelivery()+",'"+product.getInvoiceName()+"')";
-            insertDetailSqlList.add(insertDetailSql);
-        }
-
-        jdbcTemplate.execute(insertMainSql, purchaseId, purchaseCode, saleCode, vendor.getVe_code(), vendor.getVe_name(), vendor.getVe_apvendcode(), vendor.getVe_apvendname(), vendor.getVe_uu(),
-                vendor.getVe_paymentcode(), vendor.getVe_payment(), order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode());
-        jdbcTemplate.batchExecute(insertDetailSqlList);
-        String sendStatus = jdbcTemplate.getString("SELECT PU_SENDSTATUS FROM PURCHASE WHERE PU_ID = ?", purchaseId);
-        LOGGER.info("生成的采购订单id={},上传状态={}", purchaseId, sendStatus);
-        jdbcTemplate.execute("UPDATE PURCHASE SET PU_SENDSTATUS = '已上传' WHERE PU_ID = ?", purchaseId);
-        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购订单生成成功')";
-        jdbcTemplate.execute(logOrderSql);
-        return true;
-    }
-
-    /**
-     * 生成物料资料
-     * @param product
-     * @param orderCode
-     * @param vendor
-     * @return
-     */
-    private Map<String, Object> generateProduct(OrderProduct product, String orderCode, Vendor vendor){
-        Map<String, Object> productMap = new HashMap<>(2);
-        productMap = jdbcTemplate.queryForMap("SELECT PV_PRODCODE AS \"prodCode\",PV_PRODID AS \"prodId\" FROM PRODUCTVENDOR WHERE PV_VENDPRODCODE = ? AND PV_VENDCODE = ?", product.getMaterialCode(), vendor.getVe_code());
-        if (!CollectionUtils.isEmpty(productMap)) {
-            return productMap;
-        }else {
-            int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
-            if (count > 1) {
-                //不生成订单并生成日志
-                String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
-                        + "VALUES(LOGORDER_SEQ.NEXTVAL,'"  + orderCode + "', '失败', SYSDATE, null, '根据平台订单物料的型号+品牌未在物料资料找到唯一对照关系')";
-                jdbcTemplate.execute(logOrderSql);
-                return null;
-            }else if (count == 1) {
-                //返回物料信息
-                productMap = jdbcTemplate.queryForMap("SELECT PR_CODE AS \"prodCode\",PR_ID as \"prodId\" FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
-                //生成供应商物料对照关系
-                String insertProductVendorSql = "insert into productVendor(pv_id,pv_prodid,pv_detno,pv_vendid,pv_vendcode,pv_vendprodcode,pv_vendprodspec,pv_vendprodunit,pv_vendname,pv_prodcode,pv_zxbzs) "
-                        + "values(productVendor_seq.nextval, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?)";
-                jdbcTemplate.execute(insertProductVendorSql, productMap.get("prodId"), vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), productMap.get("prodCode"), product.getMpq());
-            }else if (count == 0) {
-                String code = "";
-                if (StringUtils.isEmpty(product.getMaterialCode())) {
-                    String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
-                            + "VALUES(LOGORDER_SEQ.NEXTVAL,'"  + orderCode + "', '失败', SYSDATE, null, '从平台获取到的产品信息uas物料编号为空')";
-                    jdbcTemplate.execute(logOrderSql);
-                    return null;
-                }else {
-                    code = "YS" + product.getMaterialCode();
-                }
-                int id = jdbcTemplate.getInt("SELECT PRODUCT_SEQ.NEXTVAL FROM DUAL");
-                //生成物料资料
-                String insertProductSql = "INSERT INTO PRODUCT(PR_ID,PR_CODE,PR_DETAIL,PR_SPEC,PR_UNIT,PR_ORISPECCODE,PR_BRAND,pr_taxcode,pr_manutype,pr_dhzc,PR_SUPPLYTYPE,PR_ZXBZS,PR_ZXDHL,PR_ACCEPTMETHOD,"
-                                        + "PR_RECORDMAN,PR_DOCDATE,PR_AUDITMAN,PR_AUDITDATE,PR_STATUS,PR_STATUSCODE,PR_REMARK_PURCHASE) VALUES(?,?,?,?,?,?,?,?,'PURCHASE','MRP','PUSH',?,?,'不检验','ADMIN',SYSDATE,'ADMIN',SYSDATE,'已审核','AUDITED',?)";
-                jdbcTemplate.execute(insertProductSql, id, code, product.getModel(), product.getSpec(), product.getUnit(), product.getModel(), product.getBrand(),product.getInvoiceModel() , product.getMpq(), product.getMoq(), product.getInvoiceName());
-                //生成供应商物料对照关系
-                jdbcTemplate.execute("insert into productVendor(pv_id,pv_prodid,pv_detno,pv_vendid,pv_vendcode,pv_vendprodcode,pv_vendprodspec,pv_vendprodunit,pv_vendname,pv_prodcode,pv_zxbzs) "
-                        + "values(productVendor_seq.nextval, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?)", id, vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), code, product.getMpq());
-                productMap = new HashMap<>(2);
-                productMap.put("prodCode", code);
-                productMap.put("prodId", id);
-            }
-        }
-        return productMap;
-    }
-
-    /**
-     * 获取供应商资料
-     * @param enUU
-     */
-    private Vendor getVendorByUUOrName(String orderCode, Integer enUU){
-        // 收到的供应商UU为优软商城时,默认转为怡海能达
-        if (enUU == 10042875) {
-            Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_code = 'YT4604'", Vendor.class);
-            return vendor;
-        }
-        Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_uu = ? and rownum = 1", Vendor.class, enUU);
-        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;
-        }
-    }
-
-    /**
-     * 取销售订单数据
-     * @param requestURL
-     * @param vendUU
-     * @param updateTime
-     * @param pageSize
-     * @param pageNumber
-     * @return
-     * @throws NoSuchAlgorithmException
-     * @throws InvalidKeyException
-     * @throws UnsupportedEncodingException
-     */
-    private OrdersInfo getOrdersByUU(String requestURL, String vendUU, String vendAccessSecret, Long updateTime, int pageSize, int pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-        String paramStr = "secretId=" + vendUU + "&"+ "materialCode=" + "" + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
-        //进行签名
-        String signatureValue = OpenApiSignUtil.sign(paramStr,vendAccessSecret);
-        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
-        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
-        paramStr += "&" + signatureKV;
-        requestURL = requestURL + paramStr;
-
-        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
-        uriTemplateHandler.setStrictEncoding(true);
-
-        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
-        restTemp.setUriTemplateHandler(uriTemplateHandler);
-        String result = restTemp.getForObject(requestURL, String.class);
-        OrdersInfo ordersInfo = JSON.parseObject(result, OrdersInfo.class);
-        return ordersInfo;
-    }
-
-
-    @TaskMapping(title = "生成客户资料", fixedDelay = 60000)
-    public void downloadCustomer() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-//        Master master = ContextHolder.getMaster();
-//        if ("test".equalsIgnoreCase(master.getEnv())) {
-//            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
+//        //获取需要上传的数据
+//        List<OrderDeliver> orderDeliverList = jdbcTemplate.queryForBeanList("SELECT distinct SA_POCODE as orderCode,TRIM(',' FROM SA_EXPRESSCODE_USER) AS expressCode,TRIM(',' FROM SA_EXPRESSINC_USER) AS expressInc FROM SALE WHERE NVL(SA_SENDPOSTSTATUS,' ') = '待上传' AND SA_KIND = '商城订单'", OrderDeliver.class);
+//        if (!CollectionUtils.isEmpty(orderDeliverList)) {
+//            //发送同步数据
+//            JSONObject json = new JSONObject();
+//            json.put("secretId", master.getMa_uu());
+//            json.put("signature", "");
+//            json.put("orderDeliver", orderDeliverList);
+//            String signatureValues = OpenApiSignUtil.sign(JSON.toJSONString(json), master.getMa_accesssecret());
+//            json.put("signature", signatureValues);
+//
+//            RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
+//            HttpHeaders headers = new HttpHeaders();
+//            headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+//            HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
+//            String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/deliver", requestEntity, String.class);
+//            LOGGER.info("response={}", response);
+//            DeliverResp deliverResp = JSON.parseObject(response, DeliverResp.class);
+//            //成功后,更新上传状态
+//            if (deliverResp.getRespHeader().getCode() == 0) {
+//                StringBuilder sb = new StringBuilder();
+//                for (OrderDeliver orderDeliver : orderDeliverList) {
+//                    sb.append("'" + orderDeliver.getOrderCode() + "',");
+//                }
+//                String pocodes = sb.substring(0, sb.length() - 1);
+//                jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE IN (" + pocodes +")");
+//                postERPUUToMall(pocodes, master.getMa_uu(), master.getMa_accesssecret());
+//            }else {
+//                List<DeliverError> deliverErrorList = deliverResp.getDeliverError();
+//                StringBuilder sb = new StringBuilder();
+//                for (DeliverError deliverError : deliverErrorList) {
+//                    jdbcTemplate.execute("INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) VALUES(LOGORDER_SEQ.NEXTVAL, "
+//                            + "'"+deliverError.getOrderCode()+"','失败',SYSDATE,NULL,'出货单过账状态同步失败,原因:"+deliverError.getErrorMsg()+"')");
+//                    sb.append("'" + deliverError.getOrderCode() + "',");
+//                }
+//                String pocodes = sb.substring(0, sb.length() - 1);
+//                jdbcTemplate.execute("UPDATE SALE SET SA_SENDPOSTSTATUS = '已上传' WHERE SA_KIND = '商城订单' AND SA_POCODE NOT IN (" + pocodes +")");
+//            }
 //        }
-        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);
-                                LOGGER.info("生成客户资料,code={},id={}", customerCode, id);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
+//    }
+//
+//    private void postERPUUToMall(String PoCodes, Long secretId, String accesssecret) {
+//        try {
+//            JSONObject json = new JSONObject();
+//            json.put("secretId", secretId);
+//            json.put("signature", "");
+//            List<Map<String, Object>> orderInfoList = jdbcTemplate.queryForList("SELECT SA_POCODE, CU_UU FROM SALE LEFT JOIN CUSTOMER ON SA_CUSTCODE = CU_CODE WHERE SA_POCODE IN (" + PoCodes +")");
+//            JSONArray orderUpdateList = new JSONArray();
+//            for (Map<String, Object> map : orderInfoList) {
+//                JSONObject orderUpdate = new JSONObject();
+//                orderUpdate.put("orderCode", map.get("SA_POCODE"));
+//                orderUpdate.put("erpEnuu", map.get("CU_UU"));
+//                orderUpdateList.add(orderUpdate);
+//            }
+//            json.put("orderUpdate", orderUpdateList);
+//            String signatureValue = OpenApiSignUtil.sign(json.toString(), accesssecret);
+//            json.put("signature", signatureValue);
+//            RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
+//            HttpHeaders headers = new HttpHeaders();
+//            headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+//            HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(), headers);
+//            String response = restTemp.postForObject(BASEPATH_TRADE + "/openapi/trade/order/batch/update", requestEntity, String.class);
+//            JSONObject respObject = JSON.parseObject(response).getJSONObject("respHeader");
+//            if (respObject.getInteger("code") != 0) {
+//                LOGGER.info("同步客户至优软商城失败:【" + respObject.getString("msg") + "】");
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+//
+//    @TaskMapping(title = "下载已过账销售订单,生成采购/销售/入库/出货单据", cron = "0 0 1 * * ?")
+//    public void downloadOrder() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+////        Master master = ContextHolder.getMaster();
+////        if ("test".equalsIgnoreCase(master.getEnv())) {
+////            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
+////        }
+//        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");
+//            int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
+//            if(0 == data){
+//                updateTime = 0L;
+//            }
+//            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) {
+//                    //生成单据
+//                    generateOrder(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);
+//                        generateOrder(ordersInfo.getOrder());
+//                    }
+//                }else {
+//                    //生成单据
+//                    generateOrder(ordersInfo.getOrder());
+//                }
+//            }
+//        }
+//        int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallOrder' and caller = 'mallOrder!YHND'"));
+//        if (0 == data) {
+//            jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallOrder' and caller = 'mallOrder!YHND'");
+//        }
+//    }
+//
+//    /**
+//     * 生成订单数据
+//     * @param orderList
+//     */
+//    private void generateOrder(List<Order> orderList) {
+//        LOGGER.info("订单数据orderList={}", JSON.toJSONString(orderList));
+//        for (Order order : orderList) {
+//            //此单是否已下载过
+//            int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM SALE WHERE SA_POCODE = ?", order.getCode());
+//            if (count == 0) {
+//                //取已发货状态的订单生成
+//                if (order.getStatus() == 141040 || order.getStatus() == 141050 || order.getStatus() == 141091) {
+//                    String purchaseCode = jdbcTemplate.generateCode("Purchase", 2);
+//                    String saleCode = jdbcTemplate.generateCode("Sale", 2);
+//                    //1.生成采购订单
+//                    boolean success = generatePurchase(order, purchaseCode, saleCode);
+//                    if (success) {
+//                        //2.生成销售订单
+//                        generateSale(order, saleCode);
+//                        //3.生成采购验收单
+//                        Map<String, String> purchaseInMap = purcahseIn(order, saleCode, purchaseCode);
+//                        //4.生成销售出货单
+//                        String saleOutCode = saleOut(order, saleCode, purchaseInMap.get("batchCode"));
+//                        //5.过账
+//                        postPurchaseAndSale(purchaseInMap.get("inoutno"), saleOutCode);
+//                    }
+//                }
+//            }
+//        }
+//    }
+//
+//    private void postPurchaseAndSale(String purchaseInCode, String saleOutCode) {
+//        String message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "采购验收单", purchaseInCode, "ADMIN");
+//        if (StringUtils.isEmpty(message)) {
+//            message = jdbcTemplate.callForString("{call SP_COMMITPRODINOUT(?,?,?,?)}", "出货单", saleOutCode, "ADMIN");
+//        }
+//
+//    }
+//
+//    /**
+//     * 生成销售出货单并过账
+//     * @param saleCode
+//     */
+//    private String saleOut(Order order, String saleCode,String batchCode) {
+//        String saleOutCode = jdbcTemplate.generateCode("ProdInOut!Sale", 2);
+//        Integer saleOutId = jdbcTemplate.generate("prodinout_seq");
+//        //主表
+//        String mainSql = "INSERT INTO PRODINOUT(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardid,pi_cardcode,pi_title,pi_arcode,pi_arname,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
+//                        + "pi_departmentcode,pi_departmentname,pi_address,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_purposename,pi_expresscode,pi_tocode,pi_recordman,pi_recorddate,"
+//                        + "pi_auditman,pi_auditdate,pi_printstatus,pi_printstatuscode,pi_sellercode,pi_sellername,pi_sendstatus) SELECT " + saleOutId + ",'"+ saleOutCode +"','出货单',SYSDATE,'RMB','1',sa_custid,sa_custcode,sa_custname,"
+//                        + "sa_apcustcode,sa_apcustname,sa_paymentscode,sa_payments,'ADMIN','管理员',sa_departmentcode,sa_departmentname,sa_toplace,'已审核','AUDITED','未过账','UNPOST',sa_need3,sa_need2,'普通','ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','ADMIN','管理员','已上传' "
+//                        + " FROM SALE WHERE SA_CODE = ?";
+//        //明细表
+//        String detailSql = "INSERT INTO PRODIODETAIL(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_auditstatus,pd_outqty,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_sendprice,pd_taxrate,pd_batchCode,pd_pocode,pd_invoiceName) "
+//                        + " SELECT PRODIODETAIL_SEQ.NEXTVAL," + saleOutId + ",ROWNUM,'" + saleOutCode + "','出货单','ENTERING',SD_QTY,SA_CODE,SD_DETNO,SD_PRODCODE,SD_PRODID,'SZ01','深圳仓',SD_PRICE,'13','"+ batchCode + "',SA_POCODE,sd_invoiceName "
+//                        + " FROM SALE LEFT JOIN SALEDETAIL ON SA_ID = SD_SAID WHERE SA_CODE = ?";
+//
+//        jdbcTemplate.execute(mainSql, saleCode);
+//        jdbcTemplate.execute(detailSql, saleCode);
+//        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售出货单生成成功')";
+//        jdbcTemplate.execute(logOrderSql);
+//        return saleOutCode;
+//    }
+//
+//    /**
+//     * 生成采购验收单
+//     * @param purchaseCode
+//     */
+//    private Map<String, String> purcahseIn(Order order,String saleCode, String purchaseCode) {
+//        Map<String, String> resultMap = new HashMap<>(2);
+//        String purcCheckinCode = jdbcTemplate.generateCode("ProdInOut!PurcCheckin",2);
+//        Integer purcCheckinId = jdbcTemplate.getInt("SELECT PRODINOUT_SEQ.NEXTVAL FROM DUAL");
+//        Double total = Double.valueOf(jdbcTemplate.getString("select round(sum(pd_price * pd_qty),2) from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?", purchaseCode));
+//        // 1.主表数据
+//        String mainSql = "INSERT INTO prodinout(pi_id,pi_inoutno,pi_class,pi_date,pi_currency,pi_rate,pi_cardcode,pi_title,pi_receivecode,pi_receivename,pi_paymentcode,pi_payment,pi_emcode,pi_emname,"
+//                + "pi_departmentcode,pi_departmentname,pi_total,pi_invostatus,pi_invostatuscode,pi_status,pi_statuscode,pi_recordman,pi_recorddate,pi_auditman,pi_auditdate,pi_updateman,pi_updatedate,pi_printstatus,pi_printstatuscode,pi_whcode,pi_whname,pi_sendstatus) "
+//                + "SELECT '" + purcCheckinId + "','" + purcCheckinCode + "','采购验收单',SYSDATE,'RMB','1',pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_paymentscode,pu_payments,'ADMIN','管理员',"
+//                + "'B15','优软云运营组','"+ total +"','已审核','AUDITED','未过账','UNPOST','ADMIN',SYSDATE,'ADMIN',SYSDATE,'ADMIN',SYSDATE,'未打印','UNPRINT','SZ01','深圳仓','已上传' FROM PURCHASE WHERE PU_CODE = ?";
+//        // 2.明细表数据
+//        //取批号
+//        String batchCode = jdbcTemplate.callForString("{call utl_rseq(?,?,?)}", "BatchCode", "/yyMMdd/5");
+//        String detailSql = "insert into prodiodetail(pd_id,pd_piid,pd_pdno,pd_inoutno,pd_piclass,pd_accountstatus,pd_accountstatuscode,pd_ordercode,pd_orderdetno,pd_prodcode,pd_prodid,pd_whcode,pd_whname,pd_inqty,pd_orderprice,pd_taxrate,pd_batchcode,pd_invoiceName) "
+//                        + " select prodiodetail_seq.nextval," + purcCheckinId + ",rownum,'"+ purcCheckinCode +"','采购验收单','未核算','UNACCOUNT',pu_code,pd_detno,pd_prodcode,pd_prodid,'SZ01','深圳仓',pd_qty,pd_price,'13','"+batchCode+"',pd_invoiceName from purchase left join purchaseDetail on pu_id = pd_puid where pu_code = ?";
+//
+//        jdbcTemplate.execute(mainSql, purchaseCode);
+//        jdbcTemplate.execute(detailSql, purchaseCode);
+//        resultMap.put("batchCode", batchCode);
+//        resultMap.put("inoutno", purcCheckinCode);
+//        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购验收单生成成功')";
+//        jdbcTemplate.execute(logOrderSql);
+//        return resultMap;
+//    }
+//
+//    /**
+//     * 生成销售订单
+//     * @param order
+//     * @param saleCode
+//     */
+//    private void generateSale(Order order,String saleCode) {
+//        int saleId = jdbcTemplate.getInt("SELECT SALE_SEQ.NEXTVAL FROM DUAL");
+//        //客户资料
+//        Customer customer = generateCustomer(order);
+//        if(ObjectUtils.isEmpty(customer)){
+//            String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                    "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '销售订单生成失败,没有客户资料')";
+//            jdbcTemplate.execute(logOrderSql);
+//            return;
+//        }
+//        //销售订单主表
+//        String insertSaleSql = "INSERT INTO SALE(SA_ID,SA_CODE,SA_DATE,SA_KIND,SA_CURRENCY,SA_RATE,SA_CUSTID,SA_CUSTCODE,SA_CUSTNAME,SA_APCUSTCODE,"
+//                + "SA_APCUSTNAME,SA_PAYMENTSCODE,SA_PAYMENTS,SA_SELLERCODE,SA_SELLER,SA_DEPARTMENTCODE,SA_DEPARTMENTNAME,"
+//                + "SA_TOPLACE,SA_POCODE,SA_STATUS,SA_STATUSCODE,SA_RECORDER,SA_RECORDDATE,SA_AUDITMAN,SA_AUDITDATE,sa_need3,SA_NEED2) "
+//                + "VALUES(?,?,SYSDATE,'代运营订单','RMB','1',?,?,?,?,?,'PC31','CBD(款到发货)','ADMIN','管理员','B15','优软云运营组',?,?,'已审核','AUDITED','ADMIN',SYSDATE,'ADMIN',SYSDATE,?,?)";
+//        //销售订单明细表
+//        String insertDetailSql = "INSERT INTO SALEDETAIL(SD_ID, SD_SAID, SD_CODE, SD_DETNO, SD_PRODID, SD_PRODCODE, SD_QTY, SD_PRICE, SD_TAXRATE, SD_DELIVERY,sd_invoiceName) "
+//                + "SELECT SALEDETAIL_SEQ.NEXTVAL,'"+saleId+"','"+saleCode+"',pd_detno,pd_prodid,pd_prodcode,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName FROM PURCHASE LEFT JOIN PURCHASEDETAIL ON PU_ID = PD_PUID WHERE PU_REFCODE = '"+saleCode+"'";
+//
+//        jdbcTemplate.execute(insertSaleSql, saleId, saleCode, customer.getCu_id(), customer.getCu_code(), customer.getCu_name(), customer.getCu_arcode(), customer.getCu_arname(),
+//                order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode(), order.getBuyerName(), order.getBuyerMobile());
+//        jdbcTemplate.execute(insertDetailSql);
+//        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '销售订单生成成功')";
+//        jdbcTemplate.execute(logOrderSql);
+//    }
+//
+//    /**
+//     * 生成客户资料
+//     */
+//    private Customer generateCustomer(Order order) {
+//        Customer customer = null;
+//        if (order.getEnuu() == null || order.getEnuu() == 0) {
+//            OrderInvoice orderInvoice = order.getOrderInvoice();
+//            if (ObjectUtils.isEmpty(orderInvoice)) {
+//                //虚拟客户
+//                customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_CODE = ?", Customer.class, "C0023");
+//                return customer;
+//            }else {
+//                customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_NAME = ? AND CU_BUSINESSCODE = ?", Customer.class, orderInvoice.getName(), orderInvoice.getIdentityNum());
+//                if (!ObjectUtils.isEmpty(customer)){
+//                    return customer;
+//                }else {
+//                    int id = jdbcTemplate.getInt("SELECT CUSTOMER_SEQ.NEXTVAL FROM DUAL");
+//                    String customerCode = jdbcTemplate.generateCode("Customer!Base", 2);
+//                    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 + "','" + orderInvoice.getName() + "','" + orderInvoice.getName() + "','" + orderInvoice.getIdentityNum() + "',null,'"+customerCode+"','"+orderInvoice.getName()+"','SK004','款到发货','ADMIN','管理员','ADMIN','管理员',"
+//                            + "'普通客户','普通客户','深圳怡海能达','否','快递',null,null,null,null,'ADMIN',sysdate,'ADMIN',sysdate,'已审核','AUDITED')";
+//                    jdbcTemplate.execute(insertCustomerSql);
+//                    customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
+//                    return customer;
+//                }
+//            }
+//        }else {
+//            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);
+//                    customer = jdbcTemplate.queryForBean("SELECT * FROM CUSTOMER WHERE CU_ID = ?", Customer.class, id);
+//                }
+//            }
+//        }
+//        return customer;
+//    }
+//
+//    /**
+//     * 生成采购订单
+//     * @param order
+//     */
+//    private boolean generatePurchase(Order order,String purchaseCode, String saleCode) {
+//        int purchaseId = jdbcTemplate.getInt("select purchase_seq.nextval from dual");
+//        String insertMainSql = "insert into purchase(pu_id,pu_code,pu_date,pu_kind,pu_currency,pu_rate,pu_refcode,pu_vendcode,pu_vendname,pu_receivecode,pu_receivename,pu_vendoruu,"
+//                        + "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','已上传')";
+//        //供应商资料生成逻辑
+//        if (order.getErpEnuu() == null || order.getErpEnuu() == 0) {
+//            return false;
+//        }
+//        Vendor vendor = getVendorByUUOrName(order.getCode(), order.getErpEnuu());
+//        if (null == vendor) {
+//            return false;
+//        }
+//        List<OrderProduct> productList = order.getOrderProduct();
+//        List<String> insertDetailSqlList = new ArrayList<>(productList.size());
+//        for (int i = 0, len = productList.size(); i < len; i++) {
+//            OrderProduct product = productList.get(i);
+//            String prodCode = "";
+//            Integer prodId = null;
+//            //物料生成逻辑
+//            Map<String, Object> productMap = generateProduct(product, order.getCode(), vendor);
+//            if (!CollectionUtils.isEmpty(productMap)) {
+//                prodCode = String.valueOf(productMap.get("prodCode"));
+//                prodId = Integer.valueOf(String.valueOf(productMap.get("prodId")));
+//            }else {
+//                String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                        "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '失败', sysdate,'', '采购订单生成失败,没有物料资料')";
+//                jdbcTemplate.execute(logOrderSql);
+//                return false;
+//            }
+//            String insertDetailSql = "insert into PurchaseDetail(pd_id,pd_puid,pd_detno,pd_code,pd_prodcode,pd_prodid,pd_qty,pd_price,pd_rate,pd_delivery,pd_invoiceName) "
+//                    + " values(PurchaseDetail_seq.nextval,"+ purchaseId +","+ (i+1) +",'"+ purchaseCode +"','"+ prodCode +"',"+prodId+",'"+ product.getAmount() +"','"+ product.getUnitPrice() +"','13',sysdate+"+product.getMaxDelivery()+",'"+product.getInvoiceName()+"')";
+//            insertDetailSqlList.add(insertDetailSql);
+//        }
+//
+//        jdbcTemplate.execute(insertMainSql, purchaseId, purchaseCode, saleCode, vendor.getVe_code(), vendor.getVe_name(), vendor.getVe_apvendcode(), vendor.getVe_apvendname(), vendor.getVe_uu(),
+//                vendor.getVe_paymentcode(), vendor.getVe_payment(), order.getOrderDeliveryAddr().getDeliveryAddress(), order.getCode());
+//        jdbcTemplate.batchExecute(insertDetailSqlList);
+//        String sendStatus = jdbcTemplate.getString("SELECT PU_SENDSTATUS FROM PURCHASE WHERE PU_ID = ?", purchaseId);
+//        LOGGER.info("生成的采购订单id={},上传状态={}", purchaseId, sendStatus);
+//        jdbcTemplate.execute("UPDATE PURCHASE SET PU_SENDSTATUS = '已上传' WHERE PU_ID = ?", purchaseId);
+//        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '成功', sysdate,'" + saleCode + "', '采购订单生成成功')";
+//        jdbcTemplate.execute(logOrderSql);
+//        return true;
+//    }
+//
+//    /**
+//     * 生成物料资料
+//     * @param product
+//     * @param orderCode
+//     * @param vendor
+//     * @return
+//     */
+//    private Map<String, Object> generateProduct(OrderProduct product, String orderCode, Vendor vendor){
+//        Map<String, Object> productMap = new HashMap<>(2);
+//        productMap = jdbcTemplate.queryForMap("SELECT PV_PRODCODE AS \"prodCode\",PV_PRODID AS \"prodId\" FROM PRODUCTVENDOR WHERE PV_VENDPRODCODE = ? AND PV_VENDCODE = ?", product.getMaterialCode(), vendor.getVe_code());
+//        if (!CollectionUtils.isEmpty(productMap)) {
+//            return productMap;
+//        }else {
+//            int count = jdbcTemplate.getInt("SELECT COUNT(*) FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
+//            if (count > 1) {
+//                //不生成订单并生成日志
+//                String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
+//                        + "VALUES(LOGORDER_SEQ.NEXTVAL,'"  + orderCode + "', '失败', SYSDATE, null, '根据平台订单物料的型号+品牌未在物料资料找到唯一对照关系')";
+//                jdbcTemplate.execute(logOrderSql);
+//                return null;
+//            }else if (count == 1) {
+//                //返回物料信息
+//                productMap = jdbcTemplate.queryForMap("SELECT PR_CODE AS \"prodCode\",PR_ID as \"prodId\" FROM PRODUCT WHERE PR_ORISPECCODE = ? AND PR_BRAND = ?", product.getModel(), product.getBrand());
+//                //生成供应商物料对照关系
+//                String insertProductVendorSql = "insert into productVendor(pv_id,pv_prodid,pv_detno,pv_vendid,pv_vendcode,pv_vendprodcode,pv_vendprodspec,pv_vendprodunit,pv_vendname,pv_prodcode,pv_zxbzs) "
+//                        + "values(productVendor_seq.nextval, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?)";
+//                jdbcTemplate.execute(insertProductVendorSql, productMap.get("prodId"), vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), productMap.get("prodCode"), product.getMpq());
+//            }else if (count == 0) {
+//                String code = "";
+//                if (StringUtils.isEmpty(product.getMaterialCode())) {
+//                    String logOrderSql = "INSERT INTO LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK) "
+//                            + "VALUES(LOGORDER_SEQ.NEXTVAL,'"  + orderCode + "', '失败', SYSDATE, null, '从平台获取到的产品信息uas物料编号为空')";
+//                    jdbcTemplate.execute(logOrderSql);
+//                    return null;
+//                }else {
+//                    code = "YS" + product.getMaterialCode();
+//                }
+//                int id = jdbcTemplate.getInt("SELECT PRODUCT_SEQ.NEXTVAL FROM DUAL");
+//                //生成物料资料
+//                String insertProductSql = "INSERT INTO PRODUCT(PR_ID,PR_CODE,PR_DETAIL,PR_SPEC,PR_UNIT,PR_ORISPECCODE,PR_BRAND,pr_taxcode,pr_manutype,pr_dhzc,PR_SUPPLYTYPE,PR_ZXBZS,PR_ZXDHL,PR_ACCEPTMETHOD,"
+//                                        + "PR_RECORDMAN,PR_DOCDATE,PR_AUDITMAN,PR_AUDITDATE,PR_STATUS,PR_STATUSCODE,PR_REMARK_PURCHASE) VALUES(?,?,?,?,?,?,?,?,'PURCHASE','MRP','PUSH',?,?,'不检验','ADMIN',SYSDATE,'ADMIN',SYSDATE,'已审核','AUDITED',?)";
+//                jdbcTemplate.execute(insertProductSql, id, code, product.getModel(), product.getSpec(), product.getUnit(), product.getModel(), product.getBrand(),product.getInvoiceModel() , product.getMpq(), product.getMoq(), product.getInvoiceName());
+//                //生成供应商物料对照关系
+//                jdbcTemplate.execute("insert into productVendor(pv_id,pv_prodid,pv_detno,pv_vendid,pv_vendcode,pv_vendprodcode,pv_vendprodspec,pv_vendprodunit,pv_vendname,pv_prodcode,pv_zxbzs) "
+//                        + "values(productVendor_seq.nextval, ?, 1, ?, ?, ?, ?, ?, ?, ?, ?)", id, vendor.getVe_id(), vendor.getVe_code(), product.getMaterialCode(), product.getSpec(), product.getUnit(), vendor.getVe_name(), code, product.getMpq());
+//                productMap = new HashMap<>(2);
+//                productMap.put("prodCode", code);
+//                productMap.put("prodId", id);
+//            }
+//        }
+//        return productMap;
+//    }
+//
+//    /**
+//     * 获取供应商资料
+//     * @param enUU
+//     */
+//    private Vendor getVendorByUUOrName(String orderCode, Integer enUU){
+//        // 收到的供应商UU为优软商城时,默认转为怡海能达
+//        if (enUU == 10042875) {
+//            Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_code = 'YT4604'", Vendor.class);
+//            return vendor;
+//        }
+//        Vendor vendor = jdbcTemplate.queryForBean("select * from vendor where ve_uu = ? and rownum = 1", Vendor.class, enUU);
+//        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;
+//        }
+//    }
+//
+//    /**
+//     * 取销售订单数据
+//     * @param requestURL
+//     * @param vendUU
+//     * @param updateTime
+//     * @param pageSize
+//     * @param pageNumber
+//     * @return
+//     * @throws NoSuchAlgorithmException
+//     * @throws InvalidKeyException
+//     * @throws UnsupportedEncodingException
+//     */
+//    private OrdersInfo getOrdersByUU(String requestURL, String vendUU, String vendAccessSecret, Long updateTime, int pageSize, int pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+//        String paramStr = "secretId=" + vendUU + "&"+ "materialCode=" + "" + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
+//        //进行签名
+//        String signatureValue = OpenApiSignUtil.sign(paramStr,vendAccessSecret);
+//        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
+//        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
+//        paramStr += "&" + signatureKV;
+//        requestURL = requestURL + paramStr;
+//
+//        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
+//        uriTemplateHandler.setStrictEncoding(true);
+//
+//        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
+//        restTemp.setUriTemplateHandler(uriTemplateHandler);
+//        String result = restTemp.getForObject(requestURL, String.class);
+//        OrdersInfo ordersInfo = JSON.parseObject(result, OrdersInfo.class);
+//        return ordersInfo;
+//    }
+//
+//
+//    @TaskMapping(title = "生成客户资料", fixedDelay = 60000)
+//    public void downloadCustomer() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+////        Master master = ContextHolder.getMaster();
+////        if ("test".equalsIgnoreCase(master.getEnv())) {
+////            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
+////        }
+//        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);
+//                                LOGGER.info("生成客户资料,code={},id={}", customerCode, id);
+//                            }
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//    }
 
 }

+ 258 - 258
src/main/java/com/uas/erp/schedular/mall/task/ProductTask.java

@@ -287,268 +287,268 @@ public class ProductTask extends AbstractTask {
      * 每天定时计算库存,并按照商城提供的物料清单将对应的库存数据递给商城,商城再去更新对应的产品库存
      * 默认每天3:00触发
      */
-    @TaskMapping(title = "库存同步", cron = "0 0 3 * * ?")
-    public void getMallProductToErpProduct() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-        Master master = ContextHolder.getMaster();
-        if ("test".equalsIgnoreCase(master.getEnv())) {
-            BASEPATH_PRODUCT = "https://mallproductrest.uuzcc.cn";
-            SECRETUU = String.valueOf(master.getMa_uu());
-            SECRETKEY = master.getMa_accesssecret();
-        }
-        //查询中间表 库存取整
-        List<Stock> stock = jdbcTemplate.queryForBeanList("select TSS_PRODCODE,round(tss_amount,0) tss_amount, TSS_DATE ,pr_zxdhl moq,pr_zxbzs mpq,getsaleprice_hkd(pr_code) price,pr_remark_sale invoiceModel,(case nvl(pr_remark_purchase,' ') when ' ' then pr_detail else pr_remark_purchase end) invoiceName" +
-                " FROM TT_SHOP_STOCK LEFT JOIN PRODUCT ON TSS_PRODCODE=pr_code",Stock.class);
-
-        if (!CollectionUtils.isEmpty(stock)) {
-            // 拿到商城物料总条数
-            String url = BASEPATH_PRODUCT + "/openapi/product/page/get?";
-            Integer pageSize = 10;
-            Integer pageNumber = 1;
-            PagingQuery paging = getProductList(url,pageSize,pageNumber);
-
-            if(paging.getRespHeader() != null){
-                if(paging.getRespHeader().getCode() > 0){
-                    LOGGER.error("签名错误, Msg={}",paging.getRespHeader().getMsg());
-                    return;
-                }
-            }
-            Integer totalCount = paging.getPagingInfo().getTotalCount();
-
-            // 取处所有物料数据
-            PagingQuery pagingQuery = getProductList(url,totalCount,1);
-
-
-            // 取交集
-            List<ProductUpdate> productUpdate1 = new ArrayList<>();
-            List<ProductUpdate> productUpdate2 = new ArrayList<>();
-            for (int i = 0, len = stock.size(); i < len; i += 1) {
-                productUpdate1.add(new ProductUpdate(stock.get(i).getTss_prodcode(),stock.get(i).getTss_amount(),stock.get(i).getMpq(),stock.get(i).getMoq(),stock.get(i).getInvoiceModel(),stock.get(i).getInvoiceName(),stock.get(i).getPrice()));
-            }
-            List<Product> productList = pagingQuery.getProduct();
-            for (int i = 0, len = productList.size(); i < len; i += 1) {
-                productUpdate2.add(new ProductUpdate(productList.get(i).getMaterialCode(), 0));
-            }
-
-            productUpdate1.retainAll(productUpdate2);
-            Integer count = Double.valueOf(Math.ceil(productUpdate1.size()/50.0)).intValue();
-            LOGGER.info("库存同步,条数={}, 同步次数={}", productUpdate1.size(), count);
-            for (int i = 0; i < count; i++) {
-                List<ProductUpdate> data = null;
-                if (i == (count - 1)) {
-                    data = new ArrayList<>(productUpdate1.subList(i * 50, productUpdate1.size()));
-                }else {
-                    data = new ArrayList<>(productUpdate1.subList(i * 50, (i + 1) * 50));
-                }
-                JSONObject json = new JSONObject();
-                json.put("secretId",SECRETUU);
-                json.put("signature", "");
-                json.put("productUpdate", data);
-                String signatureValues = OpenApiSignUtil.sign(JSON.toJSONString(json), SECRETKEY);
-                json.put("signature",signatureValues);
-                /* 设置restTemplate超时时间 */
-                HttpsClientRequestFactory factory = new HttpsClientRequestFactory();
-                factory.setConnectTimeout(6000);
-                factory.setReadTimeout(180000);
-                RestTemplate restTemp = new RestTemplate(factory);
-                HttpHeaders headers = new HttpHeaders();
-                MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-                headers.setContentType(type);
-                HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(),  headers);
-                LOGGER.info("第【{}】次同步,发送数据为{}", i, json.toJSONString());
-                try {
-                    restTemp.postForObject(BASEPATH_PRODUCT + "/openapi/product/batch/update", requestEntity, String.class);
-                } catch (RestClientException e) {
-                    continue;
-                }
-            }
-        }
-    }
-
-    private PagingQuery getProductList(String requestURL, Integer pageSize, Integer pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-        String paramStr = "secretId=" + SECRETUU + "&"+ "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
-        //进行签名
-        String signatureValue = OpenApiSignUtil.sign(paramStr,SECRETKEY);
-        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
-        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
-        paramStr += "&" + signatureKV;
-        requestURL = requestURL + paramStr;
-
-        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
-        uriTemplateHandler.setStrictEncoding(true);
-
-        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
-        restTemp.setUriTemplateHandler(uriTemplateHandler);
-
-        PagingQuery result = restTemp.getForObject(requestURL, PagingQuery.class);
-
-        return result;
-
-    }
+//    @TaskMapping(title = "库存同步", cron = "0 0 3 * * ?")
+//    public void getMallProductToErpProduct() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+//        Master master = ContextHolder.getMaster();
+//        if ("test".equalsIgnoreCase(master.getEnv())) {
+//            BASEPATH_PRODUCT = "https://mallproductrest.uuzcc.cn";
+//            SECRETUU = String.valueOf(master.getMa_uu());
+//            SECRETKEY = master.getMa_accesssecret();
+//        }
+//        //查询中间表 库存取整
+//        List<Stock> stock = jdbcTemplate.queryForBeanList("select TSS_PRODCODE,round(tss_amount,0) tss_amount, TSS_DATE ,pr_zxdhl moq,pr_zxbzs mpq,getsaleprice_hkd(pr_code) price,pr_remark_sale invoiceModel,(case nvl(pr_remark_purchase,' ') when ' ' then pr_detail else pr_remark_purchase end) invoiceName" +
+//                " FROM TT_SHOP_STOCK LEFT JOIN PRODUCT ON TSS_PRODCODE=pr_code",Stock.class);
+//
+//        if (!CollectionUtils.isEmpty(stock)) {
+//            // 拿到商城物料总条数
+//            String url = BASEPATH_PRODUCT + "/openapi/product/page/get?";
+//            Integer pageSize = 10;
+//            Integer pageNumber = 1;
+//            PagingQuery paging = getProductList(url,pageSize,pageNumber);
+//
+//            if(paging.getRespHeader() != null){
+//                if(paging.getRespHeader().getCode() > 0){
+//                    LOGGER.error("签名错误, Msg={}",paging.getRespHeader().getMsg());
+//                    return;
+//                }
+//            }
+//            Integer totalCount = paging.getPagingInfo().getTotalCount();
+//
+//            // 取处所有物料数据
+//            PagingQuery pagingQuery = getProductList(url,totalCount,1);
+//
+//
+//            // 取交集
+//            List<ProductUpdate> productUpdate1 = new ArrayList<>();
+//            List<ProductUpdate> productUpdate2 = new ArrayList<>();
+//            for (int i = 0, len = stock.size(); i < len; i += 1) {
+//                productUpdate1.add(new ProductUpdate(stock.get(i).getTss_prodcode(),stock.get(i).getTss_amount(),stock.get(i).getMpq(),stock.get(i).getMoq(),stock.get(i).getInvoiceModel(),stock.get(i).getInvoiceName(),stock.get(i).getPrice()));
+//            }
+//            List<Product> productList = pagingQuery.getProduct();
+//            for (int i = 0, len = productList.size(); i < len; i += 1) {
+//                productUpdate2.add(new ProductUpdate(productList.get(i).getMaterialCode(), 0));
+//            }
+//
+//            productUpdate1.retainAll(productUpdate2);
+//            Integer count = Double.valueOf(Math.ceil(productUpdate1.size()/50.0)).intValue();
+//            LOGGER.info("库存同步,条数={}, 同步次数={}", productUpdate1.size(), count);
+//            for (int i = 0; i < count; i++) {
+//                List<ProductUpdate> data = null;
+//                if (i == (count - 1)) {
+//                    data = new ArrayList<>(productUpdate1.subList(i * 50, productUpdate1.size()));
+//                }else {
+//                    data = new ArrayList<>(productUpdate1.subList(i * 50, (i + 1) * 50));
+//                }
+//                JSONObject json = new JSONObject();
+//                json.put("secretId",SECRETUU);
+//                json.put("signature", "");
+//                json.put("productUpdate", data);
+//                String signatureValues = OpenApiSignUtil.sign(JSON.toJSONString(json), SECRETKEY);
+//                json.put("signature",signatureValues);
+//                /* 设置restTemplate超时时间 */
+//                HttpsClientRequestFactory factory = new HttpsClientRequestFactory();
+//                factory.setConnectTimeout(6000);
+//                factory.setReadTimeout(180000);
+//                RestTemplate restTemp = new RestTemplate(factory);
+//                HttpHeaders headers = new HttpHeaders();
+//                MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//                headers.setContentType(type);
+//                HttpEntity<String> requestEntity = new HttpEntity<String>(json.toJSONString(),  headers);
+//                LOGGER.info("第【{}】次同步,发送数据为{}", i, json.toJSONString());
+//                try {
+//                    restTemp.postForObject(BASEPATH_PRODUCT + "/openapi/product/batch/update", requestEntity, String.class);
+//                } catch (RestClientException e) {
+//                    continue;
+//                }
+//            }
+//        }
+//    }
+//
+//    private PagingQuery getProductList(String requestURL, Integer pageSize, Integer pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+//        String paramStr = "secretId=" + SECRETUU + "&"+ "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
+//        //进行签名
+//        String signatureValue = OpenApiSignUtil.sign(paramStr,SECRETKEY);
+//        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
+//        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
+//        paramStr += "&" + signatureKV;
+//        requestURL = requestURL + paramStr;
+//
+//        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
+//        uriTemplateHandler.setStrictEncoding(true);
+//
+//        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
+//        restTemp.setUriTemplateHandler(uriTemplateHandler);
+//
+//        PagingQuery result = restTemp.getForObject(requestURL, PagingQuery.class);
+//
+//        return result;
+//
+//    }
 
     /**
      * 客户在商城店铺对怡海能达下订单,订单信息直接同步至怡海能达系统
      * 默认每天2:00触发
      */
-    @TaskMapping(title = "订单同步", cron = "0 0 2 * * ?")
-    public void getOrdersByPage() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-        Master master = ContextHolder.getMaster();
-        if ("test".equalsIgnoreCase(master.getEnv())) {
-            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
-            SECRETUU = String.valueOf(master.getMa_uu());
-            SECRETKEY = master.getMa_accesssecret();
-        }
-        String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
-        String materialCod = ""; // 物料编号
-        Long updateTime = new Date().getTime()-24*60*60*1000; // 数据修改时间 时间戳
-        Integer pageSize = 10;  // 每页条数
-        Integer pageNumber = 1; // 当前页码
-        String status = "已审核";
-        String statusCode = "AUDITED";
-
-        int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallSaleOrder' and caller = 'mallOrder!YHND'"));
-        if(0 == data){
-            updateTime = 0L;
-        }
-
-        // 查询出数据总条数
-        Integer totalCount = gstOrderList(url,materialCod,updateTime,pageSize,pageNumber).getPagingInfo().getTotalCount();
-
-        // 按页数拿数据
-        OrdersInfo ordersInfo = null;
-        List<Order> orders = null;
-        Integer page = Double.valueOf(Math.ceil(totalCount/pageSize.doubleValue())).intValue();
-        if(totalCount/pageSize < 1){
-            page = 1;
-        }
-        for(int i = 0 ; i < page ; i ++ ){
-            ordersInfo = gstOrderList(url,materialCod,updateTime,pageSize,i+1);
-            orders = ordersInfo.getOrder();
-
-            if(StringUtils.isEmpty(orders)) {
-                continue ;
-            }
-
-            for(int j = 0 ; j < orders.size() ; j ++){
-
-                Order order = orders.get(j);
-                order.getEnuu();
-
-                int poCode = jdbcTemplate.getInt("SELECT COUNT(*) FROM MALL$SALE WHERE SA_POCODE = ?", order.getCode());
-                if(poCode > 0){
-                    continue;
-                }
-
-                //初始状态、待支付、代收款、已取消状态订单不同步
-                if (order.getStatus() == 141000 || order.getStatus() == 141010 || order.getStatus() == 141015 || order.getStatus() == 141020 || order.getStatus() == 141095){
-                    continue;
-                }
-                String mallStatus = "";
-                if (order.getStatus() == 141010 || order.getStatus() == 141020){
-                    mallStatus = "待支付";
-                }else if (order.getStatus() == 141030){
-                    mallStatus = "已支付";
-                }else if (order.getStatus() == 141040) {
-                    mallStatus = "已发货";
-                }else if(order.getStatus() == 141091) {
-                    mallStatus = "交易成功";
-                }
-
-                if (order.getStatus().equals(141095)) {
-                    status = "已结案";
-                    statusCode = "FINISH";
-                }else {
-                    status = "已审核";
-                    statusCode = "AUDITED";
-                }
-
-                // 取销售id 和销售编号
-                int saleId = jdbcTemplate.getInt("select sale_seq.nextval from sale");
-                String code = jdbcTemplate.generateCode("Sale",2);
-
-                Map<String, Object> payment = jdbcTemplate.queryForMap("select PA_CODE,PA_NAME from customer  left join payments on CU_PAYMENTID = pa_id where cu_code = 'C18060102'");
-                Object pa_code  = "";
-                Object pa_name = "";
-                if(!ObjectUtils.isEmpty(payment)){
-                    pa_code = payment.get("PA_CODE");
-                    pa_name = payment.get("PA_NAME");
-                }
-
-                LoggingOrder loggingOrder = new LoggingOrder();
-
-                List<OrderProduct> orderProductList = order.getOrderProduct();
-                List<String> detailList = new ArrayList<>();
-                int detno = 1;
-                for(int n = 0, len = orderProductList.size() ; n < len ; n ++){
-                    OrderProduct orderProduct = orderProductList.get(n);
-
-                    String prodSql = "select * from product where pr_code = '" + orderProduct.getMaterialCode() + "'";
-                    com.uas.erp.schedular.publicproduct.domain.Prod prod = jdbcTemplate.queryForBean(prodSql, com.uas.erp.schedular.publicproduct.domain.Prod.class);
-                    if (!ObjectUtils.isEmpty(prod)) {
-                        String DetailSql = "insert into mall$saleDetail( sd_id , sd_said , sd_code, sd_detno, SD_PRODID , SD_PRODCODE , SD_QTY , SD_PRICE , SD_TAXRATE , SD_DELIVERY, sd_status, sd_statuscode) " +
-                                "values(saleDetail_seq.nextval, " + saleId + ", '" + code + "'," + (detno++) + "," + prod.getPr_id() + ", '" + prod.getPr_code() + "', " + orderProduct.getAmount() +", " +  orderProduct.getUnitPrice() +", " +  "13" +", " +  "sysdate + " + orderProduct.getMaxDelivery() + ",'已审核','AUDITED')";
-                        detailList.add(DetailSql);
-                    }
-
-                }
-
-                String sql = "insert into mall$SALE (SA_ID , SA_CODE , SA_DATE , SA_KIND , SA_CURRENCY , SA_RATE , SA_CUSTCODE , SA_CUSTNAME , sa_shcustcode, sa_shcustname, SA_APCUSTCODE , SA_APCUSTNAME ," +
-                        "SA_PAYMENTSCODE , SA_PAYMENTS , SA_SELLERCODE, SA_SELLER , SA_DEPARTMENTCODE , SA_DEPARTMENTNAME , SA_TOPLACE , SA_POCODE , SA_STATUS , SA_STATUSCODE, SA_RECORDER , SA_RECORDDATE ," +
-                        "SA_AUDITMAN , SA_AUDITDATE , SA_UPDATEMAN , SA_UPDATEDATE , SA_TOTAL, sa_need1 , sa_need2, SA_MALLSTATUS) values ('" + saleId + "','"+ code + "',sysdate,'商城订单','RMB','1','C18060102','深圳优软商城科技有限公司', 'C18060102','深圳优软商城科技有限公司', " +
-                        "'C18060102','深圳优软商城科技有限公司','" + pa_code +"','" + pa_name +"','SZ0017','周连军','1202', " +
-                        "'研发二部','"+ order.getOrderDeliveryAddr().getDeliveryAddress() + "','" + order.getCode() + "','" + status + "','" + statusCode + "','ADMIN',sysdate,'ADMIN',sysdate, " +
-                        "'ADMIN',sysdate,0,'" + order.getBuyerName() +"','" + order.getBuyerMobile() + "','"+ mallStatus +"')";
-                if (poCode > 0) {
-                    if ("已结案".equals(status)) {
-                        jdbcTemplate.execute("UPDATE mall$SALE SET SA_STATUS = ?, SA_STATUSCODE = ? WHERE SA_POCODE = ?", status, statusCode, order.getCode());
-                    }
-                }else {
-                    if (detailList.size() > 0) {
-                        jdbcTemplate.execute(sql);
-                        jdbcTemplate.batchExecute(detailList);
-                        jdbcTemplate.execute("UPDATE mall$SALE SET SA_TOTAL = (select SUM(SD_PRICE*SD_QTY) FROM SALEDETAIL where sd_said = ?) WHERE SA_ID = ?", saleId, saleId);
-                        if (0 == data) {
-                            jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallSaleOrder' and caller = 'mallOrder!YHND'");
-                        }
-                        loggingOrder.setStatus("成功");
-                        loggingOrder.setOrderNumber(code);
-                        loggingOrder.setRemark("销售订单生成成功");
-                        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
-                        jdbcTemplate.execute(logOrderSql);
-                    }else {
-                        loggingOrder.setStatus("失败");
-                        loggingOrder.setOrderNumber("");
-                        loggingOrder.setRemark("未找到匹配的物料资料");
-                        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
-                                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
-                        jdbcTemplate.execute(logOrderSql);
-                    }
-                }
-
-            }
-
-        }
-    }
-
-
-    private OrdersInfo gstOrderList(String requestURL, String materialCode, Long updateTime, Integer pageSize, Integer pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
-        String paramStr = "secretId=" + SECRETUU + "&"+ "materialCode=" + materialCode + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
-        //进行签名
-        String signatureValue = OpenApiSignUtil.sign(paramStr,SECRETKEY);
-        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
-        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
-        paramStr += "&" + signatureKV;
-        requestURL = requestURL + paramStr;
-
-        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
-        uriTemplateHandler.setStrictEncoding(true);
-
-        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
-        restTemp.setUriTemplateHandler(uriTemplateHandler);
-        String result = restTemp.getForObject(requestURL, String.class);
-        //System.out.println(result);
-        OrdersInfo ordersInfo = JSON.parseObject(result, OrdersInfo.class);
-        return ordersInfo;
-    }
+//    @TaskMapping(title = "订单同步", cron = "0 0 2 * * ?")
+//    public void getOrdersByPage() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+//        Master master = ContextHolder.getMaster();
+//        if ("test".equalsIgnoreCase(master.getEnv())) {
+//            BASEPATH_TRADE = "https://malltraderest.uuzcc.cn";
+//            SECRETUU = String.valueOf(master.getMa_uu());
+//            SECRETKEY = master.getMa_accesssecret();
+//        }
+//        String url = BASEPATH_TRADE + "/openapi/trade/order/page/get?";
+//        String materialCod = ""; // 物料编号
+//        Long updateTime = new Date().getTime()-24*60*60*1000; // 数据修改时间 时间戳
+//        Integer pageSize = 10;  // 每页条数
+//        Integer pageNumber = 1; // 当前页码
+//        String status = "已审核";
+//        String statusCode = "AUDITED";
+//
+//        int data = Integer.parseInt(jdbcTemplate.getString("select data from CONFIGS where code = 'mallSaleOrder' and caller = 'mallOrder!YHND'"));
+//        if(0 == data){
+//            updateTime = 0L;
+//        }
+//
+//        // 查询出数据总条数
+//        Integer totalCount = gstOrderList(url,materialCod,updateTime,pageSize,pageNumber).getPagingInfo().getTotalCount();
+//
+//        // 按页数拿数据
+//        OrdersInfo ordersInfo = null;
+//        List<Order> orders = null;
+//        Integer page = Double.valueOf(Math.ceil(totalCount/pageSize.doubleValue())).intValue();
+//        if(totalCount/pageSize < 1){
+//            page = 1;
+//        }
+//        for(int i = 0 ; i < page ; i ++ ){
+//            ordersInfo = gstOrderList(url,materialCod,updateTime,pageSize,i+1);
+//            orders = ordersInfo.getOrder();
+//
+//            if(StringUtils.isEmpty(orders)) {
+//                continue ;
+//            }
+//
+//            for(int j = 0 ; j < orders.size() ; j ++){
+//
+//                Order order = orders.get(j);
+//                order.getEnuu();
+//
+//                int poCode = jdbcTemplate.getInt("SELECT COUNT(*) FROM MALL$SALE WHERE SA_POCODE = ?", order.getCode());
+//                if(poCode > 0){
+//                    continue;
+//                }
+//
+//                //初始状态、待支付、代收款、已取消状态订单不同步
+//                if (order.getStatus() == 141000 || order.getStatus() == 141010 || order.getStatus() == 141015 || order.getStatus() == 141020 || order.getStatus() == 141095){
+//                    continue;
+//                }
+//                String mallStatus = "";
+//                if (order.getStatus() == 141010 || order.getStatus() == 141020){
+//                    mallStatus = "待支付";
+//                }else if (order.getStatus() == 141030){
+//                    mallStatus = "已支付";
+//                }else if (order.getStatus() == 141040) {
+//                    mallStatus = "已发货";
+//                }else if(order.getStatus() == 141091) {
+//                    mallStatus = "交易成功";
+//                }
+//
+//                if (order.getStatus().equals(141095)) {
+//                    status = "已结案";
+//                    statusCode = "FINISH";
+//                }else {
+//                    status = "已审核";
+//                    statusCode = "AUDITED";
+//                }
+//
+//                // 取销售id 和销售编号
+//                int saleId = jdbcTemplate.getInt("select sale_seq.nextval from sale");
+//                String code = jdbcTemplate.generateCode("Sale",2);
+//
+//                Map<String, Object> payment = jdbcTemplate.queryForMap("select PA_CODE,PA_NAME from customer  left join payments on CU_PAYMENTID = pa_id where cu_code = 'C18060102'");
+//                Object pa_code  = "";
+//                Object pa_name = "";
+//                if(!ObjectUtils.isEmpty(payment)){
+//                    pa_code = payment.get("PA_CODE");
+//                    pa_name = payment.get("PA_NAME");
+//                }
+//
+//                LoggingOrder loggingOrder = new LoggingOrder();
+//
+//                List<OrderProduct> orderProductList = order.getOrderProduct();
+//                List<String> detailList = new ArrayList<>();
+//                int detno = 1;
+//                for(int n = 0, len = orderProductList.size() ; n < len ; n ++){
+//                    OrderProduct orderProduct = orderProductList.get(n);
+//
+//                    String prodSql = "select * from product where pr_code = '" + orderProduct.getMaterialCode() + "'";
+//                    com.uas.erp.schedular.publicproduct.domain.Prod prod = jdbcTemplate.queryForBean(prodSql, com.uas.erp.schedular.publicproduct.domain.Prod.class);
+//                    if (!ObjectUtils.isEmpty(prod)) {
+//                        String DetailSql = "insert into mall$saleDetail( sd_id , sd_said , sd_code, sd_detno, SD_PRODID , SD_PRODCODE , SD_QTY , SD_PRICE , SD_TAXRATE , SD_DELIVERY, sd_status, sd_statuscode) " +
+//                                "values(saleDetail_seq.nextval, " + saleId + ", '" + code + "'," + (detno++) + "," + prod.getPr_id() + ", '" + prod.getPr_code() + "', " + orderProduct.getAmount() +", " +  orderProduct.getUnitPrice() +", " +  "13" +", " +  "sysdate + " + orderProduct.getMaxDelivery() + ",'已审核','AUDITED')";
+//                        detailList.add(DetailSql);
+//                    }
+//
+//                }
+//
+//                String sql = "insert into mall$SALE (SA_ID , SA_CODE , SA_DATE , SA_KIND , SA_CURRENCY , SA_RATE , SA_CUSTCODE , SA_CUSTNAME , sa_shcustcode, sa_shcustname, SA_APCUSTCODE , SA_APCUSTNAME ," +
+//                        "SA_PAYMENTSCODE , SA_PAYMENTS , SA_SELLERCODE, SA_SELLER , SA_DEPARTMENTCODE , SA_DEPARTMENTNAME , SA_TOPLACE , SA_POCODE , SA_STATUS , SA_STATUSCODE, SA_RECORDER , SA_RECORDDATE ," +
+//                        "SA_AUDITMAN , SA_AUDITDATE , SA_UPDATEMAN , SA_UPDATEDATE , SA_TOTAL, sa_need1 , sa_need2, SA_MALLSTATUS) values ('" + saleId + "','"+ code + "',sysdate,'商城订单','RMB','1','C18060102','深圳优软商城科技有限公司', 'C18060102','深圳优软商城科技有限公司', " +
+//                        "'C18060102','深圳优软商城科技有限公司','" + pa_code +"','" + pa_name +"','SZ0017','周连军','1202', " +
+//                        "'研发二部','"+ order.getOrderDeliveryAddr().getDeliveryAddress() + "','" + order.getCode() + "','" + status + "','" + statusCode + "','ADMIN',sysdate,'ADMIN',sysdate, " +
+//                        "'ADMIN',sysdate,0,'" + order.getBuyerName() +"','" + order.getBuyerMobile() + "','"+ mallStatus +"')";
+//                if (poCode > 0) {
+//                    if ("已结案".equals(status)) {
+//                        jdbcTemplate.execute("UPDATE mall$SALE SET SA_STATUS = ?, SA_STATUSCODE = ? WHERE SA_POCODE = ?", status, statusCode, order.getCode());
+//                    }
+//                }else {
+//                    if (detailList.size() > 0) {
+//                        jdbcTemplate.execute(sql);
+//                        jdbcTemplate.batchExecute(detailList);
+//                        jdbcTemplate.execute("UPDATE mall$SALE SET SA_TOTAL = (select SUM(SD_PRICE*SD_QTY) FROM SALEDETAIL where sd_said = ?) WHERE SA_ID = ?", saleId, saleId);
+//                        if (0 == data) {
+//                            jdbcTemplate.execute("UPDATE CONFIGS SET data = 1 WHERE code = 'mallSaleOrder' and caller = 'mallOrder!YHND'");
+//                        }
+//                        loggingOrder.setStatus("成功");
+//                        loggingOrder.setOrderNumber(code);
+//                        loggingOrder.setRemark("销售订单生成成功");
+//                        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
+//                        jdbcTemplate.execute(logOrderSql);
+//                    }else {
+//                        loggingOrder.setStatus("失败");
+//                        loggingOrder.setOrderNumber("");
+//                        loggingOrder.setRemark("未找到匹配的物料资料");
+//                        String logOrderSql = "insert into LOGORDER(LO_ID, ORDERCODE , STATUS , SALESTIME , ORDERNUMBER , REMARK)" +
+//                                "values(LOGORDER_SEQ.NEXTVAL,'" + order.getCode() + "', '" + loggingOrder.getStatus() + "', sysdate,'" + loggingOrder.getOrderNumber() + "', '" + loggingOrder.getRemark() + "')";
+//                        jdbcTemplate.execute(logOrderSql);
+//                    }
+//                }
+//
+//            }
+//
+//        }
+//    }
+//
+//
+//    private OrdersInfo gstOrderList(String requestURL, String materialCode, Long updateTime, Integer pageSize, Integer pageNumber) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+//        String paramStr = "secretId=" + SECRETUU + "&"+ "materialCode=" + materialCode + "&" + "updateTime=" + updateTime + "&" + "pageSize=" + pageSize +"&" + "pageNumber=" + pageNumber;
+//        //进行签名
+//        String signatureValue = OpenApiSignUtil.sign(paramStr,SECRETKEY);
+//        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
+//        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
+//        paramStr += "&" + signatureKV;
+//        requestURL = requestURL + paramStr;
+//
+//        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
+//        uriTemplateHandler.setStrictEncoding(true);
+//
+//        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
+//        restTemp.setUriTemplateHandler(uriTemplateHandler);
+//        String result = restTemp.getForObject(requestURL, String.class);
+//        //System.out.println(result);
+//        OrdersInfo ordersInfo = JSON.parseObject(result, OrdersInfo.class);
+//        return ordersInfo;
+//    }
 
 }

+ 34 - 3
src/test/java/com/uas/erp/test/TestProduct.java

@@ -3,6 +3,7 @@ package com.uas.erp.test;
 import com.uas.erp.schedular.UasSchedulingApplication;
 import com.uas.erp.schedular.diymall.task.DiymallApplyTask;
 import com.uas.erp.schedular.entity.Master;
+import com.uas.erp.schedular.mall.task.OrderTask;
 import com.uas.erp.schedular.mall.task.ProductTask;
 import com.uas.erp.schedular.util.ContextHolder;
 import org.junit.Test;
@@ -27,7 +28,7 @@ public class TestProduct {
     private ProductTask productTask;
 
     @Autowired
-    private DiymallApplyTask diymallApplyTask;
+    private OrderTask orderTask;
 
     @Test
     public void testProduct() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
@@ -40,7 +41,7 @@ public class TestProduct {
         master.setMa_name("YHND_SZ");
 
         ContextHolder.setMaster(master);
-        productTask.getMallProductToErpProduct();
+//        productTask.getMallProductToErpProduct();
         System.out.println("success...");
     }
 
@@ -55,7 +56,37 @@ public class TestProduct {
         master.setMa_name("YHND_SZ");
 
         ContextHolder.setMaster(master);
-        productTask.getOrdersByPage();
+//        productTask.getOrdersByPage();
         System.out.println("success...");
     }
+
+    @Test
+    public void testUploadPoststatus() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+
+        Master master = new Master();
+        master.setMa_user("YHND_SZ");
+        master.setMa_uu(10044412L);
+        master.setMa_accesssecret("58177a621f4645398c92e93768002de7");
+        master.setMa_env("prod");
+        master.setMa_name("YHND_SZ");
+
+        ContextHolder.setMaster(master);
+//        orderTask.uploadPoststatus();
+        System.out.println("success...上传出货单过账状态到商城...");
+    }
+
+    @Test
+    public void testDownloadOrder() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
+
+        Master master = new Master();
+        master.setMa_user("USOFT_MALL");
+        master.setMa_uu(10042875L);
+        master.setMa_accesssecret("b8d3184fde5c444f87dc55c123f1a690");
+        master.setMa_env("prod");
+        master.setMa_name("USOFT_MALL");
+
+        ContextHolder.setMaster(master);
+//        orderTask.downloadOrder();
+        System.out.println("success...下载已过账销售订单,生成采购/销售/入库/出货单据...");
+    }
 }