diff --git a/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/controller/InventoryMaterialSummaryController.java b/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/controller/InventoryMaterialSummaryController.java index 71de5d4..5973e47 100644 --- a/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/controller/InventoryMaterialSummaryController.java +++ b/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/controller/InventoryMaterialSummaryController.java @@ -80,10 +80,9 @@ public class InventoryMaterialSummaryController extends BaseController { .eq(StringUtils.isNotEmpty(inventoryMaterialSummary.getMaterialName()), InventoryMaterialSummary::getMaterialName, inventoryMaterialSummary.getMaterialName()); //.orderByAsc(InventoryMaterialSummary::getMaterialCode); - List<InventoryMaterialSummary> list = inventoryMaterialSummaryService.list(lambdaQueryWrapper); //筛选库存汇总数据的专用方法 - List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.inventoryMaterialSummarySelect(list); + List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.duplicateRemoval(list); if (details == null) { details = Collections.emptyList(); } diff --git a/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryService.java b/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryService.java index e5f7986..2ee5ad2 100644 --- a/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryService.java +++ b/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryService.java @@ -8,10 +8,13 @@ import java.util.List; public interface InventoryMaterialSummaryService extends IService<InventoryMaterialSummary> { /** - * 查询库存汇总数据的专用方法 + * 根据物料码去重及累加数量 * */ List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList); - + /** + * 多条件去重及累加数量,货主,物料码 + * */ + List<InventoryMaterialSummary> duplicateRemoval(List<InventoryMaterialSummary> inventoryMaterialSummaryList); } diff --git a/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryServiceImpl.java index e628445..e9b943f 100644 --- a/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryServiceImpl.java +++ b/src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/service/InventoryMaterialSummaryServiceImpl.java @@ -5,9 +5,9 @@ import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMateria import com.huaheng.pc.inventory.InventoryMaterialSummary.mapper.InventoryMaterialSummaryMapper; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; @Service @@ -19,31 +19,61 @@ public class InventoryMaterialSummaryServiceImpl extends ServiceImpl<InventoryMa /** - * 筛选库存汇总数据的专用方法 + * 根据物料码去重及累加数量 * */ @Override public List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList) { - /*以物料为条件把同物料数量全部相加,去重再展示*/ + //单物料条件, HashMap<String, InventoryMaterialSummary> map = new HashMap<String, InventoryMaterialSummary>(); for (InventoryMaterialSummary bean : inventoryMaterialSummaryList) { - //单物料条件, - //货主和物料条件(!!!) + //map.containsKey()方法是判断该key在map中是否有该key值存在。如果存在则返回true。如果不存在则返回false if (map.containsKey(bean.getMaterialCode())) { bean.setQty(map.get(bean.getMaterialCode()).getQty().add(bean.getQty())); } + //根据物料编码去重,hashMap的put方法不允许相同的键 map.put(bean.getMaterialCode(), bean); } -// inventorys.clear();//清空list List<InventoryMaterialSummary> inventoryList = new ArrayList<>(); inventoryList.addAll(map.values()); return inventoryList; } - - + /** + * 多条件去重 + * 合并数量 + * 多条件去重及累加数量,货主,物料码 + * */ + @Override + public List<InventoryMaterialSummary> duplicateRemoval(List<InventoryMaterialSummary> inventoryMaterialSummaryList){ + /*********/ + //先找货主和物料码相同的物料SKU相加得总数 + for(InventoryMaterialSummary o:inventoryMaterialSummaryList){ + BigDecimal numQty = BigDecimal.ZERO; + for (InventoryMaterialSummary t:inventoryMaterialSummaryList){ + if(o.getCompanyCode().equals(t.getCompanyCode()) && + o.getMaterialCode().equals(t.getMaterialCode())){ + + numQty = numQty.add(t.getQty()); + o.setQty(numQty); + } + } + } + /*此时,inventoryMaterialSummaryList内的全部QTY为货主和物料都相同的库存数量的总数,直接去重即可*/ + //多条件去重 + List<InventoryMaterialSummary> materialSummaryList = new ArrayList<>(); + inventoryMaterialSummaryList.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing( + inventoryMaterialSummary -> + inventoryMaterialSummary.getCompanyCode() + ";" + inventoryMaterialSummary.getMaterialCode()))), + ArrayList::new)) + .forEach(list -> materialSummaryList.add(list)); + + return materialSummaryList; + } diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java index b8fe472..e5936bc 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java @@ -71,7 +71,7 @@ public class adjustDetailController extends BaseController { .eq(AdjustDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库 .eq(adjustDetail.getId() != null, AdjustDetail::getId, adjustDetail.getId())//ID .eq(StringUtils.isNotEmpty(adjustDetail.getAdjustHeaderCode()),AdjustDetail::getAdjustHeaderCode,adjustDetail.getAdjustHeaderCode())//调整单编码 - .eq(StringUtils.isNotEmpty(adjustDetail.getCompanyCode()),AdjustDetail::getCompanyCode,adjustDetail.getCompanyCode())//货主 + .in(AdjustDetail::getCompanyCode,ShiroUtils.getCompanyCodeList())//货主 .eq(StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode()),AdjustDetail::getCycleCountHeaderCode,adjustDetail.getCycleCountHeaderCode())//盘单编码 .eq(adjustDetail.getCycleCountDetailId() != null ,AdjustDetail::getCycleCountHeaderCode,adjustDetail.getCycleCountHeaderCode())//盘点明细 .eq(StringUtils.isNotEmpty(adjustDetail.getCheckHeaderCode()),AdjustDetail::getCheckHeaderCode,adjustDetail.getCheckHeaderCode())//质检单编码 diff --git a/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java b/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java index 4ff8be5..6c6c29c 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java @@ -65,12 +65,13 @@ public class adjustHeaderController extends BaseController { .le(StringUtils.isNotEmpty(createdEnd), AdjustHeader::getCreated, createdEnd)//创建时间范围 .eq(AdjustHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库 .eq(StringUtils.isNotEmpty(adjustHeader.getCode()),AdjustHeader::getCode,adjustHeader.getCode())//调整单编码 - .eq(StringUtils.isNotEmpty(adjustHeader.getCompanyCode()),AdjustHeader::getCompanyCode,adjustHeader.getCompanyCode())//货主 .eq(StringUtils.isNotEmpty(adjustHeader.getProblemType()),AdjustHeader::getProblemType,adjustHeader.getProblemType())//调整类型 .eq(StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()),AdjustHeader::getCycleCountHeaderCode,adjustHeader.getCycleCountHeaderCode())//盘点单号 .eq(StringUtils.isNotEmpty(adjustHeader.getCheckHeaderCode()),AdjustHeader::getCheckHeaderCode,adjustHeader.getCheckHeaderCode())//质检单号 .eq(StringUtils.isNotEmpty(adjustHeader.getReferCode()),AdjustHeader::getReferCode,adjustHeader.getReferCode())//上游单编码 .eq(StringUtils.isNotEmpty(adjustHeader.getCreatedBy()),AdjustHeader::getCreatedBy,adjustHeader.getCreatedBy())//创建人 + //货主 + .in(AdjustHeader::getCompanyCode, ShiroUtils.getCompanyCodeList()) .orderByDesc(AdjustHeader::getId); diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryDetail/controller/InventoryDetailController.java b/src/main/java/com/huaheng/pc/inventory/inventoryDetail/controller/InventoryDetailController.java index 7228398..0b8207e 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryDetail/controller/InventoryDetailController.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryDetail/controller/InventoryDetailController.java @@ -73,7 +73,6 @@ public class InventoryDetailController extends BaseController .eq(inventoryDetail.getInventoryHeaderId() != null,InventoryDetail::getInventoryHeaderId,inventoryDetail.getInventoryHeaderId()) //ID .eq(StringUtils.isNotEmpty(inventoryDetail.getLocationCode()),InventoryDetail::getLocationCode,inventoryDetail.getLocationCode()) //库位 .eq(StringUtils.isNotEmpty(inventoryDetail.getContainerCode()),InventoryDetail::getContainerCode,inventoryDetail.getContainerCode())//容器 - .eq(StringUtils.isNotEmpty(inventoryDetail.getCompanyCode()),InventoryDetail::getCompanyCode,inventoryDetail.getCompanyCode())//货主 .eq(StringUtils.isNotEmpty(inventoryDetail.getSupplierCode()),InventoryDetail::getSupplierCode,inventoryDetail.getSupplierCode())//供应商 .eq(StringUtils.isNotEmpty(inventoryDetail.getMaterialCode()),InventoryDetail::getMaterialCode,inventoryDetail.getMaterialCode())//物料编码 .like(StringUtils.isNotEmpty(inventoryDetail.getMaterialName()),InventoryDetail::getMaterialName,inventoryDetail.getMaterialName())//物料名称 @@ -87,6 +86,8 @@ public class InventoryDetailController extends BaseController .eq(StringUtils.isNotEmpty(inventoryDetail.getReferCode()),InventoryDetail::getReferCode,inventoryDetail.getReferCode())//上游单号 .eq(StringUtils.isNotEmpty(inventoryDetail.getReferDetailId()),InventoryDetail::getReferDetailId,inventoryDetail.getReferDetailId())//上游行号 .eq(StringUtils.isNotEmpty(inventoryDetail.getLockCode()),InventoryDetail::getLockCode,inventoryDetail.getLockCode())//库存锁 + //货主 + .in(InventoryDetail::getCompanyCode, ShiroUtils.getCompanyCodeList()) .orderByDesc(InventoryDetail::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java index d6a3200..60421da 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java @@ -71,9 +71,10 @@ public class InventoryHeaderController extends BaseController .eq(InventoryHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())//仓库 .eq(StringUtils.isNotEmpty(inventoryHeader.getLocationCode()),InventoryHeader::getLocationCode,inventoryHeader.getLocationCode()) //库位 .eq(StringUtils.isNotEmpty(inventoryHeader.getContainerCode()),InventoryHeader::getContainerCode,inventoryHeader.getContainerCode())//容器 - .eq(StringUtils.isNotEmpty(inventoryHeader.getCompanyCode()), InventoryHeader::getCompanyCode,inventoryHeader.getCompanyCode())//货主 .eq(StringUtils.isNotEmpty(inventoryHeader.getCreatedBy()),InventoryHeader::getCreatedBy,inventoryHeader.getCreatedBy())//创建用户 .eq(StringUtils.isNotEmpty(inventoryHeader.getLastUpdatedBy()),InventoryHeader::getLastUpdatedBy,inventoryHeader.getLastUpdatedBy())//更新用户 + //货主 + .in(InventoryHeader::getCompanyCode, ShiroUtils.getCompanyCodeList()) .orderByDesc(InventoryHeader::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java index 02cf7c2..7c858d0 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java @@ -12,6 +12,7 @@ import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; +import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMaterialSummary; import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; @@ -70,7 +71,6 @@ public class InventoryTransactionController extends BaseController{ .eq(InventoryTransaction::getWarehouseCode,ShiroUtils.getWarehouseCode())//仓库 .eq(StringUtils.isNotEmpty(inventoryTransaction.getLocationCode()), InventoryTransaction::getLocationCode,inventoryTransaction.getLocationCode()) //库位 .eq(StringUtils.isNotEmpty(inventoryTransaction.getContainerCode()),InventoryTransaction::getContainerCode,inventoryTransaction.getContainerCode())//容器 - .eq(StringUtils.isNotEmpty(inventoryTransaction.getCompanyCode()),InventoryTransaction::getCompanyCode,inventoryTransaction.getCompanyCode())//货主 .eq(StringUtils.isNotEmpty(inventoryTransaction.getSupplierCode()), InventoryTransaction::getSupplierCode,inventoryTransaction.getSupplierCode())//供应商 .eq(StringUtils.isNotEmpty(inventoryTransaction.getMaterialCode()),InventoryTransaction::getMaterialCode,inventoryTransaction.getMaterialCode())//物料编码 .like(StringUtils.isNotEmpty(inventoryTransaction.getMaterialName()),InventoryTransaction::getMaterialName,inventoryTransaction.getMaterialName())//物料名称 @@ -82,7 +82,8 @@ public class InventoryTransactionController extends BaseController{ .eq(StringUtils.isNotEmpty(inventoryTransaction.getBillCode()), InventoryTransaction::getBillCode,inventoryTransaction.getBillCode())//出入库单编码 .eq(inventoryTransaction.getTransactionType() != null,InventoryTransaction::getTransactionType,inventoryTransaction.getTransactionType()) // 交易类型 .eq(StringUtils.isNotEmpty(inventoryTransaction.getReferCode()),InventoryTransaction::getReferCode,inventoryTransaction.getReferCode())//上游单号 - + //货主 + .in(InventoryTransaction::getCompanyCode, ShiroUtils.getCompanyCodeList()) .orderByDesc(InventoryTransaction::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index 7cbd476..1acf819 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -7496,10 +7496,11 @@ body.skin-yellow { } .input_list ul{ width:100%; - padding: 5px 0; + padding:3px 0; } .input_list li{ width:25%; + padding: 3px 0; display:inline-flex; } .input_list li label{ @@ -7512,4 +7513,13 @@ body.skin-yellow { } .div1 img:hover{ cursor: pointer; +} + +@media (max-width:1200px) { + .input_list li{ + width:45%;} +} +@media (max-width:768px) { + .input_list li{ + width:100%;} } \ No newline at end of file diff --git a/src/main/resources/templates/inventory/inventoryMaterialSummary/inventoryMaterialSummary.html b/src/main/resources/templates/inventory/inventoryMaterialSummary/inventoryMaterialSummary.html index 2fa9958..1af21df 100644 --- a/src/main/resources/templates/inventory/inventoryMaterialSummary/inventoryMaterialSummary.html +++ b/src/main/resources/templates/inventory/inventoryMaterialSummary/inventoryMaterialSummary.html @@ -20,7 +20,7 @@ 物料名称:<input id="materialName" type="text" name="materialName" /> </li> <li class="time"> - <label>创建时间: </label> + <label>创建时间:</label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> @@ -28,6 +28,9 @@ name="createdEnd"/> </li> <li> + 货主:<input id="companyCode" type="text" name="companyCode" /> + </li> + <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> </li> </ul> @@ -64,7 +67,8 @@ refresh:true, showToggle: false, showColumns: false, - showExport: true, //是否添加导出按钮 + showExport: true, //导出 + exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 detailView: true, pagination: true, sidePagination: "client", //前端分页 @@ -84,13 +88,10 @@ title: '仓库 ', visible: true }, - /*{ - field: 'companyCode', - title: '货主编码' - },*/ { - field: 'qty', - title: '库存总数' + field: 'companyCode', + title: '货主编码', + visible: true }, { field: 'materialCode', @@ -101,6 +102,10 @@ title: '物料名称' }, { + field: 'qty', + title: '库存总数' + }, + { field: 'materialSpec', title: '物料规格' }, diff --git a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html index 68e4073..1edbe8a 100644 --- a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html +++ b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html @@ -58,13 +58,12 @@ <li> 项 目 号:<input type="text" name="projectNo"/> </li> - AjaxResult.error("单据号为"+receiptHeader.getCode()+"入库单不需要审核"); <li> + <li> 交易类型:<select name="type" th:with="type=${@dict.getType('inventoryTransactionType')}"> <option value="">所有</option> <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> - <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> @@ -82,10 +81,10 @@ </div> <div class="col-sm-12 select-info"> <div class="btn-group hidden-xs" id="toolbar" role="group"> - <a class="btn btn-outline btn-success btn-rounded" onclick="report()" + <!--<a class="btn btn-outline btn-success btn-rounded" onclick="report()" shiro:hasPermission="inventory:inventoryTransaction:report"> <i class="fa fa-plus"></i> 打印 - </a> + </a>--> </div> <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> </div> @@ -113,7 +112,7 @@ sortName: "id", sortOrder: "desc", showExport: true, //导出 - exportDataType: "selected", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 + exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 pagination:true, pageNumber: 1, // 初始化加载第一页,默认第一页 pageSize: 10, // 每页的记录行数(*) diff --git a/src/main/resources/templates/monitor/locationstatus/locationstatus.html b/src/main/resources/templates/monitor/locationstatus/locationstatus.html index 3ae01b2..8f9655a 100644 --- a/src/main/resources/templates/monitor/locationstatus/locationstatus.html +++ b/src/main/resources/templates/monitor/locationstatus/locationstatus.html @@ -9,13 +9,14 @@ font-size: 10px; /*width: 50px;*/ text-align: left; - margin: auto 3px; + margin: 5px 20px 5px 5px; } #img_list li img{ height: 35px; width: 35px; } #info_list{ + width: 100%; display:inline-block; } #info_list li{ diff --git a/src/test/java/com.huaheng.test/EncryptPassword.java b/src/test/java/com.huaheng.test/EncryptPassword.java deleted file mode 100644 index 8e93b5e..0000000 --- a/src/test/java/com.huaheng.test/EncryptPassword.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.huaheng.test; - -import com.huaheng.framework.shiro.service.PasswordService; - -import java.math.BigDecimal; - -public class EncryptPassword { - - public static void main(String[] args) { -// PasswordService passwordService = new PasswordService(); -// String psw = passwordService.encryptPassword("superAdmin", "admin123", "3d82fd"); -// System.out.println(psw); - BigDecimal sum = new BigDecimal(575); - BigDecimal max = new BigDecimal(400); - System.out.println(sum.compareTo(max)); - } -} diff --git a/src/test/java/com.huaheng.test/User.java b/src/test/java/com.huaheng.test/User.java new file mode 100644 index 0000000..61606cd --- /dev/null +++ b/src/test/java/com.huaheng.test/User.java @@ -0,0 +1,44 @@ +package com.huaheng.test; + +public class User { + + public String name; + + public Integer age; + + public String sex; + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + @Override + public String toString() { + return "User{" + + "name='" + name + '\'' + + ", age=" + age + + ", sex='" + sex + '\'' + + '}'; + } +} diff --git a/src/test/java/com.huaheng.test/tasting.java b/src/test/java/com.huaheng.test/tasting.java new file mode 100644 index 0000000..9b356b8 --- /dev/null +++ b/src/test/java/com.huaheng.test/tasting.java @@ -0,0 +1,84 @@ +package com.huaheng.test; + + +import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMaterialSummary; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +public class tasting { + + + private static List<User> list = new ArrayList<User>(); + + public static void main(String[] args) { + + User user0 = new User(); + user0.setName("小强"); + user0.setAge(11); + user0.setSex("男"); + list.add(user0); + + User user2 = new User(); + user2.setName("小强"); + user2.setAge(15); + user2.setSex("男"); + list.add(user2); + + User user3 = new User(); + user3.setName("小强"); + user3.setAge(23); + user3.setSex("男"); + list.add(user3); + + User user4 = new User(); + user4.setName("小雨"); + user4.setAge(24); + user4.setSex("女"); + list.add(user4); + + User user5 = new User(); + user5.setName("小雨"); + user5.setAge(24); + user5.setSex("女"); + list.add(user5); + + User user6 = new User(); + user6.setName("小雨"); + user6.setAge(15); + user6.setSex("女"); + list.add(user6); + System.out.println("原始数据:" + list); + + List<User> u = new ArrayList<>(); + + //先找货主和物料码相同的物料SKU相加得总数 + for(User o:list){ + int numQty = 0; + for (User t:list){ + if(o.getName().equals(t.getName()) && + o.getSex().equals(t.getSex())){ + + numQty = numQty + t.getAge(); + o.setAge(numQty); + } + } + } + + //多条件去重 + list.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing(user -> user.getSex() + ";" + user.getName()))), ArrayList::new)) + .forEach(user -> u.add(user)); + + System.out.println("多条件去重后数据:" + u); + + + } + + + + + +}