[user3] 4 jaren geleden
bovenliggende
commit
c00f928831

+ 13 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/liKuResourcePool/entity/LiKuResourcePool.java

@@ -117,6 +117,11 @@ public class LiKuResourcePool extends DataEntity<LiKuResourcePool> {
      */
     private Integer segBelongs;
 
+    /**
+     * 修改利库资源库中段长数据是否完成利库 0-未完成 1-完成
+     */
+    private Integer completeLiKu;
+
     @ExcelField(title = "序号", align = 2, sort = 1)
     public String getSerialNumber() {
         return serialNumber;
@@ -361,4 +366,12 @@ public class LiKuResourcePool extends DataEntity<LiKuResourcePool> {
     public void setSegBelongs(Integer segBelongs) {
         this.segBelongs = segBelongs;
     }
+
+    public Integer getCompleteLiKu() {
+        return completeLiKu;
+    }
+
+    public void setCompleteLiKu(Integer completeLiKu) {
+        this.completeLiKu = completeLiKu;
+    }
 }

+ 35 - 32
src/main/java/com/jeeplus/modules/sg/balancedlibrary/liKuResourcePool/mapper/xml/LiKuResourcePoolMapper.xml

@@ -58,7 +58,8 @@
 		a.monthStorage AS "monthStorage",
 		a.isExpansion AS "isExpansion",
 		a.numberOfNiches AS "numberOfNiches",
-		a.remaining AS "remaining"
+		a.remaining AS "remaining",
+		a.segBelongs AS "segBelongs"
 	</sql>
 
 	<sql id="leftJoins">
@@ -138,37 +139,38 @@
 	<insert id="insertList">
 		insert into bla_resource_pool(
 		id,
- 		create_by,
- 		create_date,
- 		update_by,
- 		update_date,
- 		del_flag,
- 		remarks,
- 		serialNumber,
- 		factory,
- 		batch,
- 		materialCode,
- 		materialDescription,
- 		unitOfMeasurement,
- 		inventoryAmount,
- 		inventoryLocation,
- 		invLocation,
- 		invLocationDes,
- 		supplierName,
- 		specialStock,
- 		extendedCoding,
- 		extendedDescription,
- 		lengthOfCable,
- 		ringCage,
- 		terminalWarranty,
- 		specialParameters,
- 		daysStorage,
- 		monthStorage,
- 		isExpansion,
- 		numberOfNiches,
- 		remaining,
+		create_by,
+		create_date,
+		update_by,
+		update_date,
+		del_flag,
+		remarks,
+		serialNumber,
+		factory,
+		batch,
+		materialCode,
+		materialDescription,
+		unitOfMeasurement,
+		inventoryAmount,
+		inventoryLocation,
+		invLocation,
+		invLocationDes,
+		supplierName,
+		specialStock,
+		extendedCoding,
+		extendedDescription,
+		lengthOfCable,
+		ringCage,
+		terminalWarranty,
+		specialParameters,
+		daysStorage,
+		monthStorage,
+		isExpansion,
+		numberOfNiches,
+		remaining,
 		isSectionLength,
-		whereFrom
+		whereFrom,
+	    segBelongs
 		)VALUES
 		<foreach collection="list" item="item" index="index" separator=",">
 			(
@@ -203,7 +205,8 @@
 			#{item.numberOfNiches},
 			#{item.remaining},
 			#{item.isSectionLength},
-			#{item.whereFrom}
+			#{item.whereFrom},
+			#{item.segBelongs}
 			)
 		</foreach>
 	</insert>

+ 102 - 0
src/main/java/com/jeeplus/modules/sg/balancedlibrary/liKuResourcePool/utils/OptimalUtil.java

@@ -0,0 +1,102 @@
+package com.jeeplus.modules.sg.balancedlibrary.liKuResourcePool.utils;
+
+import com.jeeplus.modules.sg.balancedlibrary.materialReportDetails.entity.MaterialReportDetails;
+import com.jeeplus.modules.sys.utils.DictUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+public class OptimalUtil {
+    //是否有“元素组合的和”与“待比对值”相同的情况,true为有
+    private boolean getEqual = false;
+    //所有可能的元素组合列表
+    private List<List<MaterialReportDetails>> result = new ArrayList<>();
+    //最大浪费量
+    private BigDecimal maxiNun = BigDecimal.valueOf(0.0);
+
+    /**
+     *
+     * @param total 待比对的值
+     * @param elements  所有元素集合
+     * @return
+     */
+    public List<MaterialReportDetails> getOptimal(double total, List<MaterialReportDetails> elements){
+        //list降序排列
+        Collections.sort(elements, Comparator.comparing(MaterialReportDetails::getTotal));
+        Collections.reverse(elements);
+        solve(0,0,new ArrayList<>(),total,elements);
+
+        //找到差值最小组合返回
+        List<MaterialReportDetails> returnList = new ArrayList<>();
+        BigDecimal max = BigDecimal.valueOf(0.0);
+        for (List<MaterialReportDetails> detailsList :
+                result) {
+            BigDecimal bigAll = BigDecimal.valueOf(0.0);
+            for (MaterialReportDetails details :
+                    detailsList) {
+                bigAll = bigAll.add(BigDecimal.valueOf(details.getTotal()));
+            }
+            if (bigAll.compareTo(max) > 0) {
+                max = bigAll;
+                returnList.clear();
+                returnList.addAll(detailsList);
+            }
+        }
+
+/*        for(List<MaterialReportDetails> bigList:result){
+            String str = "";
+            double listNum = 0;
+            for(MaterialReportDetails i:bigList){
+                listNum = listNum + i.getTotal();
+                str = str + i + ",";
+            }
+            System.out.println(listNum+":"+str);
+        }*/
+
+        return returnList;
+    }
+
+    /**
+     *
+     * @param index 当前集合下标
+     * @param sum   当前组合元素和
+     * @param curr  当前组合元素集合
+     * @param total 待比对的值
+     * @param elements 所有元素集合
+     */
+    public void solve(int index, double sum, List<MaterialReportDetails> curr, double total, List<MaterialReportDetails> elements ){
+        //如果找到元素组合的和与待比对值一样,则不往下继续查找
+        String dictValue = DictUtils.getDictValue("maxWaste", "maximum_waste", "");
+        maxiNun = new BigDecimal(dictValue);
+        if(getEqual == true){
+            return;
+        }
+        //走到这一步,所有最后一个元素也参考过(可能加入组合也可能不加入),最终还是组合值小于待比对值。则放入到result中
+        if(index == elements.size()){
+            BigDecimal allSum = BigDecimal.valueOf(sum);
+            BigDecimal allTotal = BigDecimal.valueOf(total);
+            BigDecimal subtract = allTotal.subtract(allSum).setScale(2, BigDecimal.ROUND_HALF_UP);
+            if (subtract.compareTo(maxiNun) <= 0) {
+                result.add(curr);
+            }
+            return;
+        }
+        MaterialReportDetails next = elements.get(index);
+        index++;
+        //如果将当前值加上已有元素组合的值等于待比对值,得到结果
+        if((sum+next.getTotal())==total){
+            curr.add(next);
+            result = new ArrayList<>();
+            result.add(curr);
+            getEqual = true;
+        //如果将当前值加上已有元素组合的值大于待比对值,则不考虑这种组合的后续可能性
+        }else if((sum+next.getTotal()) > total){
+            solve(index,sum,curr,total,elements);
+        }else if((sum+next.getTotal()) < total){
+            List newCurr = new ArrayList(curr);
+            newCurr.add(next);
+            solve(index,sum+next.getTotal(),newCurr,total,elements);
+            solve(index,sum,curr,total,elements);
+        }
+    }
+}

+ 1 - 1
src/main/java/com/jeeplus/modules/sg/balancedlibrary/liKuResourcePool/web/LiKuResourcePoolController.java

@@ -250,7 +250,7 @@ public class LiKuResourcePoolController extends BaseController {
 								liKu.setRemaining(Double.valueOf(split[i]));
 								liKu.setIsSectionLength(pool.getIsSectionLength());
 								liKu.setWhereFrom(pool.getWhereFrom());
-								liKu.setSegBelongs(i);
+								liKu.setSegBelongs(i + 1);
 								insertList.add(liKu);
 							}
 						} else {

+ 105 - 8
src/main/java/com/jeeplus/modules/sg/balancedlibrary/materialReportDetails/entity/MaterialReportDetails.java

@@ -75,6 +75,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
      * */
     private List<MaterialDetails> regionalList;
 
+
     /**
      * 本地以大代小利库
      * */
@@ -118,6 +119,21 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
      * 跨区利库数量
      * */
     private String numberOfRegional;
+
+    /**
+     * 合并规划利库批次号
+     * */
+    private String consolidatedBatch;
+    /**
+     * 合并规划利库库存地
+     * */
+    private String consolidatedWareHouse;
+    /**
+     * 合并规划利库数量
+     * */
+    private String numberOfConsolidated;
+
+
     /**
      * 本地以大代小利库型号
      * */
@@ -151,6 +167,24 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
      * */
     private String numberOfRegionalLiKu;
 
+    /**
+     * 合并以大代小规划利库型号
+     * */
+    private String conLocalModel;
+    /**
+     * 合并以大代小规划利库批次号
+     * */
+    private String conLocalBatch;
+    /**
+     * 合并以大代小规划利库库存地
+     * */
+    private String conLocalWareHouse;
+    /**
+     * 合并以大代小规划利库数量
+     * */
+    private String numberOfConLocal;
+
+
 
     @ExcelField(title = "上报地区", align = 2, sort = 1)
     public String getReportingArea() {
@@ -382,7 +416,34 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.numberOfRegional = numberOfRegional;
     }
 
-    @ExcelField(title = "本地以大代小利库型号", align = 2, sort = 20)
+    @ExcelField(title = "合并规划利库批次号", align = 2, sort = 20)
+    public String getConsolidatedBatch() {
+        return consolidatedBatch;
+    }
+
+    public void setConsolidatedBatch(String consolidatedBatch) {
+        this.consolidatedBatch = consolidatedBatch;
+    }
+
+    @ExcelField(title = "合并规划利库库存地", align = 2, sort = 21)
+    public String getConsolidatedWareHouse() {
+        return consolidatedWareHouse;
+    }
+
+    public void setConsolidatedWareHouse(String consolidatedWareHouse) {
+        this.consolidatedWareHouse = consolidatedWareHouse;
+    }
+
+    @ExcelField(title = "合并规划利库数量", align = 2, sort = 22)
+    public String getNumberOfConsolidated() {
+        return numberOfConsolidated;
+    }
+
+    public void setNumberOfConsolidated(String numberOfConsolidated) {
+        this.numberOfConsolidated = numberOfConsolidated;
+    }
+
+    @ExcelField(title = "本地以大代小利库型号", align = 2, sort = 23)
     public String getLocalLiKuModel() {
         return localLiKuModel;
     }
@@ -391,7 +452,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.localLiKuModel = localLiKuModel;
     }
 
-    @ExcelField(title = "本地以大代小利库批次号", align = 2, sort = 21)
+    @ExcelField(title = "本地以大代小利库批次号", align = 2, sort = 24)
     public String getLocalLiKuBatch() {
         return localLiKuBatch;
     }
@@ -400,7 +461,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.localLiKuBatch = localLiKuBatch;
     }
 
