Commit 9ef590f4e31d3ca742c5e0f82d5699bf94d0176e
Merge remote-tracking branch 'origin/develop' into develop
# Conflicts: # src/main/resources/templates/config/receiptPreference/list.html
Showing
15 changed files
with
214 additions
and
52 deletions
src/main/java/com/huaheng/pc/inventory/InventoryMaterialSummary/controller/InventoryMaterialSummaryController.java
@@ -80,10 +80,9 @@ public class InventoryMaterialSummaryController extends BaseController { | @@ -80,10 +80,9 @@ public class InventoryMaterialSummaryController extends BaseController { | ||
80 | .eq(StringUtils.isNotEmpty(inventoryMaterialSummary.getMaterialName()), InventoryMaterialSummary::getMaterialName, inventoryMaterialSummary.getMaterialName()); | 80 | .eq(StringUtils.isNotEmpty(inventoryMaterialSummary.getMaterialName()), InventoryMaterialSummary::getMaterialName, inventoryMaterialSummary.getMaterialName()); |
81 | //.orderByAsc(InventoryMaterialSummary::getMaterialCode); | 81 | //.orderByAsc(InventoryMaterialSummary::getMaterialCode); |
82 | 82 | ||
83 | - | ||
84 | List<InventoryMaterialSummary> list = inventoryMaterialSummaryService.list(lambdaQueryWrapper); | 83 | List<InventoryMaterialSummary> list = inventoryMaterialSummaryService.list(lambdaQueryWrapper); |
85 | //筛选库存汇总数据的专用方法 | 84 | //筛选库存汇总数据的专用方法 |
86 | - List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.inventoryMaterialSummarySelect(list); | 85 | + List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.duplicateRemoval(list); |
87 | if (details == null) { | 86 | if (details == null) { |
88 | details = Collections.emptyList(); | 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,10 +8,13 @@ import java.util.List; | ||
8 | public interface InventoryMaterialSummaryService extends IService<InventoryMaterialSummary> { | 8 | public interface InventoryMaterialSummaryService extends IService<InventoryMaterialSummary> { |
9 | 9 | ||
10 | /** | 10 | /** |
11 | - * 查询库存汇总数据的专用方法 | 11 | + * 根据物料码去重及累加数量 |
12 | * */ | 12 | * */ |
13 | List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList); | 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,9 +5,9 @@ import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMateria | ||
5 | import com.huaheng.pc.inventory.InventoryMaterialSummary.mapper.InventoryMaterialSummaryMapper; | 5 | import com.huaheng.pc.inventory.InventoryMaterialSummary.mapper.InventoryMaterialSummaryMapper; |
6 | import org.springframework.stereotype.Service; | 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 | @Service | 13 | @Service |
@@ -19,31 +19,61 @@ public class InventoryMaterialSummaryServiceImpl extends ServiceImpl<InventoryMa | @@ -19,31 +19,61 @@ public class InventoryMaterialSummaryServiceImpl extends ServiceImpl<InventoryMa | ||
19 | 19 | ||
20 | 20 | ||
21 | /** | 21 | /** |
22 | - * 筛选库存汇总数据的专用方法 | 22 | + * 根据物料码去重及累加数量 |
23 | * */ | 23 | * */ |
24 | @Override | 24 | @Override |
25 | public List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList) { | 25 | public List<InventoryMaterialSummary> inventoryMaterialSummarySelect(List<InventoryMaterialSummary> inventoryMaterialSummaryList) { |
26 | - | ||
27 | /*以物料为条件把同物料数量全部相加,去重再展示*/ | 26 | /*以物料为条件把同物料数量全部相加,去重再展示*/ |
28 | 27 | ||
28 | + //单物料条件, | ||
29 | HashMap<String, InventoryMaterialSummary> map = new HashMap<String, InventoryMaterialSummary>(); | 29 | HashMap<String, InventoryMaterialSummary> map = new HashMap<String, InventoryMaterialSummary>(); |
30 | for (InventoryMaterialSummary bean : inventoryMaterialSummaryList) { | 30 | for (InventoryMaterialSummary bean : inventoryMaterialSummaryList) { |
31 | - //单物料条件, | ||
32 | - //货主和物料条件(!!!) | 31 | + //map.containsKey()方法是判断该key在map中是否有该key值存在。如果存在则返回true。如果不存在则返回false |
33 | if (map.containsKey(bean.getMaterialCode())) { | 32 | if (map.containsKey(bean.getMaterialCode())) { |
34 | bean.setQty(map.get(bean.getMaterialCode()).getQty().add(bean.getQty())); | 33 | bean.setQty(map.get(bean.getMaterialCode()).getQty().add(bean.getQty())); |
35 | } | 34 | } |
35 | + //根据物料编码去重,hashMap的put方法不允许相同的键 | ||
36 | map.put(bean.getMaterialCode(), bean); | 36 | map.put(bean.getMaterialCode(), bean); |
37 | } | 37 | } |
38 | -// inventorys.clear();//清空list | ||
39 | List<InventoryMaterialSummary> inventoryList = new ArrayList<>(); | 38 | List<InventoryMaterialSummary> inventoryList = new ArrayList<>(); |
40 | inventoryList.addAll(map.values()); | 39 | inventoryList.addAll(map.values()); |
41 | 40 | ||
42 | return inventoryList; | 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/java/com/huaheng/pc/inventory/adjustDetail/controller/adjustDetailController.java
@@ -71,7 +71,7 @@ public class adjustDetailController extends BaseController { | @@ -71,7 +71,7 @@ public class adjustDetailController extends BaseController { | ||
71 | .eq(AdjustDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库 | 71 | .eq(AdjustDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库 |
72 | .eq(adjustDetail.getId() != null, AdjustDetail::getId, adjustDetail.getId())//ID | 72 | .eq(adjustDetail.getId() != null, AdjustDetail::getId, adjustDetail.getId())//ID |
73 | .eq(StringUtils.isNotEmpty(adjustDetail.getAdjustHeaderCode()),AdjustDetail::getAdjustHeaderCode,adjustDetail.getAdjustHeaderCode())//调整单编码 | 73 | .eq(StringUtils.isNotEmpty(adjustDetail.getAdjustHeaderCode()),AdjustDetail::getAdjustHeaderCode,adjustDetail.getAdjustHeaderCode())//调整单编码 |
74 | - .eq(StringUtils.isNotEmpty(adjustDetail.getCompanyCode()),AdjustDetail::getCompanyCode,adjustDetail.getCompanyCode())//货主 | 74 | + .in(AdjustDetail::getCompanyCode,ShiroUtils.getCompanyCodeList())//货主 |
75 | .eq(StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode()),AdjustDetail::getCycleCountHeaderCode,adjustDetail.getCycleCountHeaderCode())//盘单编码 | 75 | .eq(StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode()),AdjustDetail::getCycleCountHeaderCode,adjustDetail.getCycleCountHeaderCode())//盘单编码 |
76 | .eq(adjustDetail.getCycleCountDetailId() != null ,AdjustDetail::getCycleCountHeaderCode,adjustDetail.getCycleCountHeaderCode())//盘点明细 | 76 | .eq(adjustDetail.getCycleCountDetailId() != null ,AdjustDetail::getCycleCountHeaderCode,adjustDetail.getCycleCountHeaderCode())//盘点明细 |
77 | .eq(StringUtils.isNotEmpty(adjustDetail.getCheckHeaderCode()),AdjustDetail::getCheckHeaderCode,adjustDetail.getCheckHeaderCode())//质检单编码 | 77 | .eq(StringUtils.isNotEmpty(adjustDetail.getCheckHeaderCode()),AdjustDetail::getCheckHeaderCode,adjustDetail.getCheckHeaderCode())//质检单编码 |
src/main/java/com/huaheng/pc/inventory/adjustHeader/controller/adjustHeaderController.java
@@ -65,12 +65,13 @@ public class adjustHeaderController extends BaseController { | @@ -65,12 +65,13 @@ public class adjustHeaderController extends BaseController { | ||
65 | .le(StringUtils.isNotEmpty(createdEnd), AdjustHeader::getCreated, createdEnd)//创建时间范围 | 65 | .le(StringUtils.isNotEmpty(createdEnd), AdjustHeader::getCreated, createdEnd)//创建时间范围 |
66 | .eq(AdjustHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库 | 66 | .eq(AdjustHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) //仓库 |
67 | .eq(StringUtils.isNotEmpty(adjustHeader.getCode()),AdjustHeader::getCode,adjustHeader.getCode())//调整单编码 | 67 | .eq(StringUtils.isNotEmpty(adjustHeader.getCode()),AdjustHeader::getCode,adjustHeader.getCode())//调整单编码 |
68 | - .eq(StringUtils.isNotEmpty(adjustHeader.getCompanyCode()),AdjustHeader::getCompanyCode,adjustHeader.getCompanyCode())//货主 | ||
69 | .eq(StringUtils.isNotEmpty(adjustHeader.getProblemType()),AdjustHeader::getProblemType,adjustHeader.getProblemType())//调整类型 | 68 | .eq(StringUtils.isNotEmpty(adjustHeader.getProblemType()),AdjustHeader::getProblemType,adjustHeader.getProblemType())//调整类型 |
70 | .eq(StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()),AdjustHeader::getCycleCountHeaderCode,adjustHeader.getCycleCountHeaderCode())//盘点单号 | 69 | .eq(StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()),AdjustHeader::getCycleCountHeaderCode,adjustHeader.getCycleCountHeaderCode())//盘点单号 |
71 | .eq(StringUtils.isNotEmpty(adjustHeader.getCheckHeaderCode()),AdjustHeader::getCheckHeaderCode,adjustHeader.getCheckHeaderCode())//质检单号 | 70 | .eq(StringUtils.isNotEmpty(adjustHeader.getCheckHeaderCode()),AdjustHeader::getCheckHeaderCode,adjustHeader.getCheckHeaderCode())//质检单号 |
72 | .eq(StringUtils.isNotEmpty(adjustHeader.getReferCode()),AdjustHeader::getReferCode,adjustHeader.getReferCode())//上游单编码 | 71 | .eq(StringUtils.isNotEmpty(adjustHeader.getReferCode()),AdjustHeader::getReferCode,adjustHeader.getReferCode())//上游单编码 |
73 | .eq(StringUtils.isNotEmpty(adjustHeader.getCreatedBy()),AdjustHeader::getCreatedBy,adjustHeader.getCreatedBy())//创建人 | 72 | .eq(StringUtils.isNotEmpty(adjustHeader.getCreatedBy()),AdjustHeader::getCreatedBy,adjustHeader.getCreatedBy())//创建人 |
73 | + //货主 | ||
74 | + .in(AdjustHeader::getCompanyCode, ShiroUtils.getCompanyCodeList()) | ||
74 | 75 | ||
75 | .orderByDesc(AdjustHeader::getId); | 76 | .orderByDesc(AdjustHeader::getId); |
76 | 77 |
src/main/java/com/huaheng/pc/inventory/inventoryDetail/controller/InventoryDetailController.java
@@ -73,7 +73,6 @@ public class InventoryDetailController extends BaseController | @@ -73,7 +73,6 @@ public class InventoryDetailController extends BaseController | ||
73 | .eq(inventoryDetail.getInventoryHeaderId() != null,InventoryDetail::getInventoryHeaderId,inventoryDetail.getInventoryHeaderId()) //ID | 73 | .eq(inventoryDetail.getInventoryHeaderId() != null,InventoryDetail::getInventoryHeaderId,inventoryDetail.getInventoryHeaderId()) //ID |
74 | .eq(StringUtils.isNotEmpty(inventoryDetail.getLocationCode()),InventoryDetail::getLocationCode,inventoryDetail.getLocationCode()) //库位 | 74 | .eq(StringUtils.isNotEmpty(inventoryDetail.getLocationCode()),InventoryDetail::getLocationCode,inventoryDetail.getLocationCode()) //库位 |
75 | .eq(StringUtils.isNotEmpty(inventoryDetail.getContainerCode()),InventoryDetail::getContainerCode,inventoryDetail.getContainerCode())//容器 | 75 | .eq(StringUtils.isNotEmpty(inventoryDetail.getContainerCode()),InventoryDetail::getContainerCode,inventoryDetail.getContainerCode())//容器 |
76 | - .eq(StringUtils.isNotEmpty(inventoryDetail.getCompanyCode()),InventoryDetail::getCompanyCode,inventoryDetail.getCompanyCode())//货主 | ||
77 | .eq(StringUtils.isNotEmpty(inventoryDetail.getSupplierCode()),InventoryDetail::getSupplierCode,inventoryDetail.getSupplierCode())//供应商 | 76 | .eq(StringUtils.isNotEmpty(inventoryDetail.getSupplierCode()),InventoryDetail::getSupplierCode,inventoryDetail.getSupplierCode())//供应商 |
78 | .eq(StringUtils.isNotEmpty(inventoryDetail.getMaterialCode()),InventoryDetail::getMaterialCode,inventoryDetail.getMaterialCode())//物料编码 | 77 | .eq(StringUtils.isNotEmpty(inventoryDetail.getMaterialCode()),InventoryDetail::getMaterialCode,inventoryDetail.getMaterialCode())//物料编码 |
79 | .like(StringUtils.isNotEmpty(inventoryDetail.getMaterialName()),InventoryDetail::getMaterialName,inventoryDetail.getMaterialName())//物料名称 | 78 | .like(StringUtils.isNotEmpty(inventoryDetail.getMaterialName()),InventoryDetail::getMaterialName,inventoryDetail.getMaterialName())//物料名称 |
@@ -87,6 +86,8 @@ public class InventoryDetailController extends BaseController | @@ -87,6 +86,8 @@ public class InventoryDetailController extends BaseController | ||
87 | .eq(StringUtils.isNotEmpty(inventoryDetail.getReferCode()),InventoryDetail::getReferCode,inventoryDetail.getReferCode())//上游单号 | 86 | .eq(StringUtils.isNotEmpty(inventoryDetail.getReferCode()),InventoryDetail::getReferCode,inventoryDetail.getReferCode())//上游单号 |
88 | .eq(StringUtils.isNotEmpty(inventoryDetail.getReferDetailId()),InventoryDetail::getReferDetailId,inventoryDetail.getReferDetailId())//上游行号 | 87 | .eq(StringUtils.isNotEmpty(inventoryDetail.getReferDetailId()),InventoryDetail::getReferDetailId,inventoryDetail.getReferDetailId())//上游行号 |
89 | .eq(StringUtils.isNotEmpty(inventoryDetail.getLockCode()),InventoryDetail::getLockCode,inventoryDetail.getLockCode())//库存锁 | 88 | .eq(StringUtils.isNotEmpty(inventoryDetail.getLockCode()),InventoryDetail::getLockCode,inventoryDetail.getLockCode())//库存锁 |
89 | + //货主 | ||
90 | + .in(InventoryDetail::getCompanyCode, ShiroUtils.getCompanyCodeList()) | ||
90 | .orderByDesc(InventoryDetail::getId); | 91 | .orderByDesc(InventoryDetail::getId); |
91 | 92 | ||
92 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ | 93 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ |
src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
@@ -71,9 +71,10 @@ public class InventoryHeaderController extends BaseController | @@ -71,9 +71,10 @@ public class InventoryHeaderController extends BaseController | ||
71 | .eq(InventoryHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())//仓库 | 71 | .eq(InventoryHeader::getWarehouseCode,ShiroUtils.getWarehouseCode())//仓库 |
72 | .eq(StringUtils.isNotEmpty(inventoryHeader.getLocationCode()),InventoryHeader::getLocationCode,inventoryHeader.getLocationCode()) //库位 | 72 | .eq(StringUtils.isNotEmpty(inventoryHeader.getLocationCode()),InventoryHeader::getLocationCode,inventoryHeader.getLocationCode()) //库位 |
73 | .eq(StringUtils.isNotEmpty(inventoryHeader.getContainerCode()),InventoryHeader::getContainerCode,inventoryHeader.getContainerCode())//容器 | 73 | .eq(StringUtils.isNotEmpty(inventoryHeader.getContainerCode()),InventoryHeader::getContainerCode,inventoryHeader.getContainerCode())//容器 |
74 | - .eq(StringUtils.isNotEmpty(inventoryHeader.getCompanyCode()), InventoryHeader::getCompanyCode,inventoryHeader.getCompanyCode())//货主 | ||
75 | .eq(StringUtils.isNotEmpty(inventoryHeader.getCreatedBy()),InventoryHeader::getCreatedBy,inventoryHeader.getCreatedBy())//创建用户 | 74 | .eq(StringUtils.isNotEmpty(inventoryHeader.getCreatedBy()),InventoryHeader::getCreatedBy,inventoryHeader.getCreatedBy())//创建用户 |
76 | .eq(StringUtils.isNotEmpty(inventoryHeader.getLastUpdatedBy()),InventoryHeader::getLastUpdatedBy,inventoryHeader.getLastUpdatedBy())//更新用户 | 75 | .eq(StringUtils.isNotEmpty(inventoryHeader.getLastUpdatedBy()),InventoryHeader::getLastUpdatedBy,inventoryHeader.getLastUpdatedBy())//更新用户 |
76 | + //货主 | ||
77 | + .in(InventoryHeader::getCompanyCode, ShiroUtils.getCompanyCodeList()) | ||
77 | .orderByDesc(InventoryHeader::getId); | 78 | .orderByDesc(InventoryHeader::getId); |
78 | 79 | ||
79 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ | 80 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ |
src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java
@@ -12,6 +12,7 @@ import com.huaheng.framework.web.controller.BaseController; | @@ -12,6 +12,7 @@ import com.huaheng.framework.web.controller.BaseController; | ||
12 | import com.huaheng.framework.web.page.PageDomain; | 12 | import com.huaheng.framework.web.page.PageDomain; |
13 | import com.huaheng.framework.web.page.TableDataInfo; | 13 | import com.huaheng.framework.web.page.TableDataInfo; |
14 | import com.huaheng.framework.web.page.TableSupport; | 14 | import com.huaheng.framework.web.page.TableSupport; |
15 | +import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMaterialSummary; | ||
15 | import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; | 16 | import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; |
16 | import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; | 17 | import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; |
17 | import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; | 18 | import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; |
@@ -70,7 +71,6 @@ public class InventoryTransactionController extends BaseController{ | @@ -70,7 +71,6 @@ public class InventoryTransactionController extends BaseController{ | ||
70 | .eq(InventoryTransaction::getWarehouseCode,ShiroUtils.getWarehouseCode())//仓库 | 71 | .eq(InventoryTransaction::getWarehouseCode,ShiroUtils.getWarehouseCode())//仓库 |
71 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getLocationCode()), InventoryTransaction::getLocationCode,inventoryTransaction.getLocationCode()) //库位 | 72 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getLocationCode()), InventoryTransaction::getLocationCode,inventoryTransaction.getLocationCode()) //库位 |
72 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getContainerCode()),InventoryTransaction::getContainerCode,inventoryTransaction.getContainerCode())//容器 | 73 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getContainerCode()),InventoryTransaction::getContainerCode,inventoryTransaction.getContainerCode())//容器 |
73 | - .eq(StringUtils.isNotEmpty(inventoryTransaction.getCompanyCode()),InventoryTransaction::getCompanyCode,inventoryTransaction.getCompanyCode())//货主 | ||
74 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getSupplierCode()), InventoryTransaction::getSupplierCode,inventoryTransaction.getSupplierCode())//供应商 | 74 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getSupplierCode()), InventoryTransaction::getSupplierCode,inventoryTransaction.getSupplierCode())//供应商 |
75 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getMaterialCode()),InventoryTransaction::getMaterialCode,inventoryTransaction.getMaterialCode())//物料编码 | 75 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getMaterialCode()),InventoryTransaction::getMaterialCode,inventoryTransaction.getMaterialCode())//物料编码 |
76 | .like(StringUtils.isNotEmpty(inventoryTransaction.getMaterialName()),InventoryTransaction::getMaterialName,inventoryTransaction.getMaterialName())//物料名称 | 76 | .like(StringUtils.isNotEmpty(inventoryTransaction.getMaterialName()),InventoryTransaction::getMaterialName,inventoryTransaction.getMaterialName())//物料名称 |
@@ -82,7 +82,8 @@ public class InventoryTransactionController extends BaseController{ | @@ -82,7 +82,8 @@ public class InventoryTransactionController extends BaseController{ | ||
82 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getBillCode()), InventoryTransaction::getBillCode,inventoryTransaction.getBillCode())//出入库单编码 | 82 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getBillCode()), InventoryTransaction::getBillCode,inventoryTransaction.getBillCode())//出入库单编码 |
83 | .eq(inventoryTransaction.getTransactionType() != null,InventoryTransaction::getTransactionType,inventoryTransaction.getTransactionType()) // 交易类型 | 83 | .eq(inventoryTransaction.getTransactionType() != null,InventoryTransaction::getTransactionType,inventoryTransaction.getTransactionType()) // 交易类型 |
84 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getReferCode()),InventoryTransaction::getReferCode,inventoryTransaction.getReferCode())//上游单号 | 84 | .eq(StringUtils.isNotEmpty(inventoryTransaction.getReferCode()),InventoryTransaction::getReferCode,inventoryTransaction.getReferCode())//上游单号 |
85 | - | 85 | + //货主 |
86 | + .in(InventoryTransaction::getCompanyCode, ShiroUtils.getCompanyCodeList()) | ||
86 | .orderByDesc(InventoryTransaction::getId); | 87 | .orderByDesc(InventoryTransaction::getId); |
87 | 88 | ||
88 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ | 89 | if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ |
src/main/resources/static/css/style.css
@@ -7496,10 +7496,11 @@ body.skin-yellow { | @@ -7496,10 +7496,11 @@ body.skin-yellow { | ||
7496 | } | 7496 | } |
7497 | .input_list ul{ | 7497 | .input_list ul{ |
7498 | width:100%; | 7498 | width:100%; |
7499 | - padding: 5px 0; | 7499 | + padding:3px 0; |
7500 | } | 7500 | } |
7501 | .input_list li{ | 7501 | .input_list li{ |
7502 | width:25%; | 7502 | width:25%; |
7503 | + padding: 3px 0; | ||
7503 | display:inline-flex; | 7504 | display:inline-flex; |
7504 | } | 7505 | } |
7505 | .input_list li label{ | 7506 | .input_list li label{ |
@@ -7512,4 +7513,13 @@ body.skin-yellow { | @@ -7512,4 +7513,13 @@ body.skin-yellow { | ||
7512 | } | 7513 | } |
7513 | .div1 img:hover{ | 7514 | .div1 img:hover{ |
7514 | cursor: pointer; | 7515 | cursor: pointer; |
7516 | +} | ||
7517 | + | ||
7518 | +@media (max-width:1200px) { | ||
7519 | + .input_list li{ | ||
7520 | + width:45%;} | ||
7521 | +} | ||
7522 | +@media (max-width:768px) { | ||
7523 | + .input_list li{ | ||
7524 | + width:100%;} | ||
7515 | } | 7525 | } |
7516 | \ No newline at end of file | 7526 | \ No newline at end of file |
src/main/resources/templates/inventory/inventoryMaterialSummary/inventoryMaterialSummary.html
@@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
20 | 物料名称:<input id="materialName" type="text" name="materialName" /> | 20 | 物料名称:<input id="materialName" type="text" name="materialName" /> |
21 | </li> | 21 | </li> |
22 | <li class="time"> | 22 | <li class="time"> |
23 | - <label>创建时间: </label> | 23 | + <label>创建时间:</label> |
24 | <input type="text" class="time-input" id="startTime" placeholder="开始时间" | 24 | <input type="text" class="time-input" id="startTime" placeholder="开始时间" |
25 | name="createdBegin"/> | 25 | name="createdBegin"/> |
26 | <span>-</span> | 26 | <span>-</span> |
@@ -28,6 +28,9 @@ | @@ -28,6 +28,9 @@ | ||
28 | name="createdEnd"/> | 28 | name="createdEnd"/> |
29 | </li> | 29 | </li> |
30 | <li> | 30 | <li> |
31 | + 货主:<input id="companyCode" type="text" name="companyCode" /> | ||
32 | + </li> | ||
33 | + <li> | ||
31 | <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> | 34 | <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> |
32 | </li> | 35 | </li> |
33 | </ul> | 36 | </ul> |
@@ -64,7 +67,8 @@ | @@ -64,7 +67,8 @@ | ||
64 | refresh:true, | 67 | refresh:true, |
65 | showToggle: false, | 68 | showToggle: false, |
66 | showColumns: false, | 69 | showColumns: false, |
67 | - showExport: true, //是否添加导出按钮 | 70 | + showExport: true, //导出 |
71 | + exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 | ||
68 | detailView: true, | 72 | detailView: true, |
69 | pagination: true, | 73 | pagination: true, |
70 | sidePagination: "client", //前端分页 | 74 | sidePagination: "client", //前端分页 |
@@ -84,13 +88,10 @@ | @@ -84,13 +88,10 @@ | ||
84 | title: '仓库 ', | 88 | title: '仓库 ', |
85 | visible: true | 89 | visible: true |
86 | }, | 90 | }, |
87 | - /*{ | ||
88 | - field: 'companyCode', | ||
89 | - title: '货主编码' | ||
90 | - },*/ | ||
91 | { | 91 | { |
92 | - field: 'qty', | ||
93 | - title: '库存总数' | 92 | + field: 'companyCode', |
93 | + title: '货主编码', | ||
94 | + visible: true | ||
94 | }, | 95 | }, |
95 | { | 96 | { |
96 | field: 'materialCode', | 97 | field: 'materialCode', |
@@ -101,6 +102,10 @@ | @@ -101,6 +102,10 @@ | ||
101 | title: '物料名称' | 102 | title: '物料名称' |
102 | }, | 103 | }, |
103 | { | 104 | { |
105 | + field: 'qty', | ||
106 | + title: '库存总数' | ||
107 | + }, | ||
108 | + { | ||
104 | field: 'materialSpec', | 109 | field: 'materialSpec', |
105 | title: '物料规格' | 110 | title: '物料规格' |
106 | }, | 111 | }, |
src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html
@@ -58,13 +58,12 @@ | @@ -58,13 +58,12 @@ | ||
58 | <li> | 58 | <li> |
59 | 项 目 号:<input type="text" name="projectNo"/> | 59 | 项 目 号:<input type="text" name="projectNo"/> |
60 | </li> | 60 | </li> |
61 | - AjaxResult.error("单据号为"+receiptHeader.getCode()+"入库单不需要审核"); <li> | 61 | + <li> |
62 | 交易类型:<select name="type" th:with="type=${@dict.getType('inventoryTransactionType')}"> | 62 | 交易类型:<select name="type" th:with="type=${@dict.getType('inventoryTransactionType')}"> |
63 | <option value="">所有</option> | 63 | <option value="">所有</option> |
64 | <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> | 64 | <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> |
65 | </select> | 65 | </select> |
66 | </li> | 66 | </li> |
67 | - | ||
68 | <li class="time"> | 67 | <li class="time"> |
69 | <label>创建时间: </label> | 68 | <label>创建时间: </label> |
70 | <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> | 69 | <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> |
@@ -82,10 +81,10 @@ | @@ -82,10 +81,10 @@ | ||
82 | </div> | 81 | </div> |
83 | <div class="col-sm-12 select-info"> | 82 | <div class="col-sm-12 select-info"> |
84 | <div class="btn-group hidden-xs" id="toolbar" role="group"> | 83 | <div class="btn-group hidden-xs" id="toolbar" role="group"> |
85 | - <a class="btn btn-outline btn-success btn-rounded" onclick="report()" | 84 | + <!--<a class="btn btn-outline btn-success btn-rounded" onclick="report()" |
86 | shiro:hasPermission="inventory:inventoryTransaction:report"> | 85 | shiro:hasPermission="inventory:inventoryTransaction:report"> |
87 | <i class="fa fa-plus"></i> 打印 | 86 | <i class="fa fa-plus"></i> 打印 |
88 | - </a> | 87 | + </a>--> |
89 | </div> | 88 | </div> |
90 | <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> | 89 | <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> |
91 | </div> | 90 | </div> |
@@ -113,7 +112,7 @@ | @@ -113,7 +112,7 @@ | ||
113 | sortName: "id", | 112 | sortName: "id", |
114 | sortOrder: "desc", | 113 | sortOrder: "desc", |
115 | showExport: true, //导出 | 114 | showExport: true, //导出 |
116 | - exportDataType: "selected", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 | 115 | + exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 |
117 | pagination:true, | 116 | pagination:true, |
118 | pageNumber: 1, // 初始化加载第一页,默认第一页 | 117 | pageNumber: 1, // 初始化加载第一页,默认第一页 |
119 | pageSize: 10, // 每页的记录行数(*) | 118 | pageSize: 10, // 每页的记录行数(*) |
src/main/resources/templates/monitor/locationstatus/locationstatus.html
@@ -9,13 +9,14 @@ | @@ -9,13 +9,14 @@ | ||
9 | font-size: 10px; | 9 | font-size: 10px; |
10 | /*width: 50px;*/ | 10 | /*width: 50px;*/ |
11 | text-align: left; | 11 | text-align: left; |
12 | - margin: auto 3px; | 12 | + margin: 5px 20px 5px 5px; |
13 | } | 13 | } |
14 | #img_list li img{ | 14 | #img_list li img{ |
15 | height: 35px; | 15 | height: 35px; |
16 | width: 35px; | 16 | width: 35px; |
17 | } | 17 | } |
18 | #info_list{ | 18 | #info_list{ |
19 | + width: 100%; | ||
19 | display:inline-block; | 20 | display:inline-block; |
20 | } | 21 | } |
21 | #info_list li{ | 22 | #info_list li{ |
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 | +} |