Commit b5aad04fee6ed222b343f952517ba424d34f364b
1 parent
aa12a430
库存汇总根据物料及货主汇总数量
Showing
7 changed files
with
184 additions
and
37 deletions
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<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> 搜索</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 | +} | |
... | ... |