Browse Source

Merge remote-tracking branch 'origin/master' into hotfix-hejq-201808

hejq 7 years ago
parent
commit
6f4fd21954

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

@@ -39,4 +39,14 @@ public interface NotExistOrdersDao extends JpaRepository<NotExistOrders, Long>,
     @Transactional(rollbackOn = SQLException.class)
     @Query("update NotExistOrders set status = 203 where id = :id")
     void updateStatus(@Param("id") Long id);
+
+    /**
+     * 更新下载状态
+     *
+     * @param id id
+     */
+    @Modifying
+    @Transactional(rollbackOn = SQLException.class)
+    @Query("update NotExistOrders set status = 203 where enUU = :enUU and code = :code and type = :type")
+    void updateByEnUUAndCodeAndType(@Param("enUU") Long enUU,@Param("code") String code,@Param("type")String type);
 }

+ 8 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseNoticeDao.java

@@ -171,4 +171,12 @@ public interface PurchaseNoticeDao extends JpaSpecificationExecutor<PurchaseNoti
 	@Query("update PurchaseNotice set status = :status where id = :noticeId")
 	void updateStatus(@Param("noticeId") Long noticeId, @Param("status") short status);
 
+	/**
+	 * 根据日期获取(录入日期)
+	 *
+	 * @param date 录入日期
+	 * @return
+	 */
+	@Query("select p.id from PurchaseNotice p where  p.date >= :date")
+	List<Long> findByDate( @Param("date") Date date);
 }

+ 10 - 0
src/main/java/com/uas/platform/b2b/dao/PurchaseOrderDao.java

@@ -9,6 +9,7 @@ import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import javax.transaction.Transactional;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -95,4 +96,13 @@ public interface PurchaseOrderDao extends JpaSpecificationExecutor<PurchaseOrder
 	@Transactional(rollbackOn = Exception.class)
 	@Query("update PurchaseOrder set status = :status where id = :id")
 	void updatePurchaseStatus(@Param("status") Short status, @Param("id") Long id);
+
+	/**
+	 * 根据日期获取(录入日期)
+	 *
+	 * @param date 录入日期
+	 * @return
+	 */
+	@Query("select p.id from PurchaseOrder p where  p.date >= :fromDate")
+	List<Long> findByDate( @Param("fromDate") Date date);
 }

+ 26 - 2
src/main/java/com/uas/platform/b2b/service/impl/NotExistOrderServiceImpl.java

@@ -10,7 +10,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 长平台不存在的ERP单据信息
@@ -33,7 +36,25 @@ public class NotExistOrderServiceImpl implements NotExistOrderService {
      */
     @Override
     public List<NotExistOrders> findByEnUUAndStatusAndType(Long enUU, Integer status, String type) {
-        return ordersDao.findByEnUUAndStatusAndType(enUU, status, type);
+        List<NotExistOrders> notExistOrders = ordersDao.findByEnUUAndStatusAndType(enUU, status, type);
+        //过滤掉重复的单据
+        List<NotExistOrders> orders = new ArrayList<>();
+        for (NotExistOrders notExistOrder : notExistOrders) {
+            if (CollectionUtils.isEmpty(orders)) {
+                orders.add(notExistOrder);
+            } else {
+                boolean existCode = false;
+                for (NotExistOrders order : orders) {
+                    if (notExistOrder.getCode().equals(order.getCode())) {
+                        existCode = true;
+                    }
+                }
+                if (!existCode) {
+                    orders.add(notExistOrder);
+                }
+            }
+        }
+        return orders;
     }
 
     /**
@@ -45,7 +66,10 @@ public class NotExistOrderServiceImpl implements NotExistOrderService {
     public void updateDownloadStatus(String[] idArray) {
         if (idArray.length > 0) {
             for (String id : idArray) {
-                ordersDao.updateStatus(Long.valueOf(id));
+                //根据enUU、单据code、单据类型更新下载状态
+                NotExistOrders order = ordersDao.findOne(Long.valueOf(id));
+                ordersDao.updateByEnUUAndCodeAndType(order.getEnUU(),order.getCode(),order.getType());
+                //ordersDao.updateStatus(Long.valueOf(id));
             }
         }
     }

+ 65 - 0
src/main/java/com/uas/platform/b2b/task/SendNoticeTask.java

@@ -1,14 +1,24 @@
 package com.uas.platform.b2b.task;
 
 import com.uas.platform.b2b.dao.CommunalLogDao;
+import com.uas.platform.b2b.dao.PurchaseNoticeDao;
+import com.uas.platform.b2b.dao.PurchaseOrderDao;
 import com.uas.platform.b2b.model.CommunalLog;
+import com.uas.platform.core.util.HttpUtil;
+import org.apache.http.client.methods.HttpRequestBase;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
+import java.net.URI;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 每天定时更新发货提醒异常的数据
@@ -24,6 +34,12 @@ public class SendNoticeTask {
     @Autowired
     private CommunalLogDao communalLogDao;
 
+    @Autowired
+    PurchaseNoticeDao purchaseNoticeDao;
+
+    @Autowired
+    PurchaseOrderDao purchaseOrderDao;
+
     /**
      * 时间格式
      */
@@ -60,4 +76,53 @@ public class SendNoticeTask {
         jdbcTemplate.update(sql);
         communalLogDao.save(new CommunalLog("更新发货提醒备料状态", "定时任务自动更新备料数据", "时间: " + sdf.format(new Date()), DEFAULT_ENUU));
     }
+
+    /**
+     * 每天13点、19点、23点定时检测下发货提醒和订单索引
+     */
+    @Scheduled(cron = "0 0 13,19,23 * * ? ")
+    public void checkIndex() throws Exception{
+        Date date = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DATE,-1);
+        date = calendar.getTime();
+        List<Long> idsNotice = purchaseNoticeDao.findByDate(date);
+        calendar.add(Calendar.DATE,-4);
+        date = calendar.getTime();
+        List<Long> idsOrders = purchaseOrderDao.findByDate(date);
+        if (!CollectionUtils.isEmpty(idsNotice)) {
+            checkAndUpateAll("purc$notice",idsNotice);
+        }
+        if (!CollectionUtils.isEmpty(idsOrders)) {
+            checkAndUpateAll("purc$orders",idsOrders);
+        }
+
+    }
+
+    private void checkAndUpateAll(String tableName,List<Long> ids) throws Exception{
+        List<Long> noExistIds = new ArrayList<>();
+        for (Long id :ids) {
+            String searchInfoUrl = "http://10.10.100.179:8081/search/object?tableName=" + tableName + "&id=";
+            HttpUtil.Response response = HttpUtil.sendGetRequest(searchInfoUrl + id, null);
+            if (StringUtils.isEmpty(response.getResponseText())) {
+                noExistIds.add(id);
+            }
+        }
+        if (!CollectionUtils.isEmpty(noExistIds)) {
+            for (Long noExistId : noExistIds) {
+                String searchUpdateUrl ="http://10.10.100.179:8081/index/maintain?tableName=" + tableName + "&methodType=update&dataId=";
+                HttpRequestBase request = new HttpRequestBase() {
+                    @Override
+                    public String getMethod() {
+                        return "GET";
+                    }
+                };
+                request.addHeader("Authorization", "Basic YWRtaW46c2VsZWN0MTExKioq");
+                request.setURI(URI.create(searchUpdateUrl + noExistId));
+                HttpUtil.Response response = HttpUtil.sendHttpUriRequest(request);
+                System.out.println(noExistId + " " + response.getResponseText());
+            }
+        }
+    }
 }

