|
@@ -53,83 +53,89 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMapper, SubscribeDetail> implements SubscribeDetailService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private ProductInfoService productInfoService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private WarehouseService warehouseService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private PurchaseDetailService purchaseDetailService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private DictTenantDataService dictTenantDataService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private CorporationService corporationService;
|
|
|
-
|
|
|
- /**
|
|
|
- * 分页
|
|
|
- *
|
|
|
- * @param dto
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public Page<SubscribeDetailVo> getPage(SubscribeDetailSelectDto dto) {
|
|
|
- IWrapper<SubscribeDetail> wrapper = getWrapper();
|
|
|
- // 申购单号
|
|
|
- wrapper.like("t2.subscribeCode", dto.getCode());
|
|
|
- // 申购时间
|
|
|
- wrapper.between("t2", Subscribe::getCreateTime, dto.getBeginTime(), dto.getEndTime());
|
|
|
- // 申购状态
|
|
|
- wrapper.ge("t2", Subscribe::getSubcribeStatus, dto.getSubscribeStatus());
|
|
|
- // 关键字
|
|
|
- wrapper.like("t2.subscribeCode", dto.getKeyword());
|
|
|
- // 状态
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getStatus())) {
|
|
|
- wrapper.in("t2", SubscribeDetail::getStatus, Arrays.asList(dto.getStatus().split(",")));
|
|
|
- }
|
|
|
-
|
|
|
- // 如果类型存在带入类型查询
|
|
|
- List<ProductInfoVo> productList = productInfoService.getListByProductType(
|
|
|
- dto.getProductType(), dto.getDefinition(), dto.getProductName(), dto.getProductCode());
|
|
|
- if (ObjectUtil.isEmpty(productList)) {
|
|
|
- return new Page<>();
|
|
|
- }
|
|
|
- List<Long> productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
|
|
|
- wrapper.in("t2", SubscribeDetail::getProductId, productIds);
|
|
|
-
|
|
|
- // 待采购过滤掉指定状态 例如不要 88 作废
|
|
|
- if (StrUtil.isNotBlank(dto.getNeStatus())) {
|
|
|
- wrapper.notIn("t2", SubscribeDetail::getStatus, dto.getNeStatus().split(","));
|
|
|
- }
|
|
|
-
|
|
|
- wrapper.eq("t2", SubscribeDetail::getDataType, dto.getDataType());
|
|
|
-
|
|
|
- //权限过滤:待采购-子公司看自己的,总公司看全部
|
|
|
- Long companyId = SecurityUtils.getCompanyId();
|
|
|
- if (!Objects.equals(companyId, 100L)) {
|
|
|
- wrapper.eq("t2", SubscribeDetail::getCompanyId, companyId);
|
|
|
- } else {
|
|
|
- wrapper.eq("t2", SubscribeDetail::getCompanyId, dto.getCompanyId());
|
|
|
- }
|
|
|
-
|
|
|
- //按类型倒序 先显示合同数据 再显示申购数据
|
|
|
- wrapper.orderByDesc("t2", SubscribeDetail::getDataType);
|
|
|
- wrapper.orderByDesc("t2", SubscribeDetail::getCreateTime);
|
|
|
-
|
|
|
- //过滤作废的数据
|
|
|
- wrapper.ne("t2", SubscribeDetail::getStatus, FlowStatusEnum1.CANCELLATION.getKey());
|
|
|
-
|
|
|
- Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
- List<SubscribeDetailVo> records = page.getRecords();
|
|
|
-
|
|
|
- if (records.size() == 0) {
|
|
|
- return page;
|
|
|
- }
|
|
|
-
|
|
|
- //获取生产公司信息
|
|
|
- List<Long> companyIds = records.stream().map(SubscribeDetail::getCompanyId).collect(Collectors.toList());
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WarehouseService warehouseService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PurchaseDetailService purchaseDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DictTenantDataService dictTenantDataService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CorporationService corporationService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Page<SubscribeDetailVo> getPage(SubscribeDetailSelectDto dto) {
|
|
|
+ IWrapper<SubscribeDetail> wrapper = getWrapper();
|
|
|
+ // 申购单号
|
|
|
+ wrapper.like("t2.subscribeCode", dto.getCode());
|
|
|
+ // 申购时间
|
|
|
+ wrapper.between("t2", Subscribe::getCreateTime, dto.getBeginTime(), dto.getEndTime());
|
|
|
+ // 申购状态
|
|
|
+ wrapper.ge("t2", Subscribe::getSubcribeStatus, dto.getSubscribeStatus());
|
|
|
+ // 关键字
|
|
|
+ wrapper.like("t2.subscribeCode", dto.getKeyword());
|
|
|
+ // 状态
|
|
|
+ if (ObjectUtil.isNotEmpty(dto.getStatus())) {
|
|
|
+ wrapper.in("t2", SubscribeDetail::getStatus, Arrays.asList(dto.getStatus().split(",")));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果类型存在带入类型查询
|
|
|
+ List<ProductInfoVo> productList = productInfoService.getListByProductType(
|
|
|
+ dto.getProductType(), dto.getDefinition(), dto.getProductName(), dto.getProductCode());
|
|
|
+ if (ObjectUtil.isEmpty(productList)) {
|
|
|
+ return new Page<>();
|
|
|
+ }
|
|
|
+ List<Long> productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
|
|
|
+ wrapper.in("t2", SubscribeDetail::getProductId, productIds);
|
|
|
+
|
|
|
+ // 待采购过滤掉指定状态 例如不要 88 作废
|
|
|
+ if (StrUtil.isNotBlank(dto.getNeStatus())) {
|
|
|
+ wrapper.notIn("t2", SubscribeDetail::getStatus, dto.getNeStatus().split(","));
|
|
|
+ }
|
|
|
+
|
|
|
+ wrapper.eq("t2", SubscribeDetail::getDataType, dto.getDataType());
|
|
|
+
|
|
|
+ //权限过滤:待采购-子公司看自己的,总公司看全部
|
|
|
+ Long companyId = SecurityUtils.getCompanyId();
|
|
|
+ if (!Objects.equals(companyId, 100L)) {
|
|
|
+ wrapper.eq("t2", SubscribeDetail::getCompanyId, companyId);
|
|
|
+ } else {
|
|
|
+ wrapper.eq("t2", SubscribeDetail::getCompanyId, dto.getCompanyId());
|
|
|
+ }
|
|
|
+
|
|
|
+ //按类型倒序 先显示合同数据 再显示申购数据
|
|
|
+ wrapper.orderByDesc("t2", SubscribeDetail::getDataType);
|
|
|
+ wrapper.orderByDesc("t2", SubscribeDetail::getCreateTime);
|
|
|
+
|
|
|
+ //过滤作废的数据
|
|
|
+ wrapper.ne("t2", SubscribeDetail::getStatus, FlowStatusEnum1.CANCELLATION.getKey());
|
|
|
+
|
|
|
+ Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<SubscribeDetailVo> records = page.getRecords();
|
|
|
+
|
|
|
+ if (records.size() == 0) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取合同物料数量
|
|
|
+ List<Long> contractIds = records.stream().
|
|
|
+ filter(item -> Objects.equals(item.getDataType(), 1)).map(SubscribeDetail::getContractId).collect(Collectors.toList());
|
|
|
+ List<SubscribeDetail> contractCount = baseMapper.getContractCountByContractIds(contractIds);
|
|
|
+ Map<Long, List<SubscribeDetail>> contractCountMap = contractCount.stream().collect(Collectors.groupingBy(SubscribeDetail::getContractId));
|
|
|
+
|
|
|
+ //获取生产公司信息
|
|
|
+ List<Long> companyIds = records.stream().map(SubscribeDetail::getCompanyId).collect(Collectors.toList());
|
|
|
Map<Long, String> companyNameMap = DeptUstil.getDeptNameMap(companyIds);
|
|
|
|
|
|
// 赋值产品信息
|
|
@@ -152,13 +158,21 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
|
|
|
|
|
|
//赋值生产公司名称
|
|
|
record.setCompanyName(companyNameMap.get(record.getCompanyId()));
|
|
|
+
|
|
|
+ //赋值生产需求量
|
|
|
+ List<SubscribeDetail> subscribeDetailList = contractCountMap.get(record.getContractId());
|
|
|
+ if (ObjectUtil.isNotEmpty(subscribeDetailList)) {
|
|
|
+ Map<Long, BigDecimal> collect = subscribeDetailList.stream().collect(Collectors.toMap(SubscribeDetail::getProductId, SubscribeDetail::getCount));
|
|
|
+ BigDecimal bigDecimal = collect.get(record.getProductId());
|
|
|
+ record.setProdNeedCount(bigDecimal);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // 赋值采购数量
|
|
|
+ // 赋值采购数量
|
|
|
List<Long> subscribeDetailIds = records.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
|
|
|
List<PurchaseDetailVo> purchaseDetailsList = purchaseDetailService.getPurchaseCountListBySubscribeDetailIds(subscribeDetailIds);
|
|
|
// List<PurchaseDetail> purchaseDetailsList = purchaseDetailService.list(q -> q.in(PurchaseDetail::getSubscribeDetailId, subscribeDetailIds));
|
|
|
- Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
|
|
|
+ Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
|
|
|
for (SubscribeDetailVo subscribeDetailVo : records) {
|
|
|
List<PurchaseDetail> purchaseDetails = purchaseDetailsMap.get(subscribeDetailVo.getId());
|
|
|
if (ObjectUtil.isEmpty(purchaseDetails)) {
|
|
@@ -173,136 +187,136 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
|
|
|
item.setCorporationName(corporation.getName());
|
|
|
});
|
|
|
|
|
|
- return page;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据IDS获取明细
|
|
|
- *
|
|
|
- * @param ids
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Override
|
|
|
- public List<SubscribeDetailVo> detail(List<Long> ids) {
|
|
|
- if (CollectionUtils.isEmpty(ids)) {
|
|
|
- throw new ServiceException("参数异常");
|
|
|
- }
|
|
|
- List<SubscribeDetailVo> list = baseMapper.getDetail(ids);
|
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
- //根据申购businessId取出所有产品
|
|
|
- List<Long> productIds = list.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
|
|
|
- List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
|
|
|
- Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
- for (SubscribeDetailVo s : list) {
|
|
|
- if (MapUtils.isNotEmpty(productMap)) {
|
|
|
- ProductInfoVo p = productMap.get(s.getProductId()).get(0);
|
|
|
- s.setProductCategory(p.getClassifyName());
|
|
|
- s.setProductCode(p.getCode());
|
|
|
- s.setProductUnit(p.getUnit());
|
|
|
- s.setProductType(p.getType());
|
|
|
- s.setProductName(p.getName());
|
|
|
- s.setProductSpec(p.getSpec());
|
|
|
- s.setProductCustomCode(p.getCustomCode());
|
|
|
- s.setProductDefinition(p.getDefinition());
|
|
|
- s.setProductLength(p.getLength());
|
|
|
- s.setProductWidth(p.getWidth());
|
|
|
- s.setProductHeight(p.getHeight());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 赋值采购数量
|
|
|
- List<Long> subscribeDetailIds = list.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
|
|
|
- List<PurchaseDetailVo> purchaseDetailsList = purchaseDetailService.getPurchaseCountListBySubscribeDetailIds(subscribeDetailIds);
|
|
|
- Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
|
|
|
- for (SubscribeDetailVo subscribeDetailVo : list) {
|
|
|
- List<PurchaseDetail> purchaseDetails = purchaseDetailsMap.get(subscribeDetailVo.getId());
|
|
|
- if (ObjectUtil.isEmpty(purchaseDetails)) {
|
|
|
- subscribeDetailVo.setPurchaseCount(BigDecimal.ZERO);
|
|
|
- continue;
|
|
|
- }
|
|
|
- BigDecimal count = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- subscribeDetailVo.setPurchaseCount(count);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- return list;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void add(SubscribeDetailDto subscribeDetailDto) {
|
|
|
- this.save(subscribeDetailDto);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void edit(SubscribeDetailDto subscribeDetailDto) {
|
|
|
- this.updateById(subscribeDetailDto);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void delete(Long id) {
|
|
|
- this.removeById(id);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 申购统计(申购单分页)
|
|
|
- */
|
|
|
- @Override
|
|
|
- public Map<String, Object> subscribeStatistics(SubscribeDetailSelectDto dto) {
|
|
|
- //存放申购统计数据
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
-
|
|
|
- //存放申购统计详情数据
|
|
|
- List<Map<String, Object>> list = new ArrayList<>();
|
|
|
-
|
|
|
- QueryWrapper<Object> query = Wrappers.query();
|
|
|
- query.groupBy("pi.type");
|
|
|
- //查询申购统计(产品类型分组)
|
|
|
- List<SubscribeDetailVo> subscribeDetailVos = baseMapper.subscribeStatistics(query);
|
|
|
- Map<String, List<SubscribeDetailVo>> subscribeDetailVoMap = subscribeDetailVos.stream()
|
|
|
- .collect(Collectors.groupingBy(SubscribeDetailVo::getType));
|
|
|
-
|
|
|
- //计算申购笔合计数据
|
|
|
- Integer amount = subscribeDetailVos.stream().map(SubscribeDetailVo::getCounts).reduce(Integer::sum).orElse(0);
|
|
|
- map.put("amount", amount);
|
|
|
- //计算申购货品种类合计数据
|
|
|
- Integer typeAmount = subscribeDetailVos.stream().map(SubscribeDetailVo::getTypeCount).reduce(Integer::sum).orElse(0);
|
|
|
- map.put("typeAmount", typeAmount);
|
|
|
- //切换数据源
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
- //获取产品类型字典数据
|
|
|
- List<DictTenantDataVo> dictTenantDataVoList = getDict("product_type");
|
|
|
- DynamicDataSourceContextHolder.poll();
|
|
|
-
|
|
|
- if (ObjectUtil.isEmpty(dictTenantDataVoList)) {
|
|
|
- throw new ServiceException("数据有误:产品没有配置产品类型字典,请先添加产品类型字典");
|
|
|
- }
|
|
|
-
|
|
|
- //赋值笔数、货品种类数据
|
|
|
- for (DictTenantDataVo dictTenantDataVo : dictTenantDataVoList) {
|
|
|
- //设置初始值
|
|
|
- Map<String, Object> typeMap = new HashMap<>();
|
|
|
- typeMap.put("type", dictTenantDataVo.getDictValue());
|
|
|
- typeMap.put("count", 0);
|
|
|
- typeMap.put("typeCount", 0);
|
|
|
-
|
|
|
- //赋值
|
|
|
- List<SubscribeDetailVo> subscribeDetailVoList = subscribeDetailVoMap.get(dictTenantDataVo.getDictKey());
|
|
|
- if (ObjectUtil.isNotEmpty(subscribeDetailVoList)) {
|
|
|
- typeMap.put("count", subscribeDetailVoList.get(0).getCounts());
|
|
|
- typeMap.put("typeCount", subscribeDetailVoList.get(0).getTypeCount());
|
|
|
- }
|
|
|
- list.add(typeMap);
|
|
|
- }
|
|
|
- map.put("productTypeList", list);
|
|
|
- return map;
|
|
|
- }
|
|
|
-
|
|
|
- //根据字典编码获取字典的数据
|
|
|
- private List<DictTenantDataVo> getDict(String code) {
|
|
|
- DictTenantDataSelectDto dto = new DictTenantDataSelectDto();
|
|
|
- dto.setDictCode(code);
|
|
|
- return dictTenantDataService.getList(dto);
|
|
|
- }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据IDS获取明细
|
|
|
+ *
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<SubscribeDetailVo> detail(List<Long> ids) {
|
|
|
+ if (CollectionUtils.isEmpty(ids)) {
|
|
|
+ throw new ServiceException("参数异常");
|
|
|
+ }
|
|
|
+ List<SubscribeDetailVo> list = baseMapper.getDetail(ids);
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
+ //根据申购businessId取出所有产品
|
|
|
+ List<Long> productIds = list.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
|
|
|
+ List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
|
|
|
+ Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
+ for (SubscribeDetailVo s : list) {
|
|
|
+ if (MapUtils.isNotEmpty(productMap)) {
|
|
|
+ ProductInfoVo p = productMap.get(s.getProductId()).get(0);
|
|
|
+ s.setProductCategory(p.getClassifyName());
|
|
|
+ s.setProductCode(p.getCode());
|
|
|
+ s.setProductUnit(p.getUnit());
|
|
|
+ s.setProductType(p.getType());
|
|
|
+ s.setProductName(p.getName());
|
|
|
+ s.setProductSpec(p.getSpec());
|
|
|
+ s.setProductCustomCode(p.getCustomCode());
|
|
|
+ s.setProductDefinition(p.getDefinition());
|
|
|
+ s.setProductLength(p.getLength());
|
|
|
+ s.setProductWidth(p.getWidth());
|
|
|
+ s.setProductHeight(p.getHeight());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 赋值采购数量
|
|
|
+ List<Long> subscribeDetailIds = list.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
|
|
|
+ List<PurchaseDetailVo> purchaseDetailsList = purchaseDetailService.getPurchaseCountListBySubscribeDetailIds(subscribeDetailIds);
|
|
|
+ Map<Long, List<PurchaseDetail>> purchaseDetailsMap = purchaseDetailsList.stream().collect(Collectors.groupingBy(PurchaseDetail::getSubscribeDetailId));
|
|
|
+ for (SubscribeDetailVo subscribeDetailVo : list) {
|
|
|
+ List<PurchaseDetail> purchaseDetails = purchaseDetailsMap.get(subscribeDetailVo.getId());
|
|
|
+ if (ObjectUtil.isEmpty(purchaseDetails)) {
|
|
|
+ subscribeDetailVo.setPurchaseCount(BigDecimal.ZERO);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BigDecimal count = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ subscribeDetailVo.setPurchaseCount(count);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void add(SubscribeDetailDto subscribeDetailDto) {
|
|
|
+ this.save(subscribeDetailDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void edit(SubscribeDetailDto subscribeDetailDto) {
|
|
|
+ this.updateById(subscribeDetailDto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delete(Long id) {
|
|
|
+ this.removeById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申购统计(申购单分页)
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> subscribeStatistics(SubscribeDetailSelectDto dto) {
|
|
|
+ //存放申购统计数据
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+
|
|
|
+ //存放申购统计详情数据
|
|
|
+ List<Map<String, Object>> list = new ArrayList<>();
|
|
|
+
|
|
|
+ QueryWrapper<Object> query = Wrappers.query();
|
|
|
+ query.groupBy("pi.type");
|
|
|
+ //查询申购统计(产品类型分组)
|
|
|
+ List<SubscribeDetailVo> subscribeDetailVos = baseMapper.subscribeStatistics(query);
|
|
|
+ Map<String, List<SubscribeDetailVo>> subscribeDetailVoMap = subscribeDetailVos.stream()
|
|
|
+ .collect(Collectors.groupingBy(SubscribeDetailVo::getType));
|
|
|
+
|
|
|
+ //计算申购笔合计数据
|
|
|
+ Integer amount = subscribeDetailVos.stream().map(SubscribeDetailVo::getCounts).reduce(Integer::sum).orElse(0);
|
|
|
+ map.put("amount", amount);
|
|
|
+ //计算申购货品种类合计数据
|
|
|
+ Integer typeAmount = subscribeDetailVos.stream().map(SubscribeDetailVo::getTypeCount).reduce(Integer::sum).orElse(0);
|
|
|
+ map.put("typeAmount", typeAmount);
|
|
|
+ //切换数据源
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
+ //获取产品类型字典数据
|
|
|
+ List<DictTenantDataVo> dictTenantDataVoList = getDict("product_type");
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(dictTenantDataVoList)) {
|
|
|
+ throw new ServiceException("数据有误:产品没有配置产品类型字典,请先添加产品类型字典");
|
|
|
+ }
|
|
|
+
|
|
|
+ //赋值笔数、货品种类数据
|
|
|
+ for (DictTenantDataVo dictTenantDataVo : dictTenantDataVoList) {
|
|
|
+ //设置初始值
|
|
|
+ Map<String, Object> typeMap = new HashMap<>();
|
|
|
+ typeMap.put("type", dictTenantDataVo.getDictValue());
|
|
|
+ typeMap.put("count", 0);
|
|
|
+ typeMap.put("typeCount", 0);
|
|
|
+
|
|
|
+ //赋值
|
|
|
+ List<SubscribeDetailVo> subscribeDetailVoList = subscribeDetailVoMap.get(dictTenantDataVo.getDictKey());
|
|
|
+ if (ObjectUtil.isNotEmpty(subscribeDetailVoList)) {
|
|
|
+ typeMap.put("count", subscribeDetailVoList.get(0).getCounts());
|
|
|
+ typeMap.put("typeCount", subscribeDetailVoList.get(0).getTypeCount());
|
|
|
+ }
|
|
|
+ list.add(typeMap);
|
|
|
+ }
|
|
|
+ map.put("productTypeList", list);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据字典编码获取字典的数据
|
|
|
+ private List<DictTenantDataVo> getDict(String code) {
|
|
|
+ DictTenantDataSelectDto dto = new DictTenantDataSelectDto();
|
|
|
+ dto.setDictCode(code);
|
|
|
+ return dictTenantDataService.getList(dto);
|
|
|
+ }
|
|
|
|
|
|
}
|