-    @ExcelField(title = "本地以大代小利库库存地", align = 2, sort = 22)
+    @ExcelField(title = "本地以大代小利库库存地", align = 2, sort = 25)
     public String getLocalLiKuWareHouse() {
         return localLiKuWareHouse;
     }
@@ -409,7 +470,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.localLiKuWareHouse = localLiKuWareHouse;
     }
 
-    @ExcelField(title = "本地以大代小利库数量", align = 2, sort = 23)
+    @ExcelField(title = "本地以大代小利库数量", align = 2, sort = 26)
     public String getNumberOfLocalLiKu() {
         return numberOfLocalLiKu;
     }
@@ -418,7 +479,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.numberOfLocalLiKu = numberOfLocalLiKu;
     }
 
-    @ExcelField(title = "跨区以大代小利库型号", align = 2, sort = 24)
+    @ExcelField(title = "跨区以大代小利库型号", align = 2, sort = 27)
     public String getRegionLiKuModel() {
         return regionLiKuModel;
     }
@@ -427,7 +488,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.regionLiKuModel = regionLiKuModel;
     }
 
-    @ExcelField(title = "跨区以大代小利库批次号", align = 2, sort = 25)
+    @ExcelField(title = "跨区以大代小利库批次号", align = 2, sort = 28)
     public String getRegionLiKuBatch() {
         return regionLiKuBatch;
     }
