Commit b5aad04fee6ed222b343f952517ba424d34f364b

Authored by xqs
1 parent aa12a430

库存汇总根据物料及货主汇总数量

src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/controller/InventoryMaterialSummaryController.java
... ... @@ -80,10 +80,9 @@ public class InventoryMaterialSummaryController extends BaseController {
80 80 .eq(StringUtils.isNotEmpty(inventoryMaterialSummary.getMaterialName()), InventoryMaterialSummary::getMaterialName, inventoryMaterialSummary.getMaterialName());
81 81 //.orderByAsc(InventoryMaterialSummary::getMaterialCode);
82 82  
83   -
84 83 List<InventoryMaterialSummary> list = inventoryMaterialSummaryService.list(lambdaQueryWrapper);
85 84 //筛选库存汇总数据的专用方法
86   - List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.inventoryMaterialSummarySelect(list);
  85 + List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.duplicateRemoval(list);
87 86 if (details == null) {
88 87 details = Collections.emptyList();
89 88 }
... ...
src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryService.java
... ... @@ -8,10 +8,13 @@ import java.util.List;
8 8 public interface InventoryMaterialSummaryService extends IService<InventoryMaterialSummary> {
9 9  
10 10 /**
11   - * 查询库存汇总数据的专用方法
  11 + * 根据物料码去重及累加数量
12 12 * */
13 13 List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList);
14 14  
15   -
  15 + /**
  16 + * 多条件去重及累加数量,货主,物料码
  17 + * */
  18 + List<InventoryMaterialSummary> duplicateRemoval(List<InventoryMaterialSummary> inventoryMaterialSummaryList);
16 19  
17 20 }
... ...
src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryServiceImpl.java
... ... @@ -5,9 +5,9 @@ import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMateria
5 5 import com.huaheng.pc.inventory.InventoryMaterialSummary.mapper.InventoryMaterialSummaryMapper;
6 6 import org.springframework.stereotype.Service;
7 7  
8   -import java.util.ArrayList;
9   -import java.util.HashMap;
10   -import java.util.List;
  8 +import java.math.BigDecimal;
  9 +import java.util.*;
  10 +import java.util.stream.Collectors;
11 11  
12 12  
13 13 @Service
... ... @@ -19,31 +19,61 @@ public class InventoryMaterialSummaryServiceImpl extends ServiceImpl&lt;InventoryMa
19 19  
20 20  
21 21 /**
22   - * 筛选库存汇总数据的专用方法
  22 + * 根据物料码去重及累加数量
23 23 * */
24 24 @Override
25 25 public List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList) {
26   -
27 26 /*以物料为条件把同物料数量全部相加,去重再展示*/
28 27  
  28 + //单物料条件,
29 29 HashMap<String, InventoryMaterialSummary> map = new HashMap<String, InventoryMaterialSummary>();
30 30 for (InventoryMaterialSummary bean : inventoryMaterialSummaryList) {
31   - //单物料条件,
32   - //货主和物料条件(!!!)
  31 + //map.containsKey()方法是判断该key在map中是否有该key值存在。如果存在则返回true。如果不存在则返回false
33 32 if (map.containsKey(bean.getMaterialCode())) {
34 33 bean.setQty(map.get(bean.getMaterialCode()).getQty().add(bean.getQty()));
35 34 }
  35 + //根据物料编码去重,hashMap的put方法不允许相同的键
36 36 map.put(bean.getMaterialCode(), bean);
37 37 }
38   -// inventorys.clear();//清空list
39 38 List<InventoryMaterialSummary> inventoryList = new ArrayList<>();
40 39 inventoryList.addAll(map.values());
41 40  
42 41 return inventoryList;
43 42 }
44 43  
45   -
46   -
  44 + /**
  45 + * 多条件去重
  46 + * 合并数量
  47 + * 多条件去重及累加数量,货主,物料码
  48 + * */
  49 + @Override
  50 + public List<InventoryMaterialSummary> duplicateRemoval(List<InventoryMaterialSummary> inventoryMaterialSummaryList){
  51 + /*********/
  52 + //先找货主和物料码相同的物料SKU相加得总数
  53 + for(InventoryMaterialSummary o:inventoryMaterialSummaryList){
  54 + BigDecimal numQty = BigDecimal.ZERO;
  55 + for (InventoryMaterialSummary t:inventoryMaterialSummaryList){
  56 + if(o.getCompanyCode().equals(t.getCompanyCode()) &&
  57 + o.getMaterialCode().equals(t.getMaterialCode())){
  58 +
  59 + numQty = numQty.add(t.getQty());
  60 + o.setQty(numQty);
  61 + }
  62 + }
  63 + }
  64 + /*此时,inventoryMaterialSummaryList内的全部QTY为货主和物料都相同的库存数量的总数,直接去重即可*/
  65 + //多条件去重
  66 + List<InventoryMaterialSummary> materialSummaryList = new ArrayList<>();
  67 + inventoryMaterialSummaryList.stream().collect(Collectors.collectingAndThen(
  68 + Collectors.toCollection(() -> new TreeSet<>(
  69 + Comparator.comparing(
  70 + inventoryMaterialSummary ->
  71 + inventoryMaterialSummary.getCompanyCode() + ";" + inventoryMaterialSummary.getMaterialCode()))),
  72 + ArrayList::new))
  73 + .forEach(list -> materialSummaryList.add(list));
  74 +
  75 + return materialSummaryList;
  76 + }
