|
|
@@ -15,6 +15,7 @@ import com.uas.platform.b2b.model.ApcheckKeyWord;
|
|
|
import com.uas.platform.b2b.model.DateFilter;
|
|
|
import com.uas.platform.b2b.model.ErpProdIODetail;
|
|
|
import com.uas.platform.b2b.model.ErpProdIo;
|
|
|
+import com.uas.platform.b2b.model.ProductIoGroup;
|
|
|
import com.uas.platform.b2b.model.PurchaseApCheck;
|
|
|
import com.uas.platform.b2b.model.PurchaseApCheckItemInfo;
|
|
|
import com.uas.platform.b2b.model.Vendor;
|
|
|
@@ -41,9 +42,13 @@ import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static java.util.Comparator.comparing;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -61,19 +66,16 @@ public class ErpProdIODetailServiceImpl implements ErpProdIODetailService {
|
|
|
|
|
|
private final VendorDao vendorDao;
|
|
|
|
|
|
- private final PurchaseApCheckDao apCheckDao;
|
|
|
-
|
|
|
private final BoundedExecutor executor;
|
|
|
|
|
|
private final PurchaseApCheckItemInfoDao apCheckItemInfoDao;
|
|
|
|
|
|
@Autowired
|
|
|
public ErpProdIODetailServiceImpl(CommonDao commonDao, PurchaseApCheckService apCheckService,
|
|
|
- VendorDao vendorDao, PurchaseApCheckDao apCheckDao, PurchaseApCheckItemInfoDao apCheckItemInfoDao) {
|
|
|
+ VendorDao vendorDao, PurchaseApCheckItemInfoDao apCheckItemInfoDao) {
|
|
|
this.commonDao = commonDao;
|
|
|
this.apCheckService = apCheckService;
|
|
|
this.vendorDao = vendorDao;
|
|
|
- this.apCheckDao = apCheckDao;
|
|
|
this.apCheckItemInfoDao = apCheckItemInfoDao;
|
|
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
|
|
executor = new BoundedExecutor(executorService, 1600);
|
|
|
@@ -153,9 +155,25 @@ public class ErpProdIODetailServiceImpl implements ErpProdIODetailService {
|
|
|
List<ErpProdIODetail> detailList = covertApCheckToErpIo(apCheckList);
|
|
|
erpProdIo.getDetails().addAll(detailList);
|
|
|
}
|
|
|
- return erpProdIo;
|
|
|
+ Long start = System.currentTimeMillis();
|
|
|
+ groupByOrderCode(erpProdIo);
|
|
|
+ System.out.println("group cost: " + (System.currentTimeMillis() - start));
|
|
|
+ return erpProdIo;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 按订单明细分组
|
|
|
+ * @param erpProdIo 出入库单信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void groupByOrderCode(ErpProdIo erpProdIo) {
|
|
|
+ Set<String> codeSet = erpProdIo.getDetails().parallelStream().map(ErpProdIODetail::getOrdercode).collect(Collectors.toSet());
|
|
|
+ codeSet.forEach(code -> {
|
|
|
+ List<ErpProdIODetail> details = erpProdIo.getDetails().parallelStream()
|
|
|
+ .filter(detail -> code.equals(detail.getOrdercode())).collect(Collectors.toList());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 设置对账金额信息
|
|
|
*
|