瀏覽代碼

问题处理

yzc 1 年之前
父節點
當前提交
96927b5db2

+ 275 - 272
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -55,278 +55,281 @@ import java.util.stream.Collectors;
 @Service
 public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMapper, SubscribeDetail> implements SubscribeDetailService {
 
-    @Autowired
-    private ProductInfoService productInfoService;
-
-    @Autowired
-    private PurchaseDetailService purchaseDetailService;
-
-    @Autowired
-    private DictTenantDataService dictTenantDataService;
-
-    @Autowired
-    private CorporationService corporationService;
-    @Autowired
-    private ISysDeptService deptService;
-
-    /**
-     * 分页
-     *
-     * @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());
-
-        //权限过滤:待采购
-            wrapper.in("t2", SubscribeDetail::getCompanyId, SecurityUtils.getCompanyIds());
-            wrapper.eq("t2", SubscribeDetail::getCompanyId, dto.getCompanyId());
-
-
-        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<SysDept> companyList = deptService.list();
-        Map<Long, String> companyMap = companyList.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
-
-        //获取合同物料数量
-        List<Long> contractIds = records.stream().
-                filter(item -> Objects.equals(item.getDataType(), 1)).map(SubscribeDetail::getContractId).collect(Collectors.toList());
-        List<SubscribeDetailVo> contractCount = new ArrayList<>();
-        if (ObjectUtil.isNotEmpty(contractIds)) {
-            contractCount = baseMapper.getContractCountByContractIds(contractIds);
-        }
-        Map<Long, List<SubscribeDetailVo>> 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);
-
-        // 赋值产品信息
-        for (SubscribeDetailVo record : records) {
-            Map<Long, ProductInfoVo> productMap = productList.stream().collect(Collectors.toMap(ProductInfoVo::getId, Function.identity()));
-            ProductInfoVo productInfo = productMap.get(record.getProductId());
-            record.setProductCode(productInfo.getCustomCode());
-            record.setProductName(productInfo.getName());
-            record.setProductType(productInfo.getType());
-            record.setProductCategory(productInfo.getClassifyName());
-            record.setProductUnit(productInfo.getUnit());
-            record.setProductDefinition(productInfo.getDefinition());
-            record.setProductCustomCode(productInfo.getCustomCode());
-            record.setProductSpec(productInfo.getSpec());
-
-            record.setProductLength(productInfo.getLength());
-            record.setProductWidth(productInfo.getWidth());
-            record.setProductHeight(productInfo.getHeight());
-
-
-            //赋值生产公司名称
-            record.setCompanyName(companyNameMap.get(record.getCompanyId()));
-
-            //赋值生产需求量
-            List<SubscribeDetailVo> 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);
+	@Autowired
+	private ProductInfoService productInfoService;
+
+	@Autowired
+	private PurchaseDetailService purchaseDetailService;
+
+	@Autowired
+	private DictTenantDataService dictTenantDataService;
+
+	@Autowired
+	private CorporationService corporationService;
+	@Autowired
+	private ISysDeptService deptService;
+
+	/**
+	 * 分页
+	 *
+	 * @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());
+
+		//权限过滤:待采购
+		wrapper.in("t2", SubscribeDetail::getCompanyId, SecurityUtils.getCompanyIds());
+		wrapper.eq("t2", SubscribeDetail::getCompanyId, dto.getCompanyId());
+
+
+		wrapper.orderByDesc("t2", SubscribeDetail::getCreateTime);
+
+		//过滤作废的数据
+		wrapper.ne("t2", SubscribeDetail::getStatus, FlowStatusEnum1.CANCELLATION.getKey());
+
+		//过滤要入库的数据
+		wrapper.eq("t2", Subscribe::getIsInStock, 1);
+
+		Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+		List<SubscribeDetailVo> records = page.getRecords();
+
+		if (records.size() == 0) {
+			return page;
+		}
+
+		//获取部门列表
+		List<SysDept> companyList = deptService.list();
+		Map<Long, String> companyMap = companyList.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
+
+		//获取合同物料数量
+		List<Long> contractIds = records.stream().
+				filter(item -> Objects.equals(item.getDataType(), 1)).map(SubscribeDetail::getContractId).collect(Collectors.toList());
+		List<SubscribeDetailVo> contractCount = new ArrayList<>();
+		if (ObjectUtil.isNotEmpty(contractIds)) {
+			contractCount = baseMapper.getContractCountByContractIds(contractIds);
+		}
+		Map<Long, List<SubscribeDetailVo>> 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);
+
+		// 赋值产品信息
+		for (SubscribeDetailVo record : records) {
+			Map<Long, ProductInfoVo> productMap = productList.stream().collect(Collectors.toMap(ProductInfoVo::getId, Function.identity()));
+			ProductInfoVo productInfo = productMap.get(record.getProductId());
+			record.setProductCode(productInfo.getCustomCode());
+			record.setProductName(productInfo.getName());
+			record.setProductType(productInfo.getType());
+			record.setProductCategory(productInfo.getClassifyName());
+			record.setProductUnit(productInfo.getUnit());
+			record.setProductDefinition(productInfo.getDefinition());
+			record.setProductCustomCode(productInfo.getCustomCode());
+			record.setProductSpec(productInfo.getSpec());
+
+			record.setProductLength(productInfo.getLength());
+			record.setProductWidth(productInfo.getWidth());
+			record.setProductHeight(productInfo.getHeight());
+
+
+			//赋值生产公司名称
+			record.setCompanyName(companyNameMap.get(record.getCompanyId()));
+
+			//赋值生产需求量
+			List<SubscribeDetailVo> 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));
-        for (SubscribeDetailVo subscribeDetailVo : records) {
-            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);
-
-
-            //赋值归属公司
-            subscribeDetailVo.setCompanyName(companyMap.get(subscribeDetailVo.getCompanyId()));
-        }
-
-        corporationService.attributeAssign(records, SubscribeDetailVo::getCorporationId, (item, corporation) -> {
-            item.setCorporationName(corporation.getName());
-        });
-
-        //赋值创建人名称
-        UserUtil.assignmentNickName(records, SubscribeDetail::getCreateUser, SubscribeDetailVo::setCreateUserName);
-
-        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);
-    }
+		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)) {
+				subscribeDetailVo.setPurchaseCount(BigDecimal.ZERO);
+				continue;
+			}
+			BigDecimal count = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			subscribeDetailVo.setPurchaseCount(count);
+
+
+			//赋值归属公司
+			subscribeDetailVo.setCompanyName(companyMap.get(subscribeDetailVo.getCompanyId()));
+		}
+
+		corporationService.attributeAssign(records, SubscribeDetailVo::getCorporationId, (item, corporation) -> {
+			item.setCorporationName(corporation.getName());
+		});
+
+		//赋值创建人名称
+		UserUtil.assignmentNickName(records, SubscribeDetail::getCreateUser, SubscribeDetailVo::setCreateUserName);
+
+		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);
+	}
 
 }

+ 181 - 208
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractVo.java

@@ -22,217 +22,184 @@ import java.util.List;
 @Setter
 public class ContractVo extends Contract {
 
-    /**
-     * 买方名称
-     */
-    private String buyCorporationName;
-
-    /**
-     * 卖方名称
-     */
-    private String sellCorporationName;
-
-    /**
-     * 买方国家名称
-     */
-    private String buyCountryName;
-
-    /**
-     * 卖方国家名称
-     */
-    private String sellCountryName;
-
-    /**
-     * 买方省名称
-     */
-    private String buyProvinceName;
-
-    /**
-     * 卖方省名称
-     */
-    private String sellProvinceName;
-
-    /**
-     * 买方市名称
-     */
-    private String buyCityName;
-
-    /**
-     * 卖方市名称
-     */
-    private String sellCityName;
-
-    /**
-     * 时间
-     */
-    private String time;
-
-    /**
-     * 合同产品数量
-     */
-    private BigDecimal cpQuantity;
-
-    /**
-     * 已包装数量
-     */
-    private BigDecimal sumPackQuantity;
-
-    /**
-     * 总额
-     */
-    private BigDecimal sumAmount;
-
-    /**
-     * 合同产品ID
-     */
-    private Long contractProductId;
-
-    /**
-     * 合同个数
-     */
-    private Long contractCount;
-
-    /**
-     * 总到账认领金额
-     */
-    private BigDecimal sumClaimMoney;
-
-    /**
-     * 交接单附件信息
-     */
-    List<FileInfoVo> fileInfoVos;
-
-    /**
-     * 交接单附件信息
-     */
-    List<FileInfoVo> packageFileInfoVOList;
-
-    /**
-     * 客户标签(存在多个用逗号隔开)
-     */
-    private String  tag;
-
-    /**
-     * 客户名称
-     */
-    private String customerName;
-
-    /**
-     * 金额CNY
-     */
-    private BigDecimal amountCNY;
-
-    /**
-     * 新到款状态
-     */
-    private String refundStatusNew;
-
-    private BigDecimal refundMoney;
-
-    public BigDecimal getRefundMoney() {
-        return sumClaimMoney;
-    }
-
-
-    List<ContractProductVo> contractProductList;
-
-
-    List<EhsdPurchase> purchaseList;
-
-
-    List<ContractProject> contractProjectList;
-
-    List<ContractShipment> contractShipmentList;
-
-    /**
-     * 合同类型字典值
-     */
-    private String contractTypeVal;
-
-    /**
-     * 数据来源 类型 1合同 2ehsd样品单
-     */
-    private Integer dataType;
-
-    /**
-     * 合同模板名称
-     */
-    private String contractTemplateName;
-
-    /**
-     * 收款账号
-     */
-    private String shroffAccountName;
-
-    /**
-     * 定金
-     */
-    private BigDecimal earnest;
-
-    /**
-     * 尾款
-     */
-    private BigDecimal finalPayment;
-
-    /**
-     * 到账时间
-     */
-    private Date claimTime;
-
-    /**
-     * 包装条数
-     */
-    private Integer packCount;
-
-    /**
-     * 采购条数
-     */
-    private Integer purchaseCount;
-
-    /**
-     * 跟单条数
-     */
-    private Integer documentaryCount;
-
-    /**
-     * 订单状态
-     */
-    private Integer orderStatus;
-
-    /**
-     * 业务员名称
-     */
-    private String salesmanName;
-
-    /**
-     * 合同到账金额(根据合同币种)
-     */
-    private BigDecimal sumContractClaimMoney;
-
-    /**
-     * 合同未到账金额(未结清金额)(根据合同币种)
-     */
-    private BigDecimal sumContractNotClaimMoney;
+	/**
+	 * 交接单附件信息
+	 */
+	List<FileInfoVo> fileInfoVos;
+	/**
+	 * 交接单附件信息
+	 */
+	List<FileInfoVo> packageFileInfoVOList;
+	List<ContractProductVo> contractProductList;
+	List<EhsdPurchase> purchaseList;
+	List<ContractProject> contractProjectList;
+	List<ContractShipment> contractShipmentList;
+	/**
+	 * 历史毛利信息
+	 */
+	List<ContractBudgetVo.GrossProfitInfo> grossProfitInfoList;
+	/**
+	 * 买方名称
+	 */
+	private String buyCorporationName;
+	/**
+	 * 卖方名称
+	 */
+	private String sellCorporationName;
+	/**
+	 * 买方国家名称
+	 */
+	private String buyCountryName;
+	/**
+	 * 卖方国家名称
+	 */
+	private String sellCountryName;
+	/**
+	 * 买方省名称
+	 */
+	private String buyProvinceName;
+	/**
+	 * 卖方省名称
+	 */
+	private String sellProvinceName;
+	/**
+	 * 买方市名称
+	 */
+	private String buyCityName;
+	/**
+	 * 卖方市名称
+	 */
+	private String sellCityName;
+	/**
+	 * 时间
+	 */
+	private String time;
+	/**
+	 * 合同产品数量
+	 */
+	private BigDecimal cpQuantity;
+	/**
+	 * 已包装数量
+	 */
+	private BigDecimal sumPackQuantity;
+	/**
+	 * 总额
+	 */
+	private BigDecimal sumAmount;
+	/**
+	 * 合同产品ID
+	 */
+	private Long contractProductId;
+	/**
+	 * 合同个数
+	 */
+	private Long contractCount;
+	/**
+	 * 总到账认领金额
+	 */
+	private BigDecimal sumClaimMoney;
+	/**
+	 * 客户标签(存在多个用逗号隔开)
+	 */
+	private String tag;
+	/**
+	 * 客户名称
+	 */
+	private String customerName;
+	/**
+	 * 金额CNY
+	 */
+	private BigDecimal amountCNY;
+	/**
+	 * 新到款状态
+	 */
+	private String refundStatusNew;
+	private BigDecimal refundMoney;
+	/**
+	 * 合同类型字典值
+	 */
+	private String contractTypeVal;
+
+	/**
+	 * 数据来源 类型 1合同 2ehsd样品单
+	 */
+	private Integer dataType;
+
+	/**
+	 * 合同模板名称
+	 */
+	private String contractTemplateName;
+
+	/**
+	 * 收款账号
+	 */
+	private String shroffAccountName;
+
+	/**
+	 * 定金
+	 */
+	private BigDecimal earnest;
+
+	/**
+	 * 尾款
+	 */
+	private BigDecimal finalPayment;
+
+	/**
+	 * 到账时间
+	 */
+	private Date claimTime;
 
-    /**
-     * 历史毛利信息
-     */
-    List<ContractBudgetVo.GrossProfitInfo> grossProfitInfoList;
+	/**
+	 * 包装条数
+	 */
+	private Integer packCount;
 
-    /**
-     * 生产公司名称
-     */
-    private String companyName;
+	/**
+	 * 采购条数
+	 */
+	private Integer purchaseCount;
 
-    /**
-     * 销售部门名称
-     */
-    private String deptName;
+	/**
+	 * 跟单条数
+	 */
+	private Integer documentaryCount;
 
-    /**
-     * 生产状态
-     */
+	/**
+	 * 订单状态
+	 */
+	private Integer orderStatus;
+
+	/**
+	 * 业务员名称
+	 */
+	private String salesmanName;
+
+	/**
+	 * 合同到账金额(根据合同币种)
+	 */
+	private BigDecimal sumContractClaimMoney;
+
+	/**
+	 * 合同未到账金额(未结清金额)(根据合同币种)
+	 */
+	private BigDecimal sumContractNotClaimMoney;
+	/**
+	 * 生产公司名称
+	 */
+	private String companyName;
+	/**
+	 * 销售部门名称
+	 */
+	private String deptName;
+	/**
+	 * 生产状态
+	 */
 	private Integer produceStatus;
+	/**
+	 * 待入库数量
+	 */
+	private BigDecimal waitStockQuantity;
 
 	/**
 	 * 跟单员名称
@@ -240,9 +207,15 @@ public class ContractVo extends Contract {
 	private String merchUserName;
 
 	private String ofCompanyName;
-
-
 	private String createUserName;
+	/**
+	 * 已入库数量
+	 */
+	private BigDecimal receiptStockQuantity;
+
+	public BigDecimal getRefundMoney() {
+		return sumClaimMoney;
+	}
 
 }
 

