生成PBOM时,bom没有子项的话,仅生成EBOM正式表,不生成PBOM任务(优化)

This commit is contained in:
10002327 2024-09-26 10:22:56 +08:00
parent 43356a7228
commit cb40340257
4 changed files with 97 additions and 1 deletions

View File

@ -40,6 +40,7 @@ import nflg.product.common.constant.STATE;
import nflg.product.common.vo.ResultVO; import nflg.product.common.vo.ResultVO;
import org.apache.commons.compress.utils.Lists; import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.nullness.Opt;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -1026,6 +1027,24 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
.filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) ) .filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) )
.collect(Collectors.toList()); .collect(Collectors.toList());
if(!emptyChildParentList.isEmpty()){ if(!emptyChildParentList.isEmpty()){
List<BomNewPbomParentEntity> fList = emptyChildParentList.stream().filter(p -> {
Optional<BomNewEbomParentVO> opt = bomTree.stream().filter(t -> p.getMaterialNo().equals(t.getMaterialNo())).findFirst();
if(opt.isPresent()){
List<BomNewEbomParentVO> cList = bomTree.stream().filter(t -> t.getParentRowId().equals(opt.get().getRowId())).collect(Collectors.toList());
if(cList.size() > 0){
Map<String,List<BomNewEbomParentVO>> ptMap = cList.stream().collect(Collectors.groupingBy(BaseMaterialVO::getProjectType));
return ptMap.getOrDefault("F",Lists.newArrayList()).size() == cList.size();
}
}
return false;
}).collect(Collectors.toList());
if(!fList.isEmpty()){
String m = fList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct().collect(Collectors.joining(","));
OperationErrorMsgVO oem = new OperationErrorMsgVO();
oem.setPrimaryKey(m);
oem.msg = String.format("物料%s因下级全部是F项仅保存EBOM未生成PBOM数据",m);
rList.add(oem);
}
// rList = emptyChildParentList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct() // rList = emptyChildParentList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct()
// .map(m -> { // .map(m -> {
// OperationErrorMsgVO oem = new OperationErrorMsgVO(); // OperationErrorMsgVO oem = new OperationErrorMsgVO();
@ -1200,6 +1219,25 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
.filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) ) .filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) )
.collect(Collectors.toList()); .collect(Collectors.toList());
if(!emptyChildParentList.isEmpty()){ if(!emptyChildParentList.isEmpty()){
List<BomNewPbomParentEntity> fList = emptyChildParentList.stream().filter(p -> {
Optional<BomNewEbomParentVO> opt = bomTree.stream().filter(t -> p.getMaterialNo().equals(t.getMaterialNo())).findFirst();
if(opt.isPresent()){
List<BomNewEbomParentVO> cList = bomTree.stream().filter(t -> t.getParentRowId().equals(opt.get().getRowId())).collect(Collectors.toList());
if(cList.size() > 0){
Map<String,List<BomNewEbomParentVO>> ptMap = cList.stream().collect(Collectors.groupingBy(BaseMaterialVO::getProjectType));
return ptMap.getOrDefault("F",Lists.newArrayList()).size() == cList.size();
}
}
return false;
}).collect(Collectors.toList());
if(!fList.isEmpty()){
String m = fList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct().collect(Collectors.joining(","));
OperationErrorMsgVO oem = new OperationErrorMsgVO();
oem.setPrimaryKey(m);
oem.msg = String.format("物料%s因下级全部是F项仅保存EBOM未生成PBOM数据",m);
rList.add(oem);
}
// rList = emptyChildParentList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct() // rList = emptyChildParentList.stream().map(BomNewPbomParentEntity::getMaterialNo).distinct()
// .map(m -> { // .map(m -> {
// OperationErrorMsgVO oem = new OperationErrorMsgVO(); // OperationErrorMsgVO oem = new OperationErrorMsgVO();

View File

@ -2,6 +2,8 @@ package com.nflg.product.bomnew.service.domain.PBom;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@ -19,12 +21,14 @@ import com.nflg.product.bomnew.service.MaterialMainService;
import com.nflg.product.bomnew.util.VUtils; import com.nflg.product.bomnew.util.VUtils;
import com.nflg.product.bomnew.util.VersionUtil; import com.nflg.product.bomnew.util.VersionUtil;
import lombok.Getter; import lombok.Getter;
import org.apache.commons.compress.utils.Lists;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
/** /**
* 工艺包构建 * 工艺包构建
@ -219,7 +223,11 @@ public class TechnologyPackageParamBuilder {
child.setRowId(IdWorker.getId()); child.setRowId(IdWorker.getId());
child.setParentRowId(parent.getRowId()); child.setParentRowId(parent.getRowId());
child.setFacCode(parent.getFacCode()); child.setFacCode(parent.getFacCode());
child.setOrderNumber(StrUtil.padPre (String.valueOf(parentChildren.size()+1),3,"0")); //虚拟包作为下级时序号按照已有的子级取出最大的序号值+1 by 10002327 0925
int orderNumber = parentChildren.stream().max((p1,p2) -> p1.getOrderNumber().compareTo(p2.getOrderNumber()))
.map(m -> Convert.toInt(m.getOrderNumber())).orElse(0);
child.setOrderNumber(StrUtil.padPre (String.valueOf(orderNumber+1),3,"0"));
child.setDrawingNo(packageMaterial.getDrawingNo()); child.setDrawingNo(packageMaterial.getDrawingNo());
child.setMaterialNo(packageMaterial.getMaterialNo()); child.setMaterialNo(packageMaterial.getMaterialNo());
child.setMaterialName(packageMaterial.getMaterialName()); child.setMaterialName(packageMaterial.getMaterialName());

View File

@ -35,6 +35,28 @@
</encoder> </encoder>
</appender> </appender>
<!-- error日志 -->
<appender name="ErrorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<file>${logDir}/error/nflg-bom-new-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按日期滚动,每天生成一个文件 -->
<fileNamePattern>${logDir}/error/%d{yyyy-MM-dd}.%i.error.log</fileNamePattern>
<!-- 保留15天的日志 -->
<maxHistory>30</maxHistory>
<!-- 启动时,是否删除旧的日志文件 -->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 单天单个日志最大size -->
<maxFileSize>${splitSize}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n</pattern>
</encoder>
</appender>
<!-- 忽略Nacos服务器的INFO日志 --> <!-- 忽略Nacos服务器的INFO日志 -->
<logger name="com.alibaba.nacos" level="WARN" /> <logger name="com.alibaba.nacos" level="WARN" />
@ -43,4 +65,7 @@
<appender-ref ref="Console" /> <appender-ref ref="Console" />
<appender-ref ref="RollingFileAll" /> <appender-ref ref="RollingFileAll" />
</root> </root>
<root level="ERROR">
<appender-ref ref="ErrorFile" />
</root>
</configuration> </configuration>

View File

@ -35,6 +35,28 @@
</encoder> </encoder>
</appender> </appender>
<!-- error日志 -->
<appender name="ErrorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<file>${logDir}/error/nflg-bom-new-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按日期滚动,每天生成一个文件 -->
<fileNamePattern>${logDir}/error/%d{yyyy-MM-dd}.%i.error.log</fileNamePattern>
<!-- 保留15天的日志 -->
<maxHistory>30</maxHistory>
<!-- 启动时,是否删除旧的日志文件 -->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 单天单个日志最大size -->
<maxFileSize>${splitSize}</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%logger:显示类名 %msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n</pattern>
</encoder>
</appender>
<logger name="com.alibaba.nacos" level="WARN" /> <logger name="com.alibaba.nacos" level="WARN" />
<logger name="org.mybatis.spring" level="WARN"/> <logger name="org.mybatis.spring" level="WARN"/>
<logger name="org.springframework.web" level="WARN"/> <logger name="org.springframework.web" level="WARN"/>
@ -46,4 +68,7 @@
<appender-ref ref="Console" /> <appender-ref ref="Console" />
<appender-ref ref="RollingFileAll" /> <appender-ref ref="RollingFileAll" />
</root> </root>
<root level="ERROR">
<appender-ref ref="ErrorFile" />
</root>
</configuration> </configuration>