+ 52 - 4
src/test/java/com/uas/platform/b2b/purc/PurchaseNoticeSearchTest.java

@@ -1,33 +1,44 @@
 package com.uas.platform.b2b.purc;
 
+import com.uas.platform.b2b.dao.PurchaseNoticeDao;
+import com.uas.platform.b2b.dao.PurchaseOrderDao;
 import com.uas.platform.core.util.HttpUtil;
 import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.xmlbeans.impl.xb.xsdschema.Public;
+import org.hibernate.annotations.Check;
 import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 public class PurchaseNoticeSearchTest {
 
+    @Autowired
+    PurchaseNoticeDao purchaseNoticeDao;
+
+    @Autowired
+    PurchaseOrderDao purchaseOrderDao;
+
     /**
      * 查出索引没有创建的
      * @throws Exception
      */
     @Test
     public void checkAndUpdate() throws Exception {
-
         List<Long> ids = new ArrayList<>();
-        for (Long i=13824692L;i<=13824692L;i++) {
+        for (Long i=1228329L;i<=1228388L;i++) {
             ids.add(i);
         }
-        List<Long> list = checkAll("purc$orders",ids);
+        List<Long> list = checkAll("purc$notice",ids);
         if (!StringUtils.isEmpty(list)) {
             for (Long id : list) {
-                update("purc$orders",id);
+                update("purc$notice",id);
             }
         }
 
@@ -107,5 +118,42 @@ public class PurchaseNoticeSearchTest {
         update("purc$orders",13824692L);
     }
 
+    public void checkIndex() throws Exception{
+        Date date = new Date();
+        List<Long> idsNotice = purchaseNoticeDao.findByDate(date);
+        List<Long> idsOrders = purchaseOrderDao.findByDate(date);
+        if (!CollectionUtils.isEmpty(idsNotice)) {
+            checkAndUpateAll("purc$notice",idsNotice);
+        }
+        if (!CollectionUtils.isEmpty(idsOrders)) {
+            checkAndUpateAll("purc$orders",idsOrders);
+        }
+
+    }
 
+    private void checkAndUpateAll(String tableName,List<Long> ids) throws Exception{
+        List<Long> noExistIds = new ArrayList<>();
+        for (Long id :ids) {
+            String searchInfoUrl = "http://10.10.100.179:8081/search/object?tableName=" + tableName + "&id=";
+            HttpUtil.Response response = HttpUtil.sendGetRequest(searchInfoUrl + id, null);
+            if (StringUtils.isEmpty(response.getResponseText())) {
+                noExistIds.add(id);
+            }
+        }
+        if (!CollectionUtils.isEmpty(noExistIds)) {
+            for (Long noExistId : noExistIds) {
+                String searchUpdateUrl ="http://10.10.100.179:8081/index/maintain?tableName=" + tableName + "&methodType=update&dataId=";
+                HttpRequestBase request = new HttpRequestBase() {
+                    @Override
+                    public String getMethod() {
+                        return "GET";
+                    }
+                };
+                request.addHeader("Authorization", "Basic YWRtaW46c2VsZWN0MTExKioq");
+                request.setURI(URI.create(searchUpdateUrl + noExistId));
+                HttpUtil.Response response = HttpUtil.sendHttpUriRequest(request);
+                System.out.println(noExistId + " " + response.getResponseText());
+            }
+        }
+    }
 }