|
|
@@ -7,17 +7,20 @@ import com.uas.platform.b2b.core.util.ContextUtils;
|
|
|
import com.uas.platform.b2b.dao.CommonDao;
|
|
|
import com.uas.platform.b2b.dao.CommunalLogDao;
|
|
|
import com.uas.platform.b2b.dao.EnterpriseDao;
|
|
|
+import com.uas.platform.b2b.dao.PurcApCheckDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApCheckDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApCheckDoneDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApCheckItemDao;
|
|
|
import com.uas.platform.b2b.dao.PurchaseApCheckTodoDao;
|
|
|
import com.uas.platform.b2b.dao.VendorDao;
|
|
|
import com.uas.platform.b2b.event.PurchaseApCheckReplyReleaseEvent;
|
|
|
+import com.uas.platform.b2b.model.ApCheckTable;
|
|
|
import com.uas.platform.b2b.model.CommunalLog;
|
|
|
import com.uas.platform.b2b.model.DateFilter;
|
|
|
import com.uas.platform.b2b.model.Enterprise;
|
|
|
import com.uas.platform.b2b.model.OrderRedDotAll;
|
|
|
import com.uas.platform.b2b.model.OrderType;
|
|
|
+import com.uas.platform.b2b.model.PurcApCheck;
|
|
|
import com.uas.platform.b2b.model.PurchaseApCheck;
|
|
|
import com.uas.platform.b2b.model.PurchaseApCheckDone;
|
|
|
import com.uas.platform.b2b.model.PurchaseApCheckItem;
|
|
|
@@ -36,8 +39,10 @@ import com.uas.platform.b2b.service.UserService;
|
|
|
import com.uas.platform.b2b.support.CollectionUtil;
|
|
|
import com.uas.platform.b2b.support.DecimalUtils;
|
|
|
import com.uas.platform.b2b.support.SystemSession;
|
|
|
+import com.uas.platform.b2b.support.UsageBufferedLogger;
|
|
|
import com.uas.platform.b2b.task.ApCheckTask;
|
|
|
import com.uas.platform.core.exception.IllegalOperatorException;
|
|
|
+import com.uas.platform.core.logging.BufferedLoggerManager;
|
|
|
import com.uas.platform.core.model.Constant;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
import com.uas.platform.core.model.PageParams;
|
|
|
@@ -45,11 +50,13 @@ import com.uas.platform.core.model.Status;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.ps.core.util.StringUtils;
|
|
|
import com.uas.search.b2b.model.SPage;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
@@ -59,6 +66,7 @@ import javax.persistence.criteria.Root;
|
|
|
import java.sql.SQLException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Collection;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
@@ -68,6 +76,7 @@ import java.util.concurrent.CountDownLatch;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* 对账单
|
|
|
@@ -86,9 +95,12 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
private final UserService userService;
|
|
|
private final VendorDao vendorDao;
|
|
|
private final CommunalLogDao communalLogDao;
|
|
|
+ private final PurcApCheckDao apCheckDao;
|
|
|
@Autowired
|
|
|
private ErpProdIODetailService erpProdIODetailService;
|
|
|
|
|
|
+ private final static UsageBufferedLogger LOGGER = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
|
|
|
+
|
|
|
/**
|
|
|
* RMB
|
|
|
*/
|
|
|
@@ -110,7 +122,8 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
public PurchaseApCheckServiceImpl(PurchaseApCheckDao purchaseApCheckDao, PurchaseApCheckTodoDao purchaseApCheckTodoDao,
|
|
|
PurchaseApCheckDoneDao purchaseApCheckDoneDao, PurchaseApCheckItemDao purchaseApCheckItemDao,
|
|
|
CommonDao commonDao, OrderRedDotService redDotService, EnterpriseDao enterpriseDao,
|
|
|
- UserService userService, VendorDao vendorDao, CommunalLogDao communalLogDao) {
|
|
|
+ UserService userService, VendorDao vendorDao, CommunalLogDao communalLogDao,
|
|
|
+ PurcApCheckDao apCheckDao) {
|
|
|
this.purchaseApCheckDao = purchaseApCheckDao;
|
|
|
this.redDotService = redDotService;
|
|
|
this.purchaseApCheckTodoDao = purchaseApCheckTodoDao;
|
|
|
@@ -121,6 +134,7 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
this.userService = userService;
|
|
|
this.vendorDao = vendorDao;
|
|
|
this.communalLogDao = communalLogDao;
|
|
|
+ this.apCheckDao = apCheckDao;
|
|
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
|
|
executor = new BoundedExecutor(executorService, 1600);
|
|
|
}
|
|
|
@@ -328,9 +342,9 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional(rollbackFor = SQLException.class)
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public PurchaseApCheck save(PurchaseApCheck purchaseApCheck) {
|
|
|
- Date date = new Date();
|
|
|
+ Date date = new Date(System.currentTimeMillis());
|
|
|
purchaseApCheck.setRecordDate(date);
|
|
|
purchaseApCheck.setCommitDate(date);
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddhhmmss_sss");
|
|
|
@@ -339,79 +353,138 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
purchaseApCheck.setRecorder(SystemSession.getUser().getUserName());
|
|
|
purchaseApCheck.setRecorderUU(SystemSession.getUser().getUserUU());
|
|
|
purchaseApCheck.setStatus((short) Status.NOT_UPLOAD.value());
|
|
|
- Short number = 0;
|
|
|
- List<PurchaseApCheckItem> items = new ArrayList<PurchaseApCheckItem>();
|
|
|
// 保存成功的同时来源单据更新一下
|
|
|
List<SourceForApcheck> sources = new ArrayList<>();
|
|
|
+ PurcApCheck apCheck = new PurcApCheck();
|
|
|
+ BeanUtils.copyProperties(purchaseApCheck, apCheck, PurcApCheck.class);
|
|
|
+ apCheck = apCheckDao.save(apCheck);
|
|
|
for (PurchaseApCheckItem item : purchaseApCheck.getItems()) {
|
|
|
SourceForApcheck source = new SourceForApcheck(item);
|
|
|
sources.add(source);
|
|
|
- item.setNumber(++number);
|
|
|
- item.setApCheck(purchaseApCheck);
|
|
|
- items.add(item);
|
|
|
}
|
|
|
- updateSourceInfo(sources);
|
|
|
- items = purchaseApCheckItemDao.save(items);
|
|
|
+ updateSourceInfo(sources);
|
|
|
+ saveCheckItemsByJdbcTemplate(purchaseApCheck.getItems(), apCheck.getId());
|
|
|
List<PurchaseApCheck> apChecks = new ArrayList<>();
|
|
|
- apChecks.add(items.get(0).getApCheck());
|
|
|
+ purchaseApCheck.setId(apCheck.getId());
|
|
|
+ apChecks.add(purchaseApCheck);
|
|
|
saveUserOrders(apChecks);
|
|
|
- return purchaseApCheck;
|
|
|
+ return purchaseApCheck;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 采用jdbcTemplate批量存储名
|
|
|
+ * @param items 对账明细
|
|
|
+ * @param apCheckId 主表id
|
|
|
+ */
|
|
|
+ private void saveCheckItemsByJdbcTemplate(Set<PurchaseApCheckItem> items, final Long apCheckId) {
|
|
|
+ if (!CollectionUtils.isEmpty(items)) {
|
|
|
+ final Short[] num = {1};
|
|
|
+ commonDao.getJdbcTemplate().batchUpdate("insert into purc$apcheckitem(pai_number, pai_custuseruu, pai_prid, pai_ordercode,pai_orderclass, " +
|
|
|
+ "pai_orderdetno, pai_inoutno, pai_inoutnodetno, pai_prodcode, pai_prodtitle, pai_prodspec, pai_produnit, pai_price,pai_taxrate, pai_checkqty, " +
|
|
|
+ "pai_amount, pai_custcheckqty, pai_remark, pai_status, pai_sourcetable, pai_sourceid, pai_source_date, pai_oldycheckqty, pai_receivecode, pai_receivename, " +
|
|
|
+ "pai_sendcode, pai_whname, pai_billed, pai_paid) " +
|
|
|
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
|
|
|
+ items, items.size(), (pa, i) -> {
|
|
|
+ pa.setObject(1, num[0]++);
|
|
|
+ pa.setObject(2, i.getCustUserUU());
|
|
|
+ pa.setObject(3, i.getPrid());
|
|
|
+ pa.setObject(4, i.getOrderCode());
|
|
|
+ pa.setObject(5, i.getOrderClass());
|
|
|
+ pa.setObject(6, i.getOrderDetno());
|
|
|
+ pa.setObject(7, i.getInoutno());
|
|
|
+ pa.setObject(8, i.getInoutnodetno());
|
|
|
+ pa.setObject(9, i.getProdCode());
|
|
|
+ pa.setObject(10, i.getProdTitle());
|
|
|
+
|
|
|
+ pa.setObject(11, i.getProdSpec());
|
|
|
+ pa.setObject(12, i.getProdUnit());
|
|
|
+ pa.setObject(13, i.getPrice());
|
|
|
+ pa.setObject(14, i.getTaxrate());
|
|
|
+ pa.setObject(15, i.getCheckQty());
|
|
|
+ pa.setObject(16, i.getAmount());
|
|
|
+ pa.setObject(17, i.getCustCheckQty());
|
|
|
+ pa.setObject(18, i.getRemark());
|
|
|
+ pa.setObject(19, i.getStatus());
|
|
|
+ pa.setObject(20, i.getSourceTable());
|
|
|
+
|
|
|
+ pa.setObject(21, i.getSourceId());
|
|
|
+ pa.setObject(22, i.getSourceDate());
|
|
|
+ pa.setObject(23, i.getOldYCheckQty());
|
|
|
+ pa.setObject(24, i.getReceiveCode());
|
|
|
+ pa.setObject(25, i.getReceiveName());
|
|
|
+ pa.setObject(26, i.getSendcode());
|
|
|
+ pa.setObject(27, i.getWhname());
|
|
|
+ pa.setObject(28, i.getBilled());
|
|
|
+ pa.setObject(29, apCheckId);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 更新来源表数据
|
|
|
*
|
|
|
- * @param list 来源库信息
|
|
|
+ * @param sourceApCheckList 来源库信息
|
|
|
* @return 保存结果
|
|
|
*/
|
|
|
- public boolean updateSourceInfo(List<SourceForApcheck> list) {
|
|
|
- if (!CollectionUtils.isEmpty(list)) {
|
|
|
- List<String> sqls = new ArrayList<>();
|
|
|
- for (SourceForApcheck source : list) {
|
|
|
- if (source.hasInfo()) {
|
|
|
- String idName = null;
|
|
|
- String yCheckQtyName = null;
|
|
|
- if (source.getSourcetable().equals("purc$returnitem")) {
|
|
|
- idName = "pri_id";
|
|
|
- yCheckQtyName = "pri_ycheckqty";
|
|
|
- } else if (source.getSourcetable().equals("purc$acceptitem")) {
|
|
|
- idName = "pai_id";
|
|
|
- yCheckQtyName = "pai_ycheckqty";
|
|
|
- } else if (source.getSourcetable().equals("purc$badinitem")) {
|
|
|
- idName = "pbi_id";
|
|
|
- yCheckQtyName = "pbi_ycheckqty";
|
|
|
- } else if (source.getSourcetable().equals("purc$badoutitem")) {
|
|
|
- idName = "poi_id";
|
|
|
- yCheckQtyName = "poi_ycheckqty";
|
|
|
- } else if (source.getSourcetable().equals("make$acceptitem")) {
|
|
|
- idName = "mai_id";
|
|
|
- yCheckQtyName = "mai_ycheckqty";
|
|
|
- } else if (source.getSourcetable().equals("make$returnitem")) {
|
|
|
- idName = "mri_id";
|
|
|
- yCheckQtyName = "mri_ycheckqty";
|
|
|
- } else if (source.getSourcetable().equals("purc$apbilladjustment")) {
|
|
|
- idName = "aa_id";
|
|
|
- yCheckQtyName = "aa_ycheckqty";
|
|
|
- }
|
|
|
- String sql = "update " + source.getSourcetable() + " set " + yCheckQtyName + " = "
|
|
|
- + source.getNewYCheckQty() + " where " + idName + " = " + source.getSourceid();
|
|
|
- sqls.add(sql);
|
|
|
- }
|
|
|
- }
|
|
|
- if (!CollectionUtils.isEmpty(sqls)) {
|
|
|
- try {
|
|
|
- commonDao.getJdbcTemplate().batchUpdate(sqls.toArray(new String[sqls.size()]));
|
|
|
- } catch (RuntimeException e) {
|
|
|
- System.out.println("生成对账单批量更新来源数据失败: " + e.getMessage());
|
|
|
- throw new IllegalOperatorException("保存失败!");
|
|
|
- }
|
|
|
- return true;
|
|
|
+ public void updateSourceInfo(List<SourceForApcheck> sourceApCheckList) {
|
|
|
+ if (CollectionUtils.isEmpty(sourceApCheckList)) {
|
|
|
+ throw new IllegalOperatorException("保存失败!");
|
|
|
+ }
|
|
|
+ String saleAcceptSql = setSql(sourceApCheckList, ApCheckTable.SALE_ACCEPT, ApCheckTable.SALE_ACCEPT_QTY, ApCheckTable.SALE_ACCEPT_ID);
|
|
|
+ String saleReturnSql = setSql(sourceApCheckList, ApCheckTable.SALE_RETURN, ApCheckTable.SALE_RETURN_QTY, ApCheckTable.SALE_RETURN_ID);
|
|
|
+ String saleBadInSql = setSql(sourceApCheckList, ApCheckTable.SALE_BADIN, ApCheckTable.SALE_BADIN_QTY, ApCheckTable.SALE_BADIN_ID);
|
|
|
+ String saleBadOutSql = setSql(sourceApCheckList, ApCheckTable.SALE_BADOUT, ApCheckTable.SALE_BADOUT_QTY, ApCheckTable.SALE_BADOUT_ID);
|
|
|
+ String makeAcceptSql = setSql(sourceApCheckList, ApCheckTable.MAKE_ACCEPT, ApCheckTable.MAKE_ACCEPT_QTY, ApCheckTable.MAKE_ACCEPT_ID);
|
|
|
+ String makeReturnSql = setSql(sourceApCheckList, ApCheckTable.MAKE_RETURN, ApCheckTable.MAKE_RETURN_QTY, ApCheckTable.MAKE_RETURN_ID);
|
|
|
+ String adjustmentSql = setSql(sourceApCheckList, ApCheckTable.ADJUSTMENT, ApCheckTable.ADJUSTMENT_QTY, ApCheckTable.ADJUSTMENT_ID);
|
|
|
+ List<String> sqlList = Stream.of(saleAcceptSql, saleReturnSql, saleBadInSql, saleBadOutSql, makeAcceptSql, makeReturnSql, adjustmentSql)
|
|
|
+ .filter(str -> !StringUtils.isEmpty(str)).collect(Collectors.toList());
|
|
|
+ if (!CollectionUtils.isEmpty(sqlList)) {
|
|
|
+ try {
|
|
|
+ commonDao.getJdbcTemplate().batchUpdate(sqlList.toArray(new String[sqlList.size()]));
|
|
|
+ } catch (RuntimeException e) {
|
|
|
+ System.out.println("生成对账单批量更新来源数据失败: " + e.getMessage());
|
|
|
+ throw new IllegalOperatorException("保存失败!");
|
|
|
}
|
|
|
- }
|
|
|
- throw new IllegalOperatorException("保存失败!");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
+ /**
|
|
|
+ * 根据传入的来源表, 数据统计,id字段已经对账数量字段生成更新的sql语句
|
|
|
+ *
|
|
|
+ * @param sourceApCheckList 数据统计
|
|
|
+ * @param tableName 来源表名称
|
|
|
+ * @param qtyColumn 对账数量走的
|
|
|
+ * @param idColumn id字段
|
|
|
+ * @return 更新语句
|
|
|
+ */
|
|
|
+ private String setSql(List<SourceForApcheck> sourceApCheckList, String tableName, String qtyColumn, String idColumn) {
|
|
|
+ List<SourceForApcheck> filterList = sourceApCheckList.stream()
|
|
|
+ .filter(source -> source.hasInfo() && tableName.equals(source.getSourcetable()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(filterList)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ StringBuffer sql = new StringBuffer("update ").append(tableName)
|
|
|
+ .append(" set ").append(qtyColumn).append(" = case ")
|
|
|
+ .append(idColumn).append(" ");
|
|
|
+ StringBuffer idString = new StringBuffer();
|
|
|
+ filterList.forEach(apCheck -> {
|
|
|
+ sql.append(" when ").append(apCheck.getSourceid()).append(" then ").append(apCheck.getNewYCheckQty());
|
|
|
+ if (idString.length() > 0) {
|
|
|
+ idString.append(",");
|
|
|
+ }
|
|
|
+ idString.append(apCheck.getSourceid());
|
|
|
+ });
|
|
|
+ // 如果id为空,前面又筛选出数据,说明数据源存在问题,不能保存对账,抛出异常提示
|
|
|
+ if (idString.length() == 0) {
|
|
|
+ throw new IllegalOperatorException("更新失败");
|
|
|
+ }
|
|
|
+ sql.append(" end where ").append(idColumn).append(" in (").append(idString).append(")");
|
|
|
+ return sql.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public Page<PurchaseApCheck> findAllByPageInfo(final PageInfo pageInfo, final String keyword,
|
|
|
SearchFilter searchFilter) {
|
|
|
if (searchFilter != null) {
|
|
|
@@ -540,6 +613,18 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
return purchaseApCheckItemDao.findBySourceTableAndSourceId(sourceTable, sourceId);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 通过sourceTable、sourceId判断是否已提交未对账
|
|
|
+ *
|
|
|
+ * @param sourceTable 来源表
|
|
|
+ * @param ids id集合
|
|
|
+ * @return 查询的数据
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<PurchaseApCheckItem> findBySourceTableAndSourceIdIn(String sourceTable, Collection<Long> ids) {
|
|
|
+ return purchaseApCheckItemDao.findBySourceTableAndSourceIdIn(sourceTable, ids);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Double getBilledByItemId(Long id) {
|
|
|
return purchaseApCheckItemDao.getBilledById(id);
|
|
|
@@ -953,4 +1038,67 @@ public class PurchaseApCheckServiceImpl implements PurchaseApCheckService {
|
|
|
threadsSignal.await();
|
|
|
return groupCountByCurrency(totalTrades);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 进行对账单对账操作
|
|
|
+ *
|
|
|
+ * @param apCheck 对账单数据
|
|
|
+ * @return 对账结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ModelMap checkCount(PurchaseApCheck apCheck) {
|
|
|
+ if (apCheck != null) {
|
|
|
+ // 针对当前对账数据进行校验操作
|
|
|
+ enableCheck(apCheck.getItems());
|
|
|
+ apCheck = this.save(apCheck);
|
|
|
+ LOGGER.log("应收对账单", "多个单据生成同一张应收对账单", apCheck.getRemark(), null, apCheck.getId());
|
|
|
+ return new ModelMap("id", apCheck.getId());
|
|
|
+ }
|
|
|
+ LOGGER.log("应收对账单", "生成对账单失败,未选择对账数据");
|
|
|
+ throw new IllegalOperatorException("保存失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按表类型分别统计各个出入库单据的对账情况
|
|
|
+ *
|
|
|
+ * @param checkItemList 对账明细
|
|
|
+ */
|
|
|
+ private void enableCheck(Set<PurchaseApCheckItem> checkItemList) {
|
|
|
+ // 先取出表名
|
|
|
+ Set<String> tableNameSet = checkItemList.stream()
|
|
|
+ .filter(item -> !StringUtils.isEmpty(item.getSourceTable()))
|
|
|
+ .map(PurchaseApCheckItem::getSourceTable)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ // 根据去重的表名分类统计各个来源id
|
|
|
+ if (!CollectionUtil.isEmpty(tableNameSet)) {
|
|
|
+ // 禁止提交生成对账单状态
|
|
|
+ String disableStatus = "未对账";
|
|
|
+ Set<String> alters = new HashSet<>();
|
|
|
+ // 分别统计各个单据是否存在未对账单据
|
|
|
+ tableNameSet.forEach(tableName -> {
|
|
|
+ Set<Long> sourceIdSet = getSourceIdSet(checkItemList, tableName);
|
|
|
+ List<PurchaseApCheckItem> itemList = this.findBySourceTableAndSourceIdIn(tableName, sourceIdSet);
|
|
|
+ alters.addAll(itemList.stream().filter(item -> disableStatus.equals(item.getApCheck().getCheckStatus()))
|
|
|
+ .map(PurchaseApCheckItem::getInoutno)
|
|
|
+ .collect(Collectors.toSet()));
|
|
|
+ });
|
|
|
+ if (!CollectionUtil.isEmpty(alters)) {
|
|
|
+ throw new IllegalOperatorException("订单" + new ModelMap("alters", alters) + "存在未对账的单据,请先进行对账!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按表名统计来源id
|
|
|
+ *
|
|
|
+ * @param checkItemList 对账明细集合
|
|
|
+ * @param tableName 表名
|
|
|
+ * @return id集合
|
|
|
+ */
|
|
|
+ private Set<Long> getSourceIdSet(Set<PurchaseApCheckItem> checkItemList, String tableName) {
|
|
|
+ return checkItemList.stream()
|
|
|
+ .filter(checkItem -> tableName.equals(checkItem.getSourceTable()))
|
|
|
+ .map(PurchaseApCheckItem::getSourceId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ }
|
|
|
}
|