Merge remote-tracking branch 'origin/master-virtualPackageOrderNumber-lhj0925'
This commit is contained in:
commit
ec91721d33
|
|
@ -6,16 +6,19 @@ import cn.hutool.core.convert.Convert;
|
|||
import cn.hutool.core.lang.TypeReference;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.nflg.product.base.core.api.BaseApi;
|
||||
import com.nflg.product.base.core.exception.NflgBusinessException;
|
||||
import com.nflg.product.bomnew.constant.ReportConstant;
|
||||
import com.nflg.product.bomnew.pojo.entity.MaterialMainEntity;
|
||||
import com.nflg.product.bomnew.pojo.query.ChildBomReportQuery;
|
||||
import com.nflg.product.bomnew.pojo.query.CompareReportQuery;
|
||||
import com.nflg.product.bomnew.pojo.query.ReverseReportQuery;
|
||||
import com.nflg.product.bomnew.pojo.vo.*;
|
||||
import com.nflg.product.bomnew.service.CompareReportService;
|
||||
import com.nflg.product.bomnew.service.ForwardReportService;
|
||||
import com.nflg.product.bomnew.service.MaterialMainService;
|
||||
import com.nflg.product.bomnew.service.ReverseReportService;
|
||||
import com.nflg.product.bomnew.util.EecExcelUtil;
|
||||
import com.nflg.product.bomnew.util.VUtils;
|
||||
|
|
@ -32,9 +35,13 @@ import org.ttzero.excel.entity.ListSheet;
|
|||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import javax.xml.transform.Result;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Api(tags = "BOM-报表接口")
|
||||
@RestController
|
||||
|
|
@ -50,6 +57,8 @@ public class BomReportApi extends BaseApi {
|
|||
@Resource
|
||||
CompareReportService compareReportService;
|
||||
|
||||
@Resource
|
||||
MaterialMainService materialMainService;
|
||||
|
||||
@PostMapping("reverseReport")
|
||||
@ApiOperation("bom-反查")
|
||||
|
|
@ -123,8 +132,18 @@ public class BomReportApi extends BaseApi {
|
|||
if (resultVO != null) {
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
return ResultVO.success(forwardReportService.factoryBomType(query));
|
||||
//物料描述从 物料主数据获取 by 10002327 240926
|
||||
ReportBomVO r = forwardReportService.factoryBomType(query);
|
||||
if(r == null){
|
||||
return ResultVO.error("查无数据~");
|
||||
}
|
||||
if(CollUtil.isNotEmpty(r.getChildNodes())){
|
||||
Set<String> materialNoSet = r.getChildNodes().stream().map(BaseMaterialVO::getMaterialNo).collect(Collectors.toSet());
|
||||
List<MaterialMainEntity> materialMainList = materialMainService.list(Wrappers.<MaterialMainEntity>lambdaQuery().in(MaterialMainEntity::getMaterialNo,materialNoSet));
|
||||
Map<String,String> materialMainMap = materialMainList.stream().collect(Collectors.toMap(MaterialMainEntity::getMaterialNo,MaterialMainEntity::getMaterialDesc,(k1, k2)->k1));
|
||||
r.getChildNodes().forEach(c -> c.setMaterialDesc(materialMainMap.getOrDefault(c.getMaterialNo(),c.getMaterialDesc())));
|
||||
}
|
||||
return ResultVO.success(r);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -99,12 +99,12 @@ public class DQBomApi extends BaseApi {
|
|||
@ApiOperation("分页查询数据")
|
||||
public ResultVO<Page<BomNewDQbomVO>> getPageList(@Valid @RequestBody @NotNull BomNewDQbomPageQuery query) {
|
||||
// 电气BOM正式表查询无须添加时间条件 by 10002327 240918
|
||||
// if (query.getStatus() == 2) {
|
||||
// if (StrUtil.isBlank(query.getStartDate()) && StrUtil.isBlank(query.getEndDate())) {
|
||||
// query.setStartDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(-2), "yyyy-MM-dd"));
|
||||
// query.setEndDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), "yyyy-MM-dd"));
|
||||
// }
|
||||
// }
|
||||
if (query.getStatus() == 2) {
|
||||
if (StrUtil.isAllBlank(query.getDrawingNo(),query.getMaterialNo(),query.getMaterialName(),query.getStartDate(),query.getEndDate())) {
|
||||
query.setStartDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(-2), "yyyy-MM-dd"));
|
||||
query.setEndDate(LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), "yyyy-MM-dd"));
|
||||
}
|
||||
}
|
||||
return ResultVO.success(dQBomService.getPageList(query));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import nflg.product.common.constant.STATE;
|
|||
import nflg.product.common.vo.ResultVO;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.checkerframework.checker.nullness.Opt;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -1021,11 +1022,31 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
// //4、删掉ebom 子级的数据
|
||||
// ebomChildService.remove(Wrappers.<BomNewEbomChildEntity>lambdaQuery().in(BomNewEbomChildEntity::getParentRowId,ebomParentIdList));
|
||||
// }
|
||||
//3、判断parent下是否有子级,如果没有的话,把parent给删除了 物料****因下级全部是F项,仅保存EBOM,未生成PBOM数据
|
||||
//3、判断parent下是否有子级,排除电控系统和仙桃的,如果没有的话,把parent给删除了 物料****因下级全部是F项,仅保存EBOM,未生成PBOM数据 仙桃)
|
||||
List<BomNewPbomParentEntity> emptyChildParentList = eBomToPBom.getPBomParentResult().stream()
|
||||
.filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) )
|
||||
.filter(p -> !p.getMaterialDesc().contains("电控系统") && !p.getMaterialDesc().contains("仙桃)")
|
||||
&& !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) )
|
||||
.collect(Collectors.toList());
|
||||
if(!emptyChildParentList.isEmpty()){
|
||||
//仅选择的第一层需要提示
|
||||
List<BomNewPbomParentEntity> fList = emptyChildParentList.stream().filter(p -> p.getSourceRowId().equals(bomRowId)).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()
|
||||
// .map(m -> {
|
||||
// OperationErrorMsgVO oem = new OperationErrorMsgVO();
|
||||
|
|
@ -1197,9 +1218,30 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
|||
eBomToPBom.getPBomChildResult().removeAll(pbomChild);
|
||||
//3、判断parent下是否有子级,如果没有的话,把parent给删除了 物料****因下级全部是F项,仅保存EBOM,未生成PBOM数据
|
||||
List<BomNewPbomParentEntity> emptyChildParentList = eBomToPBom.getPBomParentResult().stream()
|
||||
.filter(p -> !p.getMaterialDesc().contains("电控系统") && !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) )
|
||||
.filter(p -> !p.getMaterialDesc().contains("电控系统") && !p.getMaterialDesc().contains("仙桃)")
|
||||
&& !eBomToPBom.getPBomChildResult().stream().map(BomNewPbomChildEntity::getParentRowId).collect(Collectors.toList()).contains(p.getRowId()) )
|
||||
.collect(Collectors.toList());
|
||||
if(!emptyChildParentList.isEmpty()){
|
||||
//仅选择的第一层需要提示
|
||||
List<BomNewPbomParentEntity> fList = emptyChildParentList.stream().filter(p -> p.getSourceRowId().equals(bomRowId)).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()
|
||||
// .map(m -> {
|
||||
// OperationErrorMsgVO oem = new OperationErrorMsgVO();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.nflg.product.bomnew.service.domain.PBom;
|
|||
|
||||
|
||||
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.extra.spring.SpringUtil;
|
||||
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.VersionUtil;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 工艺包构建
|
||||
|
|
@ -219,7 +223,11 @@ public class TechnologyPackageParamBuilder {
|
|||
child.setRowId(IdWorker.getId());
|
||||
child.setParentRowId(parent.getRowId());
|
||||
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.setMaterialNo(packageMaterial.getMaterialNo());
|
||||
child.setMaterialName(packageMaterial.getMaterialName());
|
||||
|
|
|
|||
|
|
@ -35,6 +35,28 @@
|
|||
</encoder>
|
||||
</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日志 -->
|
||||
<logger name="com.alibaba.nacos" level="WARN" />
|
||||
|
||||
|
|
@ -43,4 +65,7 @@
|
|||
<appender-ref ref="Console" />
|
||||
<appender-ref ref="RollingFileAll" />
|
||||
</root>
|
||||
<root level="ERROR">
|
||||
<appender-ref ref="ErrorFile" />
|
||||
</root>
|
||||
</configuration>
|
||||
|
|
@ -35,6 +35,28 @@
|
|||
</encoder>
|
||||
</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="org.mybatis.spring" level="WARN"/>
|
||||
<logger name="org.springframework.web" level="WARN"/>
|
||||
|
|
@ -46,4 +68,7 @@
|
|||
<appender-ref ref="Console" />
|
||||
<appender-ref ref="RollingFileAll" />
|
||||
</root>
|
||||
<root level="ERROR">
|
||||
<appender-ref ref="ErrorFile" />
|
||||
</root>
|
||||
</configuration>
|
||||
Loading…
Reference in New Issue