@@ -436,7 +497,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.regionLiKuBatch = regionLiKuBatch;
     }
 
-    @ExcelField(title = "跨区以大代小利库库存地", align = 2, sort = 26)
+    @ExcelField(title = "跨区以大代小利库库存地", align = 2, sort = 29)
     public String getRegionLiKuWareHouse() {
         return regionLiKuWareHouse;
     }
@@ -445,7 +506,7 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
         this.regionLiKuWareHouse = regionLiKuWareHouse;
     }
 
-    @ExcelField(title = "跨区以大代小利库数量", align = 2, sort = 27)
+    @ExcelField(title = "跨区以大代小利库数量", align = 2, sort = 30)
     public String getNumberOfRegionalLiKu() {
         return numberOfRegionalLiKu;
     }
@@ -453,4 +514,40 @@ public class MaterialReportDetails extends DataEntity<MaterialReportDetails> {
     public void setNumberOfRegionalLiKu(String numberOfRegionalLiKu) {
         this.numberOfRegionalLiKu = numberOfRegionalLiKu;
     }
+
+    @ExcelField(title = "合并以大代小规划利库型号", align = 2, sort = 31)
+    public String getConLocalModel() {
+        return conLocalModel;
+    }
+
+    public void setConLocalModel(String conLocalModel) {
+        this.conLocalModel = conLocalModel;
+    }
+
+    @ExcelField(title = "合并以大代小规划利库批次号", align = 2, sort = 32)
+    public String getConLocalBatch() {
+        return conLocalBatch;
+    }
+
+    public void setConLocalBatch(String conLocalBatch) {
+        this.conLocalBatch = conLocalBatch;
+    }
+
+    @ExcelField(title = "合并以大代小规划利库库存地", align = 2, sort = 33)
+    public String getConLocalWareHouse() {
+        return conLocalWareHouse;
+    }
+
+    public void setConLocalWareHouse(String conLocalWareHouse) {
+        this.conLocalWareHouse = conLocalWareHouse;
+    }
+
+    @ExcelField(title = "合并以大代小规划利库数量", align = 2, sort = 34)
+    public String getNumberOfConLocal() {
+        return numberOfConLocal;
+    }
+
+    public void setNumberOfConLocal(String numberOfConLocal) {
+        this.numberOfConLocal = numberOfConLocal;
+    }
 }

