|
@@ -58,9 +58,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -135,7 +133,16 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
|
|
|
if (ObjectUtils.isNotEmpty(dto.getPayStatus())) {
|
|
|
wrapper.eq("p", Purchase::getPayStatus, dto.getPayStatus());
|
|
|
}
|
|
|
+
|
|
|
+ wrapper.like("p",Purchase::getCode,dto.getCode());//采购单号
|
|
|
+ wrapper.eq("p",Purchase::getSupplyId,dto.getSupplyId());//供应商ID
|
|
|
+
|
|
|
wrapper.eq("p", Purchase::getCode, dto.getKeyword());//根据采购单号关键字搜索
|
|
|
+
|
|
|
+ wrapper.ge("p",Purchase::getAmount,dto.getStartAmount());//采购开始金额
|
|
|
+ wrapper.le("p",Purchase::getAmount,dto.getEndAmount());//采购结束金额
|
|
|
+ wrapper.ge("P",Purchase::getCreateTime,dto.getBeginTime());//采购开始时间
|
|
|
+ wrapper.le("p",Purchase::getCreateTime,dto.getEndTime());//采购结束时间
|
|
|
Page<PurchaseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
List<PurchaseVo> list = page.getRecords();
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
@@ -463,6 +470,51 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 采购统计(采购列表)
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String,Object> purchaseStatistics(PurchaseSelectDto dto) {
|
|
|
+ //存放到货状态
|
|
|
+ List<Integer> arrivalStatus = Arrays.asList(0, 10, 20);//到货状态 0未到货 10 部分到货 20已到货
|
|
|
+
|
|
|
+ //存放采购统计数据
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ //存放采购统计详情
|
|
|
+ List<Map<String,Object>> list = new ArrayList<>();
|
|
|
+
|
|
|
+ QueryWrapper<Purchase> query = Wrappers.query();
|
|
|
+ query.select("count(*) count,sum(amount) amount,ifnull(arrival_status,-1) arrivalStatus");
|
|
|
+ query.groupBy("arrival_status");
|
|
|
+ List<Purchase> purchaseList = baseMapper.selectList(query);
|
|
|
+ //计算合计订单数
|
|
|
+ Integer count = purchaseList.stream().map(Purchase::getCount).reduce(Integer::sum).orElse(0);
|
|
|
+ map.put("count",count);
|
|
|
+ //计算合计采购金额
|
|
|
+ BigDecimal amount = purchaseList.stream().map(Purchase::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ map.put("amount",amount);
|
|
|
+ Map<Integer, List<Purchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(Purchase::getArrivalStatus));
|
|
|
+
|
|
|
+ //获取到每个到货状态的值
|
|
|
+ for (Integer status : arrivalStatus) {
|
|
|
+ //赋值初始值
|
|
|
+ Map<String,Object> statusMap = new HashMap<>();
|
|
|
+ statusMap.put("arrivalStatus",status);
|
|
|
+ statusMap.put("purchaseCount",0);
|
|
|
+ statusMap.put("purchaseAmount",0);
|
|
|
+
|
|
|
+ //赋值
|
|
|
+ List<Purchase> purchases = purchaseMap.get(status);
|
|
|
+ if (CollectionUtils.isNotEmpty(purchases)){
|
|
|
+ statusMap.put("purchaseCount",purchases.get(0).getCount());
|
|
|
+ statusMap.put("purchaseAmount",purchases.get(0).getAmount());
|
|
|
+ }
|
|
|
+ list.add(statusMap);
|
|
|
+ }
|
|
|
+ map.put("purchaseList",list);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Page<? extends DocumentaryData> getDocumentaryPage(JSONObject selectData, BaseSelectDto
|
|
|
dto, List<Long> excludeBusinessId) {
|