|
@@ -2,8 +2,8 @@ package com.uas.platform.b2b.service.impl;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.uas.platform.b2b.constant.StringConstant;
|
|
import com.uas.platform.b2b.constant.StringConstant;
|
|
|
|
|
+import com.uas.platform.b2b.core.util.BoundedExecutor;
|
|
|
import com.uas.platform.b2b.core.util.ContextUtils;
|
|
import com.uas.platform.b2b.core.util.ContextUtils;
|
|
|
-import com.uas.platform.b2b.core.util.ThreadUtils;
|
|
|
|
|
import com.uas.platform.b2b.dao.CommonDao;
|
|
import com.uas.platform.b2b.dao.CommonDao;
|
|
|
import com.uas.platform.b2b.dao.EnterpriseDao;
|
|
import com.uas.platform.b2b.dao.EnterpriseDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApCheckDao;
|
|
import com.uas.platform.b2b.dao.PurchaseApCheckDao;
|
|
@@ -27,7 +27,6 @@ import com.uas.platform.b2b.model.util.ApCheckeAllCountSqls;
|
|
|
import com.uas.platform.b2b.model.util.ApCheckeDoneCountSqls;
|
|
import com.uas.platform.b2b.model.util.ApCheckeDoneCountSqls;
|
|
|
import com.uas.platform.b2b.model.util.ApCheckeTodoCountSqls;
|
|
import com.uas.platform.b2b.model.util.ApCheckeTodoCountSqls;
|
|
|
import com.uas.platform.b2b.publicapi.model.ApCheckAmount;
|
|
import com.uas.platform.b2b.publicapi.model.ApCheckAmount;
|
|
|
-import com.uas.platform.b2b.search.SearchService;
|
|
|
|
|
import com.uas.platform.b2b.service.ErpProdIODetailService;
|
|
import com.uas.platform.b2b.service.ErpProdIODetailService;
|
|
|
import com.uas.platform.b2b.service.OrderRedDotService;
|
|
import com.uas.platform.b2b.service.OrderRedDotService;
|
|
|
import com.uas.platform.b2b.service.PurchaseApCheckService;
|
|
import com.uas.platform.b2b.service.PurchaseApCheckService;
|
|
@@ -41,10 +40,7 @@ import com.uas.platform.core.model.PageParams;
|
|
|
import com.uas.platform.core.model.Status;
|
|
import com.uas.platform.core.model.Status;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.ps.core.util.StringUtils;
|
|
import com.uas.ps.core.util.StringUtils;
|
|
|
-import com.uas.search.b2b.model.MultiValue;
|
|
|
|
|
import com.uas.search.b2b.model.SPage;
|
|
import com.uas.search.b2b.model.SPage;
|
|
|
-import com.uas.search.b2b.model.Sort;
|
|
|
|
|
-import com.uas.search.b2b.util.SearchConstants;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
@@ -59,12 +55,14 @@ import javax.persistence.criteria.Root;
|
|
|
import java.sql.SQLException;
|
|
import java.sql.SQLException;
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Comparator;
|
|
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
|
|
+import java.util.concurrent.CountDownLatch;
|
|
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
|
|
+import java.util.concurrent.Executors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 对账单
|
|
* 对账单
|
|
@@ -73,36 +71,17 @@ import java.util.Set;
|
|
|
*/
|
|
*/
|
|
|
@Service
|
|
@Service
|
|
|
public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- PurchaseApCheckDao purchaseApCheckDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- PurchaseApCheckTodoDao purchaseApCheckTodoDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- PurchaseApCheckDoneDao purchaseApCheckDoneDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- PurchaseApCheckItemDao purchaseApCheckItemDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private CommonDao commonDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private OrderRedDotService redDotService;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private EnterpriseDao enterpriseDao;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private SearchService searchService;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private UserService userService;
|
|
|
|
|
-
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private VendorDao vendorDao;
|
|
|
|
|
|
|
+ private final PurchaseApCheckDao purchaseApCheckDao;
|
|
|
|
|
+ private final PurchaseApCheckTodoDao purchaseApCheckTodoDao;
|
|
|
|
|
+ private final PurchaseApCheckDoneDao purchaseApCheckDoneDao;
|
|
|
|
|
+ private final PurchaseApCheckItemDao purchaseApCheckItemDao;
|
|
|
|
|
+ private final CommonDao commonDao;
|
|
|
|
|
+ private final OrderRedDotService redDotService;
|
|
|
|
|
+ private final EnterpriseDao enterpriseDao;
|
|
|
|
|
+ private final UserService userService;
|
|
|
|
|
+ private final VendorDao vendorDao;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ErpProdIODetailService erpProdIODetailService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* RMB
|
|
* RMB
|
|
@@ -119,8 +98,25 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
*/
|
|
*/
|
|
|
private final String USD = "USD";
|
|
private final String USD = "USD";
|
|
|
|
|
|
|
|
|
|
+ private final BoundedExecutor executor;
|
|
|
|
|
+
|
|
|
@Autowired
|
|
@Autowired
|
|
|
- private ErpProdIODetailService erpProdIODetailService;
|
|
|
|
|
|
|
+ public PurchaseApCheckServiceImpl(PurchaseApCheckDao purchaseApCheckDao, PurchaseApCheckTodoDao purchaseApCheckTodoDao,
|
|
|
|
|
+ PurchaseApCheckDoneDao purchaseApCheckDoneDao, PurchaseApCheckItemDao purchaseApCheckItemDao,
|
|
|
|
|
+ CommonDao commonDao, OrderRedDotService redDotService, EnterpriseDao enterpriseDao,
|
|
|
|
|
+ UserService userService, VendorDao vendorDao) {
|
|
|
|
|
+ this.purchaseApCheckDao = purchaseApCheckDao;
|
|
|
|
|
+ this.redDotService = redDotService;
|
|
|
|
|
+ this.purchaseApCheckTodoDao = purchaseApCheckTodoDao;
|
|
|
|
|
+ this.purchaseApCheckDoneDao = purchaseApCheckDoneDao;
|
|
|
|
|
+ this.purchaseApCheckItemDao = purchaseApCheckItemDao;
|
|
|
|
|
+ this.commonDao = commonDao;
|
|
|
|
|
+ this.enterpriseDao = enterpriseDao;
|
|
|
|
|
+ this.userService = userService;
|
|
|
|
|
+ this.vendorDao = vendorDao;
|
|
|
|
|
+ ExecutorService executorService = Executors.newCachedThreadPool();
|
|
|
|
|
+ executor = new BoundedExecutor(executorService, 1600);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<PurchaseApCheck> findNotUploadAPcheck() {
|
|
public List<PurchaseApCheck> findNotUploadAPcheck() {
|
|
@@ -537,15 +533,30 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
customer.setTotalCount(tradeCounts);
|
|
customer.setTotalCount(tradeCounts);
|
|
|
}
|
|
}
|
|
|
// 本月应收(总额)
|
|
// 本月应收(总额)
|
|
|
- List<ApCheckAmount> thisMonthTrades = getThisMonthTrade(enUU, customerUU, checkDate, fromDate, endDate);
|
|
|
|
|
|
|
+ List<ApCheckAmount> thisMonthTrades = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ thisMonthTrades = getThisMonthTrade(enUU, customerUU, checkDate, fromDate, endDate);
|
|
|
|
|
+ } catch (InterruptedException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
customer.setThisMonthCount(thisMonthTrades);
|
|
customer.setThisMonthCount(thisMonthTrades);
|
|
|
// 总额存在再进行其他查询
|
|
// 总额存在再进行其他查询
|
|
|
if (!CollectionUtils.isEmpty(thisMonthTrades)) {
|
|
if (!CollectionUtils.isEmpty(thisMonthTrades)) {
|
|
|
// 本月应收(未收)
|
|
// 本月应收(未收)
|
|
|
- List<ApCheckAmount> thisMonthTodoTrades = getThisMonthTodoTrade(enUU, customerUU, checkDate, fromDate, endDate);
|
|
|
|
|
|
|
+ List<ApCheckAmount> thisMonthTodoTrades = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ thisMonthTodoTrades = getThisMonthTodoTrade(enUU, customerUU, checkDate, fromDate, endDate);
|
|
|
|
|
+ } catch (InterruptedException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
customer.setThisMonthTodoCount(thisMonthTodoTrades);
|
|
customer.setThisMonthTodoCount(thisMonthTodoTrades);
|
|
|
// 本月应收(已收)
|
|
// 本月应收(已收)
|
|
|
- List<ApCheckAmount> thisMonthDoneTrades = getThisMonthDoneTrade(enUU, customerUU, checkDate, fromDate, endDate);
|
|
|
|
|
|
|
+ List<ApCheckAmount> thisMonthDoneTrades = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ thisMonthDoneTrades = getThisMonthDoneTrade(enUU, customerUU, checkDate, fromDate, endDate);
|
|
|
|
|
+ } catch (InterruptedException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
customer.setThisMonthDoneCount(thisMonthDoneTrades);
|
|
customer.setThisMonthDoneCount(thisMonthDoneTrades);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -626,36 +637,40 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
* @return 统计结果
|
|
* @return 统计结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public List<ApCheckAmount> getThisMonthTodoTrade(Long enUU, Long customerUU, String checkDate, Long fromDate, Long endDate) {
|
|
|
|
|
|
|
+ public List<ApCheckAmount> getThisMonthTodoTrade(Long enUU, Long customerUU, String checkDate, Long fromDate, Long endDate) throws InterruptedException {
|
|
|
DateFilter filter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
DateFilter filter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
|
- ThreadUtils
|
|
|
|
|
- // 货款调账
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ final CountDownLatch threadsSignal = new CountDownLatch(15);
|
|
|
|
|
+ // 货款调账
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 采购验收
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 采购验收
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 采购验退
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 采购验退
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 委外验收
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 委外验收
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 委外验退
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 委外验退
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeTodoCountSqls.THISMONTH_MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- .run();
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
return groupCountByCurrency(totalTrades);
|
|
return groupCountByCurrency(totalTrades);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -696,36 +711,40 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
* @return 统计结果
|
|
* @return 统计结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public List<ApCheckAmount> getThisMonthDoneTrade(Long enUU, Long customerUU, String checkDate, Long fromDate, Long endDate) {
|
|
|
|
|
|
|
+ public List<ApCheckAmount> getThisMonthDoneTrade(Long enUU, Long customerUU, String checkDate, Long fromDate, Long endDate) throws InterruptedException {
|
|
|
DateFilter filter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
DateFilter filter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
|
- ThreadUtils
|
|
|
|
|
- // 货款调账
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ final CountDownLatch threadsSignal = new CountDownLatch(5);
|
|
|
|
|
+ // 货款调账
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 采购验收
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 采购验收
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 采购验退
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 采购验退
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 委外验收
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 委外验收
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 委外验退
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 委外验退
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeDoneCountSqls.THISMONTH_MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- .run();
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
return groupCountByCurrency(totalTrades);
|
|
return groupCountByCurrency(totalTrades);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -740,36 +759,40 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
* @return 统计结果
|
|
* @return 统计结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public List<ApCheckAmount> getThisMonthTrade(Long enUU, Long customerUU, String checkDate, Long fromDate, Long endDate) {
|
|
|
|
|
|
|
+ public List<ApCheckAmount> getThisMonthTrade(Long enUU, Long customerUU, String checkDate, Long fromDate, Long endDate) throws InterruptedException {
|
|
|
DateFilter filter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
DateFilter filter = erpProdIODetailService.initFilter(fromDate, endDate, checkDate);
|
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
|
- ThreadUtils
|
|
|
|
|
|
|
+ final CountDownLatch threadsSignal = new CountDownLatch(5);
|
|
|
// 货款调账
|
|
// 货款调账
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
// 采购验收
|
|
// 采购验收
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
// 采购验退
|
|
// 采购验退
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
// 委外验收
|
|
// 委外验收
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
// 委外验退
|
|
// 委外验退
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.THISMONTH_MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU, filter.getFromDate(), filter.getEndDate());
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- .run();
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
return groupCountByCurrency(totalTrades);
|
|
return groupCountByCurrency(totalTrades);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -781,35 +804,39 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
* @return 统计结果
|
|
* @return 统计结果
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- public List<ApCheckAmount> getDueTrade(Long enUU, Long customerUU) {
|
|
|
|
|
|
|
+ public List<ApCheckAmount> getDueTrade(Long enUU, Long customerUU) throws InterruptedException {
|
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
List<ApCheckAmount> totalTrades = new ArrayList<>();
|
|
|
- ThreadUtils
|
|
|
|
|
- // 货款调账
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ final CountDownLatch threadsSignal = new CountDownLatch(5);
|
|
|
|
|
+ // 货款调账
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.ADJUSTMENT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 采购验收
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 采购验收
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.SALE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 采购验退
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 采购验退
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.SALE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 委外验收
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 委外验收
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.MAKE_ACCEPT_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- // 委外验退
|
|
|
|
|
- .task(() -> {
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
|
|
+ // 委外验退
|
|
|
|
|
+ executor.submitTask(() -> {
|
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
List<ApCheckAmount> trades = commonDao.query(ApCheckeAllCountSqls.MAKE_RETURN_COUNT_SQL, ApCheckAmount.class, enUU, customerUU);
|
|
|
totalTrades.addAll(trades);
|
|
totalTrades.addAll(trades);
|
|
|
- })
|
|
|
|
|
- .run();
|
|
|
|
|
|
|
+ threadsSignal.countDown();
|
|
|
|
|
+ });
|
|
|
return groupCountByCurrency(totalTrades);
|
|
return groupCountByCurrency(totalTrades);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|