+ 24 - 3
src/main/java/com/jeeplus/modules/sg/balancedlibrary/materialReportDetails/mapper/xml/MaterialReportDetailsMapper.xml

@@ -35,7 +35,14 @@
 		a.regionLiKuModel as "regionLiKuModel",
 		a.regionLiKuBatch as "regionLiKuBatch",
 		a.regionLiKuWareHouse as "regionLiKuWareHouse",
-		a.numberOfRegionalLiKu as "numberOfRegionalLiKu"
+		a.numberOfRegionalLiKu as "numberOfRegionalLiKu",
+		a.consolidatedBatch as "consolidatedBatch",
+		a.consolidatedWareHouse as "consolidatedWareHouse",
+		a.numberOfConsolidated as "numberOfConsolidated",
+		a.conLocalModel as "conLocalModel",
+		a.conLocalBatch as "conLocalBatch",
+		a.conLocalWareHouse as "conLocalWareHouse",
+		a.numberOfConLocal as "numberOfConLocal"
 	</sql>
 
 	<sql id="leftJoins">
@@ -144,7 +151,14 @@
 		                                regionLiKuModel,
 		                                regionLiKuBatch,
 		                                regionLiKuWareHouse,
-		                                numberOfRegionalLiKu
+		                                numberOfRegionalLiKu,
+										consolidatedBatch,
+										consolidatedWareHouse,
+										numberOfConsolidated,
+										conLocalModel,
+										conLocalBatch,
+										conLocalWareHouse,
+										numberOfConLocal
 		)VALUES
 		<foreach collection="list" item="item" index="index" separator=",">
 			(
@@ -181,7 +195,14 @@
 			#{item.regionLiKuModel},
 			#{item.regionLiKuBatch},
 			#{item.regionLiKuWareHouse},
-			#{item.numberOfRegionalLiKu}
+			#{item.numberOfRegionalLiKu},
+			#{item.consolidatedBatch},
+			#{item.consolidatedWareHouse},
+			#{item.numberOfConsolidated},
+			#{item.conLocalModel},
+			#{item.conLocalBatch},
+			#{item.conLocalWareHouse},
+			#{item.numberOfConLocal}
 			)
 		</foreach>
 	</insert>

File diff suppressed because it is too large
+ 2078 - 193
src/main/java/com/jeeplus/modules/sg/balancedlibrary/materialReportDetails/web/MaterialReportDetailsController.java