+ 11 - 11
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -307,17 +307,17 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 	public Page<ContractVo> getPage(ContractSelectDto dto) {
 		IWrapper<Contract> wrapper = getWrapper();
 		setContractParam(dto, wrapper);
-		SysUser sysUser = UserUtil.getUserInfo();
-		if (StringUtils.isEmpty(sysUser.getUserCode())) {//不是业务员看所有
-			return pageCommon(dto, wrapper);
-		} else {//是业务员
-			List<Long> authIdList = customerService.getAuthIdList();
-			if (authIdList.size() == 0) {
-				return new Page<>();
-			}
-			wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
-			return pageCommon(dto, wrapper);
-		}
+//		SysUser sysUser = UserUtil.getUserInfo();
+//		if (StringUtils.isEmpty(sysUser.getUserCode())) {//不是业务员看所有
+		return pageCommon(dto, wrapper);
+//		} else {//是业务员
+//			List<Long> authIdList = customerService.getAuthIdList();
+//			if (authIdList.size() == 0) {
+//				return new Page<>();
+//			}
+//			wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
+//			return pageCommon(dto, wrapper);
+//		}
 	}
 
 	/**

+ 10 - 2
hx-sale/src/main/resources/mapper/contract/ContractMapper.xml

@@ -19,11 +19,19 @@
                            (SELECT IFNULL(SUM(cc.contract_money), 0)
                             FROM claim_contract cc
                             WHERE cc.contract_id = t1.id) AS sumClaimMoney,
-                           po.produce_status
+                           po.produce_status,
+                           IFNULL(t3.quantity, 0)         AS waitStockQuantity,
+                           IFNULL(t3.receipt_quantity, 0) AS receiptStockQuantity
                     FROM contract t1
                              left join customer c on t1.buy_corporation_id = c.id
                              left join sys_user us on c.user_id = us.user_id
-                             LEFT JOIN production_order po ON po.contract_id = t1.id) t1
+                             LEFT JOIN production_order po ON po.contract_id = t1.id
+                             LEFT JOIN (SELECT pod.contract_id,
+                                               IFNULL(sum(swd.quantity), 0)         AS quantity,
+                                               IFNULL(sum(swd.receipt_quantity), 0) AS receipt_quantity
+                                        FROM production_order_detail pod
+                                                 JOIN stock_wait_details swd ON swd.prod_task_id = pod.id
+                                        GROUP BY pod.contract_id) t3 ON t3.contract_id = t1.id) t1
               GROUP BY t1.id) t1
             ${ew.customSqlSegment}
     </select>