Ver código fonte

feat: 原因规则增加分类
国别基准匹配字段从后缀改为目的地
延期商品解析调整,基于目的地和分类
报表分析调整,基于目的地和分类

SJ 2 dias atrás
pai
commit
0402bb5df0

+ 6 - 0
lg-code/src/main/java/org/jeecg/modules/ProdPlan/entity/DelayProduct.java

@@ -125,5 +125,11 @@ public class DelayProduct implements Serializable {
     /**region*/
     @Excel(name = "Region", width = 15)
     private String region;
+    /**category*/
+    @Excel(name = "category", width = 15)
+    private String category;
+    /**shipToName*/
+    @Excel(name = "shipToName", width = 15)
+    private String shipToName;
 
 }

+ 18 - 7
lg-code/src/main/java/org/jeecg/modules/ProdPlan/service/impl/ProdPlanServiceImpl.java

@@ -115,7 +115,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
 
 
             List<RegionRule> regionRuleList = regionRuleService.list();
-            Map<String, RegionRule> regionRules = regionRuleList.stream().collect(Collectors.toMap(RegionRule::getSuffix, i -> i));
+            Map<String, RegionRule> regionRules = regionRuleList.stream().collect(Collectors.toMap(RegionRule::getShipToName, i -> i));
             List<DestRule> destRuleList = destRuleService.list();
             Map<String, String> destRules = destRuleList.stream().collect(Collectors.toMap(DestRule::getDestination, DestRule::getSchedule));
             List<ReasonRule> reasonRuleList = reasonRuleService.list();
@@ -130,7 +130,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
                 //通过后缀匹配国别规则
                 String model = delayProduct.getModel().trim();
                 String suffix = model.substring(model.length() - 3);
-                RegionRule regionRule = regionRules.get(suffix);
+                RegionRule regionRule = regionRules.get(delayProduct.getShipToName());
                 if(regionRule==null) continue;
                 delayProduct.setRegion(regionRule.getRegion());
 
@@ -152,7 +152,11 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
                     delayProduct.setOverdueDays(days);
                 }
                 // 计算要求完成周别
-                String week = "W" + delayProduct.getDueDate().get(WeekFields.ISO.weekOfYear());
+//                String week = "W" + delayProduct.getDueDate().get(WeekFields.ISO.weekOfYear());
+//                delayProduct.setWeek(week);
+
+                // 根据bucket计算周别
+                String week = "W" + Integer.valueOf(delayProduct.getBucket().substring(4));
                 delayProduct.setWeek(week);
 
                 reasonRules.forEach((reason,rule)->{
@@ -162,6 +166,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
                         delayProduct.setDept(rule.getDept());
                         String newRemark = matcher.replaceAll(rule.getRemark());
                         delayProduct.setRemark(newRemark);
+                        delayProduct.setCategory(rule.getCategory());
                     }
                 });
 
@@ -169,6 +174,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
                 if(delayProduct.getRemark() == null && delayProduct.getOverdueDays() != null && delayProduct.getOverdueDays() > 0) {
                     delayProduct.setRemark("生产");
                     delayProduct.setDept("生产");
+                    delayProduct.setCategory("Production");
                 }
 
                 if(toolRules.get(delayProduct.getTool())!=null){
@@ -204,7 +210,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
             for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {
                 sheet = workbook.getSheetAt(sheetNum);
                 //第二行为表头
-                Row headerRow = sheet.getRow(1);
+                Row headerRow = sheet.getRow(0);
                 if (headerRow == null) {
                     throw new RuntimeException("未找到表头行");
                 }
@@ -288,6 +294,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
         String finalDest = getCellValueAsString(row.getCell(columnIndices.get("Final Dest.")));
         String comment1 = getCellValueAsString(row.getCell(columnIndices.get("Comment1")));
         String comment2 = getCellValueAsString(row.getCell(columnIndices.get("Comment2")));
+        String shipToName = getCellValueAsString(row.getCell(columnIndices.get("Ship To Name")));
 
         dateColumnIndices.forEach((date, columnIndex) -> {
             Cell cell = row.getCell(columnIndex);
@@ -304,6 +311,7 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
                                     .setModel(model)
                                     .setBucket(bucket)
                                     .setFinalDest(finalDest)
+                                    .setShipToName(shipToName)
                                     .setComment1(comment1)
                                     .setComment2(comment2)
                                     .setPst(getDateFromMonthDayStr(date))
@@ -694,8 +702,10 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
             detailVo.setDueDate(delayProduct.getDueDate().format(DateTimeFormatter.ofPattern("MM/dd")));
             LocalDate endDate = delayProduct.getPst();
             LocalDate startDate = delayProduct.getDueDate();
-            while(endDate.isAfter(startDate)){
-                int startWeek = startDate.get(WeekFields.ISO.weekOfYear());
+            //不通过生产日期判断影响周别,通过订单bucket对应周别来判断起始影响周
+            int startWeek = Integer.valueOf(delayProduct.getBucket().substring(4));
+            do{
+//                int startWeek = startDate.get(WeekFields.ISO.weekOfYear());
                 if(startWeek== currentWeek -3){
                     detailVo.setWeek1(detailVo.getPo());
                 } else if (startWeek== currentWeek -2) {
@@ -710,7 +720,8 @@ public class ProdPlanServiceImpl extends ServiceImpl<ProdPlanMapper, ProdPlan> i
                     detailVo.setWeek6(detailVo.getPo());
                 }
                 startDate = startDate.plusWeeks(1l);
-            }
+                startWeek++;
+            }while(endDate.isAfter(startDate));
             detailVoList.add(detailVo);
         });
 

+ 3 - 0
lg-code/src/main/java/org/jeecg/modules/ReasonRule/entity/ReasonRule.java

@@ -48,5 +48,8 @@ public class ReasonRule implements Serializable {
 	/**删除标记*/
 	@ApiModelProperty(value = "删除标记")
 	private int isDel;
+	/**category*/
+	@Excel(name = "category", width = 15)
+	private String category;
 
 }

+ 6 - 3
lg-code/src/main/java/org/jeecg/modules/RegionRule/entity/RegionRule.java

@@ -33,9 +33,12 @@ public class RegionRule implements Serializable {
 	/**region*/
 	@Excel(name = "region", width = 15)
     private String region;
-	/**suffix*/
-	@Excel(name = "suffix", width = 15)
-    private String suffix;
+//	/**suffix*/
+//	@Excel(name = "suffix", width = 15)
+//    private String suffix;
+	/**shipToName*/
+	@Excel(name = "shipToName", width = 15)
+	private String shipToName;
 	/**last_mon*/
 	@Excel(name = "last_mon", width = 15)
 	@TableField(updateStrategy = FieldStrategy.IGNORED)