47 77  
48 78  
49 79  
... ...
src/main/resources/templates/inventory/inventoryMaterialSummary/inventoryMaterialSummary.html
... ... @@ -28,6 +28,9 @@
28 28 name="createdEnd"/>
29 29 </li>
30 30 <li>
  31 + 货主:<input id="companyCode" type="text" name="companyCode" />
  32 + </li>
  33 + <li>
31 34 <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
32 35 </li>
33 36 </ul>
... ... @@ -85,13 +88,10 @@
85 88 title: '仓库 ',
86 89 visible: true
87 90 },
88   - /*{
89   - field: 'companyCode',
90   - title: '货主编码'
91   - },*/
92 91 {
93   - field: 'qty',
94   - title: '库存总数'
  92 + field: 'companyCode',
  93 + title: '货主编码',
  94 + visible: true
95 95 },
96 96 {
97 97 field: 'materialCode',
... ... @@ -102,6 +102,10 @@
102 102 title: '物料名称'
103 103 },
104 104 {
  105 + field: 'qty',
  106 + title: '库存总数'
  107 + },
  108 + {
105 109 field: 'materialSpec',
106 110 title: '物料规格'
107 111 },
... ...
src/test/java/com.huaheng.test/EncryptPassword.java deleted
1   -package com.huaheng.test;
2   -
3   -import com.huaheng.framework.shiro.service.PasswordService;
4   -
5   -import java.math.BigDecimal;
6   -
7   -public class EncryptPassword {
8   -
9   - public static void main(String[] args) {
10   -// PasswordService passwordService = new PasswordService();
11   -// String psw = passwordService.encryptPassword("superAdmin", "admin123", "3d82fd");
12   -// System.out.println(psw);
13   - BigDecimal sum = new BigDecimal(575);
14   - BigDecimal max = new BigDecimal(400);
15   - System.out.println(sum.compareTo(max));
16   - }
17   -}
src/test/java/com.huaheng.test/User.java 0 → 100644
  1 +package com.huaheng.test;
  2 +
  3 +public class User {
  4 +
  5 + public String name;
  6 +
  7 + public Integer age;
  8 +
  9 + public String sex;
  10 +
  11 +
  12 + public String getName() {
  13 + return name;
  14 + }
  15 +
  16 + public void setName(String name) {
  17 + this.name = name;
  18 + }
  19 +
  20 + public Integer getAge() {
  21 + return age;
  22 + }
  23 +
  24 + public void setAge(Integer age) {
  25 + this.age = age;
  26 + }
  27 +
  28 + public String getSex() {
  29 + return sex;
  30 + }
  31 +
  32 + public void setSex(String sex) {
  33 + this.sex = sex;
  34 + }
  35 +
  36 + @Override
  37 + public String toString() {
  38 + return "User{" +
  39 + "name='" + name + '\'' +
  40 + ", age=" + age +
  41 + ", sex='" + sex + '\'' +
  42 + '}';
  43 + }
  44 +}
... ...
src/test/java/com.huaheng.test/tasting.java 0 → 100644
  1 +package com.huaheng.test;
  2 +
  3 +
  4 +import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMaterialSummary;
  5 +
  6 +import java.math.BigDecimal;
  7 +import java.util.*;
  8 +import java.util.stream.Collectors;
  9 +
  10 +public class tasting {
  11 +
  12 +
  13 + private static List<User> list = new ArrayList<User>();
  14 +
  15 + public static void main(String[] args) {
  16 +
  17 + User user0 = new User();
  18 + user0.setName("小强");
  19 + user0.setAge(11);
  20 + user0.setSex("男");
  21 + list.add(user0);
  22 +
  23 + User user2 = new User();
  24 + user2.setName("小强");
  25 + user2.setAge(15);
  26 + user2.setSex("男");
  27 + list.add(user2);
  28 +
  29 + User user3 = new User();
  30 + user3.setName("小强");
  31 + user3.setAge(23);
  32 + user3.setSex("男");
  33 + list.add(user3);
  34 +
  35 + User user4 = new User();
  36 + user4.setName("小雨");
  37 + user4.setAge(24);
  38 + user4.setSex("女");
  39 + list.add(user4);
  40 +
  41 + User user5 = new User();
  42 + user5.setName("小雨");
  43 + user5.setAge(24);
  44 + user5.setSex("女");
  45 + list.add(user5);
  46 +
  47 + User user6 = new User();
  48 + user6.setName("小雨");
  49 + user6.setAge(15);
  50 + user6.setSex("女");
  51 + list.add(user6);
  52 + System.out.println("原始数据:" + list);
  53 +
  54 + List<User> u = new ArrayList<>();
  55 +
  56 + //先找货主和物料码相同的物料SKU相加得总数
  57 + for(User o:list){
  58 + int numQty = 0;
  59 + for (User t:list){
  60 + if(o.getName().equals(t.getName()) &&
  61 + o.getSex().equals(t.getSex())){
  62 +
  63 + numQty = numQty + t.getAge();
  64 + o.setAge(numQty);
  65 + }
  66 + }
  67 + }
  68 +
  69 + //多条件去重
  70 + list.stream().collect(Collectors.collectingAndThen(
  71 + Collectors.toCollection(() -> new TreeSet<>(
  72 + Comparator.comparing(user -> user.getSex() + ";" + user.getName()))), ArrayList::new))
  73 + .forEach(user -> u.add(user));
  74 +
  75 + System.out.println("多条件去重后数据:" + u);
  76 +
  77 +
  78 + }
  79 +
  80 +
  81 +
  82 +
  83 +
  84 +}
... ...