变更通知单
This commit is contained in:
parent
ae38289524
commit
fd94ef194b
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.nflg.product.bomnew.mapper.master;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumDetail2Entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author makejava
|
||||||
|
*/
|
||||||
|
public interface BomNewNoticeNumDetail2Mapper extends BaseMapper<BomNewNoticeNumDetail2Entity> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
package com.nflg.product.bomnew.pojo.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* t_bom_new_notice_num_detail2
|
||||||
|
* 变更通知单明细表2
|
||||||
|
*
|
||||||
|
* @author makejava
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@ApiModel(value = "com-nflg-product-bomnew-pojo-main-entity-BomNewNoticeNumDetail2Entity")
|
||||||
|
@TableName(value = "t_bom_new_notice_num_detail2")
|
||||||
|
public class BomNewNoticeNumDetail2Entity implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 行ID 雪花
|
||||||
|
*/
|
||||||
|
@TableId(value = "row_id", type = IdType.ASSIGN_ID)
|
||||||
|
@ApiModelProperty(value = "行ID 雪花")
|
||||||
|
private Long rowId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 行ID 雪花抬头行ID
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "header_row_id")
|
||||||
|
private Long headerRowId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父级编码
|
||||||
|
*/
|
||||||
|
@TableField(value = "parent_material_no")
|
||||||
|
@ApiModelProperty(value = "父级编码")
|
||||||
|
private String parentMaterialNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BOM行编号
|
||||||
|
*/
|
||||||
|
@TableField(value = "order_num")
|
||||||
|
@ApiModelProperty(value = "BOM行编号")
|
||||||
|
private String orderNum;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@TableField(value = "material_no")
|
||||||
|
@ApiModelProperty(value = "物料编码")
|
||||||
|
private String materialNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更内容 1=BOM物料增加 2=BOM物料减少 3=BOM物料替换 4=BOM物料数量变更 5=BOM项目类别变更
|
||||||
|
*/
|
||||||
|
@TableField(value = "change_type")
|
||||||
|
@ApiModelProperty(value = "变更内容 1=BOM物料增加 2=BOM物料减少 3=BOM物料替换 4=BOM物料数量变更 5=BOM项目类别变更")
|
||||||
|
private Integer changeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更内容 1=BOM物料增加 2=BOM物料减少 3=BOM物料替换 4=BOM物料数量变更 5=BOM项目类别变更
|
||||||
|
*/
|
||||||
|
@TableField(value = "change_content")
|
||||||
|
@ApiModelProperty(value = "变更内容 1=BOM物料增加 2=BOM物料减少 3=BOM物料替换 4=BOM物料数量变更 5=BOM项目类别变更")
|
||||||
|
private String changeContent;
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -115,6 +115,8 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
||||||
private BomNewNoticeNumService bomNewNoticeNumService;
|
private BomNewNoticeNumService bomNewNoticeNumService;
|
||||||
@Resource
|
@Resource
|
||||||
private BomNewNoticeNumDetailService bomNewNoticeNumDetailService;
|
private BomNewNoticeNumDetailService bomNewNoticeNumDetailService;
|
||||||
|
@Resource
|
||||||
|
private BomNewNoticeNumDetail2Service bomNewNoticeNumDetail2Service;
|
||||||
|
|
||||||
public List<BomNewEbomParentVO> getParentChild( Long rowId) {
|
public List<BomNewEbomParentVO> getParentChild( Long rowId) {
|
||||||
|
|
||||||
|
|
@ -2978,27 +2980,84 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
||||||
|
|
||||||
saveEntity.setChangeDesc(param.getChangeDesc());
|
saveEntity.setChangeDesc(param.getChangeDesc());
|
||||||
saveEntity.setNoticeContent(newestParent.getMaterialDesc() + "BOM变更(由EBOM发起),详见下方明细:");
|
saveEntity.setNoticeContent(newestParent.getMaterialDesc() + "BOM变更(由EBOM发起),详见下方明细:");
|
||||||
saveEntity.setNoticeTitle("关于" + newestParent.getMaterialDesc() + "BOM变更的通知");
|
saveEntity.setNoticeTitle(param.getChangeDesc());
|
||||||
saveEntity.setOaStatus(1); // 待提交
|
saveEntity.setOaStatus(1); // 待提交
|
||||||
saveEntity.setCreatedName(SessionUtil.getRealName());
|
saveEntity.setCreatedName(SessionUtil.getRealName());
|
||||||
saveEntity.setCreatedBy(SessionUtil.getUserCode());
|
saveEntity.setCreatedBy(SessionUtil.getUserCode());
|
||||||
saveEntity.setCreatedTime(LocalDateTime.now());
|
saveEntity.setCreatedTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
String autoCode = null;
|
||||||
// 关联已有通知单
|
// 关联已有通知单
|
||||||
if (param.getNumType() == 2) {
|
if (param.getNumType() == 2) {
|
||||||
saveEntity.setNoticeNum(param.getNoticeNums());
|
saveEntity.setNoticeNum(param.getNoticeNums());
|
||||||
} else {
|
} else {
|
||||||
saveEntity.setNoticeNum(bomNewNoticeNumService.generateNoticeNum());
|
autoCode = bomNewNoticeNumService.generateNoticeNum();
|
||||||
|
saveEntity.setNoticeNum(autoCode);
|
||||||
}
|
}
|
||||||
bomNewNoticeNumService.save(saveEntity);
|
bomNewNoticeNumService.save(saveEntity);
|
||||||
|
|
||||||
|
// 正式表回写通知单号,升版说明
|
||||||
|
BomNewEbomParentFormalEntity updateFormalParent = new BomNewEbomParentFormalEntity();
|
||||||
|
updateFormalParent.setRowId(versionList.get(0).getRowId());
|
||||||
|
if (param.getNumType() == 2) {
|
||||||
|
updateFormalParent.setNoticeNums(param.getNoticeNums());
|
||||||
|
} else {
|
||||||
|
updateFormalParent.setNoticeNums(autoCode);
|
||||||
|
}
|
||||||
|
updateFormalParent.setChangeDesc(param.getChangeDesc());
|
||||||
|
bomNewEbomParentFormalService.updateById(updateFormalParent);
|
||||||
|
// 工作表最新版回写通知单号,升版说明(因为正式表标签页查询的也是工作表最新版的数据?)
|
||||||
|
BomNewEbomParentEntity updateParent = new BomNewEbomParentEntity();
|
||||||
|
updateParent.setRowId(versionList.get(0).getRowId());
|
||||||
|
if (param.getNumType() == 2) {
|
||||||
|
updateParent.setNoticeNums(param.getNoticeNums());
|
||||||
|
} else {
|
||||||
|
updateParent.setNoticeNums(autoCode);
|
||||||
|
}
|
||||||
|
updateParent.setChangeDesc(param.getChangeDesc());
|
||||||
|
this.updateById(updateParent);
|
||||||
|
|
||||||
// 新建通知单
|
// 新建通知单
|
||||||
if (param.getNumType() == 1) {
|
if (param.getNumType() == 1) {
|
||||||
|
// BOM明细集合1,如果某父级A的任一子级,相对于上一版本有变更(变更判断优先顺序:物料增加>物料减少>物料替代>改物料数量>改物料项目类别),则记录父级A到集合1
|
||||||
|
List<BomNewNoticeNumDetailEntity> noticeNumDetailEntityList = new ArrayList<>();
|
||||||
|
// BOM明细集合2,如果某父级A的子级,相对于上一版本有变更(5种情况都得考虑),则记录变更的子级到集合2
|
||||||
|
List<BomNewNoticeNumDetail2Entity> noticeNumDetailEntity2List = new ArrayList<>();
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
// 递归调用
|
||||||
|
buildNoticeNumDetailList(saveEntity.getRowId(), noticeNumDetailEntityList, noticeNumDetailEntity2List, newestParent, lastParent);
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
log.info("【EBOM {} 生成变更通知单】递归调用耗时(ms):{}", newestParent.getMaterialNo(), (end - start));
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(noticeNumDetailEntityList)) {
|
||||||
|
bomNewNoticeNumDetailService.saveBatch(noticeNumDetailEntityList);
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(noticeNumDetailEntity2List)) {
|
||||||
|
bomNewNoticeNumDetail2Service.saveBatch(noticeNumDetailEntity2List);
|
||||||
|
}
|
||||||
|
bomNewNoticeNumService.sync2Oa(saveEntity, noticeNumDetailEntityList, noticeNumDetailEntity2List);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildNoticeNumDetailList(Long noticeNumRowId, List<BomNewNoticeNumDetailEntity> noticeNumDetailEntityList, List<BomNewNoticeNumDetail2Entity> noticeNumDetailEntity2List,
|
||||||
|
BomNewEbomParentFormalEntity newestParent, BomNewEbomParentFormalEntity lastParent) {
|
||||||
|
if (ObjectUtil.isEmpty(newestParent) || ObjectUtil.isEmpty(lastParent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<BomNewEbomChildFormalEntity> newestChildList = bomNewEbomChildFormalService.lambdaQuery().eq(BomNewEbomChildFormalEntity::getParentRowId, newestParent.getRowId()).list();
|
List<BomNewEbomChildFormalEntity> newestChildList = bomNewEbomChildFormalService.lambdaQuery().eq(BomNewEbomChildFormalEntity::getParentRowId, newestParent.getRowId()).list();
|
||||||
List<BomNewEbomChildFormalEntity> lastChildList = bomNewEbomChildFormalService.lambdaQuery().eq(BomNewEbomChildFormalEntity::getParentRowId, lastParent.getRowId()).list();
|
List<BomNewEbomChildFormalEntity> lastChildList = bomNewEbomChildFormalService.lambdaQuery().eq(BomNewEbomChildFormalEntity::getParentRowId, lastParent.getRowId()).list();
|
||||||
|
if (CollectionUtil.isEmpty(newestChildList) || CollectionUtil.isEmpty(lastChildList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<String> newestMaterialNos = newestChildList.stream().map(BomNewEbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
List<String> newestMaterialNos = newestChildList.stream().map(BomNewEbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
||||||
List<String> lastMaterialNos = lastChildList.stream().map(BomNewEbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
List<String> lastMaterialNos = lastChildList.stream().map(BomNewEbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
||||||
|
|
||||||
|
// Bom明细1 是否已经添加过该父级(只需添加一次)
|
||||||
|
boolean noticeNumDetailEntityListAdded = false;
|
||||||
|
|
||||||
// 假设旧版 [1,2,3,4,5] 新版 [3,4,5,6,7]
|
// 假设旧版 [1,2,3,4,5] 新版 [3,4,5,6,7]
|
||||||
// 旧版和新版的交集 -> [3,4,5]
|
// 旧版和新版的交集 -> [3,4,5]
|
||||||
List<String> intersection = new ArrayList<>(lastMaterialNos);
|
List<String> intersection = new ArrayList<>(lastMaterialNos);
|
||||||
|
|
@ -3010,94 +3069,152 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
|
||||||
List<String> difference2 = new ArrayList<>(newestMaterialNos);
|
List<String> difference2 = new ArrayList<>(newestMaterialNos);
|
||||||
difference2.removeAll(lastMaterialNos);
|
difference2.removeAll(lastMaterialNos);
|
||||||
|
|
||||||
List<BomNewNoticeNumDetailEntity> saveDetailList = new ArrayList<>();
|
|
||||||
// 物料变更的场景有5种:物料增加,物料减少,物料替代,改物料数量,改物料项目类别
|
// 物料变更的场景有5种:物料增加,物料减少,物料替代,改物料数量,改物料项目类别
|
||||||
|
|
||||||
// 两个差集元素的个数不等,则认为 difference2 的物料是增加,difference 的物料是减少
|
// 两个差集元素的个数不等,则认为 difference2 的物料是增加,difference 的物料是减少
|
||||||
if (difference.size() != difference2.size()) {
|
if (difference.size() != difference2.size()) {
|
||||||
difference.forEach(remove -> {
|
for (String add : difference2) {
|
||||||
BomNewEbomChildFormalEntity removeEntity = lastChildList.stream().filter(item -> item.getMaterialNo().equals(remove)).findFirst().orElse(null);
|
|
||||||
if (ObjectUtil.isNotEmpty(removeEntity)) {
|
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
|
||||||
saveDetail.setMaterialNo(removeEntity.getMaterialNo());
|
|
||||||
saveDetail.setDrawingNo(removeEntity.getDrawingNo());
|
|
||||||
saveDetail.setMaterialName(removeEntity.getMaterialName());
|
|
||||||
saveDetail.setParentMaterialNo("");
|
|
||||||
saveDetail.setChangeType(2);
|
|
||||||
saveDetail.setChangeContent("BOM物料减少");
|
|
||||||
saveDetailList.add(saveDetail);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
difference2.forEach(add -> {
|
|
||||||
BomNewEbomChildFormalEntity addEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(add)).findFirst().orElse(null);
|
BomNewEbomChildFormalEntity addEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(add)).findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(addEntity)) {
|
if (ObjectUtil.isNotEmpty(addEntity)) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(addEntity.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(addEntity.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(addEntity.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(1);
|
saveDetail.setChangeType(1);
|
||||||
saveDetail.setChangeContent("BOM物料增加");
|
saveDetail.setChangeContent("BOM物料增加");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
}
|
}
|
||||||
});
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(addEntity.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(addEntity.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(1);
|
||||||
|
saveDetail2.setChangeContent("BOM物料增加");
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (String remove : difference) {
|
||||||
|
BomNewEbomChildFormalEntity removeEntity = lastChildList.stream().filter(item -> item.getMaterialNo().equals(remove)).findFirst().orElse(null);
|
||||||
|
if (ObjectUtil.isNotEmpty(removeEntity)) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
|
saveDetail.setParentMaterialNo("");
|
||||||
|
saveDetail.setChangeType(2);
|
||||||
|
saveDetail.setChangeContent("BOM物料减少");
|
||||||
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
|
}
|
||||||
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(lastParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(removeEntity.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(removeEntity.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(2);
|
||||||
|
saveDetail2.setChangeContent("BOM物料减少");
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 个数相等,则认为 difference2 是 difference 的替代物料
|
// 个数相等,则认为 difference2 是 difference 的替代物料
|
||||||
if (CollectionUtil.isNotEmpty(difference2)) {
|
if (CollectionUtil.isNotEmpty(difference2)) {
|
||||||
difference2.forEach(replace -> {
|
for (String replace : difference2) {
|
||||||
BomNewEbomChildFormalEntity replaceEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(replace)).findFirst().orElse(null);
|
BomNewEbomChildFormalEntity replaceEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(replace)).findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(replaceEntity)) {
|
if (ObjectUtil.isNotEmpty(replaceEntity)) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(replaceEntity.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(replaceEntity.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(replaceEntity.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(3);
|
saveDetail.setChangeType(3);
|
||||||
saveDetail.setChangeContent("BOM物料替换");
|
saveDetail.setChangeContent("BOM物料替换");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
|
}
|
||||||
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(replaceEntity.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(replaceEntity.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(3);
|
||||||
|
saveDetail2.setChangeContent("BOM物料替换");
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 遍历交集,如果旧版和新版物料的数量不等,则认为是改物料数量;如果旧版和新版物料的项目类别不一致,则认为是改物料项目类别
|
// 遍历交集,如果旧版和新版物料的数量不等,则认为是改物料数量;如果旧版和新版物料的项目类别不一致,则认为是改物料项目类别
|
||||||
intersection.forEach(entity -> {
|
for (String entity : intersection) {
|
||||||
BomNewEbomChildFormalEntity lastChild = lastChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
BomNewEbomChildFormalEntity lastChild = lastChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
||||||
BomNewEbomChildFormalEntity newestChild = newestChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
BomNewEbomChildFormalEntity newestChild = newestChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(newestChild.getNum()) && newestChild.getNum().compareTo(lastChild.getNum()) != 0) {
|
if (ObjectUtil.isNotEmpty(newestChild.getNum()) && newestChild.getNum().compareTo(lastChild.getNum()) != 0) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(newestChild.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(newestChild.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(newestChild.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(4);
|
saveDetail.setChangeType(4);
|
||||||
saveDetail.setChangeContent("BOM物料数量变更");
|
saveDetail.setChangeContent("BOM物料数量变更");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
|
}
|
||||||
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(newestChild.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(newestChild.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(4);
|
||||||
|
saveDetail2.setChangeContent("BOM物料数量变更:" + lastChild.getNum() + "->" + newestChild.getNum());
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(newestChild.getProjectType()) && !newestChild.getProjectType().equals(lastChild.getProjectType())) {
|
if (ObjectUtil.isNotEmpty(newestChild.getProjectType()) && !newestChild.getProjectType().equals(lastChild.getProjectType())) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(newestChild.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(newestChild.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(newestChild.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(5);
|
saveDetail.setChangeType(5);
|
||||||
saveDetail.setChangeContent("BOM项目类别变更");
|
saveDetail.setChangeContent("BOM项目类别变更");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
}
|
}
|
||||||
});
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
bomNewNoticeNumDetailService.saveBatch(saveDetailList);
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
bomNewNoticeNumService.sync2Oa(saveEntity, saveDetailList);
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(newestChild.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(newestChild.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(5);
|
||||||
|
saveDetail2.setChangeContent("BOM项目类别变更:" + lastChild.getProjectType() + "->" + newestChild.getProjectType());
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
}
|
}
|
||||||
|
BomNewEbomParentFormalEntity newestP = bomNewEbomParentFormalService.lambdaQuery().eq(BomNewEbomParentFormalEntity::getRowId, newestChild.getBomVersionRowId()).one();
|
||||||
|
BomNewEbomParentFormalEntity lastP = bomNewEbomParentFormalService.lambdaQuery().eq(BomNewEbomParentFormalEntity::getRowId, lastChild.getBomVersionRowId()).one();
|
||||||
|
buildNoticeNumDetailList(noticeNumRowId, noticeNumDetailEntityList, noticeNumDetailEntity2List, newestP, lastP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.nflg.product.bomnew.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.nflg.product.bomnew.mapper.master.BomNewNoticeNumDetail2Mapper;
|
||||||
|
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumDetail2Entity;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author makejava
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class BomNewNoticeNumDetail2Service extends ServiceImpl<BomNewNoticeNumDetail2Mapper, BomNewNoticeNumDetail2Entity> {
|
||||||
|
}
|
||||||
|
|
@ -14,6 +14,7 @@ import com.nflg.product.bomnew.config.NacosConfig;
|
||||||
import com.nflg.product.bomnew.mapper.master.BomNewNoticeNumMapper;
|
import com.nflg.product.bomnew.mapper.master.BomNewNoticeNumMapper;
|
||||||
import com.nflg.product.bomnew.pojo.dto.OaNoticeNumParamDto;
|
import com.nflg.product.bomnew.pojo.dto.OaNoticeNumParamDto;
|
||||||
import com.nflg.product.bomnew.pojo.dto.OaResult;
|
import com.nflg.product.bomnew.pojo.dto.OaResult;
|
||||||
|
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumDetail2Entity;
|
||||||
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumDetailEntity;
|
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumDetailEntity;
|
||||||
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumEntity;
|
import com.nflg.product.bomnew.pojo.entity.BomNewNoticeNumEntity;
|
||||||
import com.nflg.product.bomnew.util.HttpUtils;
|
import com.nflg.product.bomnew.util.HttpUtils;
|
||||||
|
|
@ -61,8 +62,8 @@ public class BomNewNoticeNumService extends ServiceImpl<BomNewNoticeNumMapper, B
|
||||||
return "MJT" + today + "01";
|
return "MJT" + today + "01";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sync2Oa(BomNewNoticeNumEntity saveEntity, List<BomNewNoticeNumDetailEntity> saveDetailList) {
|
public void sync2Oa(BomNewNoticeNumEntity saveEntity, List<BomNewNoticeNumDetailEntity> saveDetailList, List<BomNewNoticeNumDetail2Entity> saveDetail2List) {
|
||||||
if (CollectionUtil.isEmpty(saveDetailList)) {
|
if (CollectionUtil.isEmpty(saveDetailList) && CollectionUtil.isEmpty(saveDetail2List)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String employeeNo = SessionUtil.getUserCode();
|
String employeeNo = SessionUtil.getUserCode();
|
||||||
|
|
@ -85,6 +86,16 @@ public class BomNewNoticeNumService extends ServiceImpl<BomNewNoticeNumMapper, B
|
||||||
bomList.add(bom);
|
bomList.add(bom);
|
||||||
});
|
});
|
||||||
main.put("bomList", bomList);
|
main.put("bomList", bomList);
|
||||||
|
List<Map<String, Object>> bomList2 = new ArrayList<>(saveDetail2List.size());
|
||||||
|
saveDetail2List.forEach(saveDetail2 -> {
|
||||||
|
Map<String, Object> bom = new HashMap<>();
|
||||||
|
bom.put("parentMaterialNo", saveDetail2.getParentMaterialNo()); // 父级编码
|
||||||
|
bom.put("orderNum", saveDetail2.getOrderNum()); // BOM行编号
|
||||||
|
bom.put("materialNo", saveDetail2.getMaterialNo()); // 编码
|
||||||
|
bom.put("changeContent", saveDetail2.getChangeContent()); // 变更内容
|
||||||
|
bomList2.add(bom);
|
||||||
|
});
|
||||||
|
main.put("bomList2", bomList2);
|
||||||
log.info("发起变更通知单-JSON:" + JSONArray.toJSONString(main));
|
log.info("发起变更通知单-JSON:" + JSONArray.toJSONString(main));
|
||||||
HttpUtils httpUtils = new HttpUtils();
|
HttpUtils httpUtils = new HttpUtils();
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,8 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
|
||||||
private BomNewNoticeNumService bomNewNoticeNumService;
|
private BomNewNoticeNumService bomNewNoticeNumService;
|
||||||
@Resource
|
@Resource
|
||||||
private BomNewNoticeNumDetailService bomNewNoticeNumDetailService;
|
private BomNewNoticeNumDetailService bomNewNoticeNumDetailService;
|
||||||
|
@Resource
|
||||||
|
private BomNewNoticeNumDetail2Service bomNewNoticeNumDetail2Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pbom-工作列表
|
* pbom-工作列表
|
||||||
|
|
@ -1541,27 +1543,84 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
|
||||||
|
|
||||||
saveEntity.setChangeDesc(param.getChangeDesc());
|
saveEntity.setChangeDesc(param.getChangeDesc());
|
||||||
saveEntity.setNoticeContent(newestParent.getMaterialDesc() + "BOM变更(由PBOM发起),详见下方明细:");
|
saveEntity.setNoticeContent(newestParent.getMaterialDesc() + "BOM变更(由PBOM发起),详见下方明细:");
|
||||||
saveEntity.setNoticeTitle("关于" + newestParent.getMaterialDesc() + "BOM变更的通知");
|
saveEntity.setNoticeTitle(param.getChangeDesc());
|
||||||
saveEntity.setOaStatus(1); // 待提交
|
saveEntity.setOaStatus(1); // 待提交
|
||||||
saveEntity.setCreatedName(SessionUtil.getRealName());
|
saveEntity.setCreatedName(SessionUtil.getRealName());
|
||||||
saveEntity.setCreatedBy(SessionUtil.getUserCode());
|
saveEntity.setCreatedBy(SessionUtil.getUserCode());
|
||||||
saveEntity.setCreatedTime(LocalDateTime.now());
|
saveEntity.setCreatedTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
String autoCode = null;
|
||||||
// 关联已有通知单
|
// 关联已有通知单
|
||||||
if (param.getNumType() == 2) {
|
if (param.getNumType() == 2) {
|
||||||
saveEntity.setNoticeNum(param.getNoticeNums());
|
saveEntity.setNoticeNum(param.getNoticeNums());
|
||||||
} else {
|
} else {
|
||||||
saveEntity.setNoticeNum(bomNewNoticeNumService.generateNoticeNum());
|
autoCode = bomNewNoticeNumService.generateNoticeNum();
|
||||||
|
saveEntity.setNoticeNum(autoCode);
|
||||||
}
|
}
|
||||||
bomNewNoticeNumService.save(saveEntity);
|
bomNewNoticeNumService.save(saveEntity);
|
||||||
|
|
||||||
|
// 正式表回写通知单号,升版说明
|
||||||
|
BomNewPbomParentFormalEntity updateFormalParent = new BomNewPbomParentFormalEntity();
|
||||||
|
updateFormalParent.setRowId(versionList.get(0).getRowId());
|
||||||
|
if (param.getNumType() == 2) {
|
||||||
|
updateFormalParent.setNoticeNums(param.getNoticeNums());
|
||||||
|
} else {
|
||||||
|
updateFormalParent.setNoticeNums(autoCode);
|
||||||
|
}
|
||||||
|
updateFormalParent.setChangeDesc(param.getChangeDesc());
|
||||||
|
bomNewPbomParentFormalService.updateById(updateFormalParent);
|
||||||
|
// 工作表最新版回写通知单号,升版说明(因为正式表标签页查询的也是工作表最新版的数据?)
|
||||||
|
BomNewPbomParentEntity updateParent = new BomNewPbomParentEntity();
|
||||||
|
updateParent.setRowId(versionList.get(0).getRowId());
|
||||||
|
if (param.getNumType() == 2) {
|
||||||
|
updateParent.setNoticeNums(param.getNoticeNums());
|
||||||
|
} else {
|
||||||
|
updateParent.setNoticeNums(autoCode);
|
||||||
|
}
|
||||||
|
updateParent.setChangeDesc(param.getChangeDesc());
|
||||||
|
this.updateById(updateParent);
|
||||||
|
|
||||||
// 新建通知单
|
// 新建通知单
|
||||||
if (param.getNumType() == 1) {
|
if (param.getNumType() == 1) {
|
||||||
|
// BOM明细集合1,如果某父级A的任一子级,相对于上一版本有变更(变更判断优先顺序:物料增加>物料减少>物料替代>改物料数量>改物料项目类别),则记录父级A到集合1
|
||||||
|
List<BomNewNoticeNumDetailEntity> noticeNumDetailEntityList = new ArrayList<>();
|
||||||
|
// BOM明细集合2,如果某父级A的子级,相对于上一版本有变更(5种情况都得考虑),则记录变更的子级到集合2
|
||||||
|
List<BomNewNoticeNumDetail2Entity> noticeNumDetailEntity2List = new ArrayList<>();
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
// 递归调用
|
||||||
|
buildNoticeNumDetailList(saveEntity.getRowId(), noticeNumDetailEntityList, noticeNumDetailEntity2List, newestParent, lastParent);
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
log.info("【PBOM {} 生成变更通知单】递归调用耗时(ms):{}", newestParent.getMaterialNo(), (end - start));
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(noticeNumDetailEntityList)) {
|
||||||
|
bomNewNoticeNumDetailService.saveBatch(noticeNumDetailEntityList);
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(noticeNumDetailEntity2List)) {
|
||||||
|
bomNewNoticeNumDetail2Service.saveBatch(noticeNumDetailEntity2List);
|
||||||
|
}
|
||||||
|
bomNewNoticeNumService.sync2Oa(saveEntity, noticeNumDetailEntityList, noticeNumDetailEntity2List);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buildNoticeNumDetailList(Long noticeNumRowId, List<BomNewNoticeNumDetailEntity> noticeNumDetailEntityList, List<BomNewNoticeNumDetail2Entity> noticeNumDetailEntity2List,
|
||||||
|
BomNewPbomParentFormalEntity newestParent, BomNewPbomParentFormalEntity lastParent) {
|
||||||
|
if (ObjectUtil.isEmpty(newestParent) || ObjectUtil.isEmpty(lastParent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<BomNewPbomChildFormalEntity> newestChildList = bomNewPbomChildFormalService.lambdaQuery().eq(BomNewPbomChildFormalEntity::getParentRowId, newestParent.getRowId()).list();
|
List<BomNewPbomChildFormalEntity> newestChildList = bomNewPbomChildFormalService.lambdaQuery().eq(BomNewPbomChildFormalEntity::getParentRowId, newestParent.getRowId()).list();
|
||||||
List<BomNewPbomChildFormalEntity> lastChildList = bomNewPbomChildFormalService.lambdaQuery().eq(BomNewPbomChildFormalEntity::getParentRowId, lastParent.getRowId()).list();
|
List<BomNewPbomChildFormalEntity> lastChildList = bomNewPbomChildFormalService.lambdaQuery().eq(BomNewPbomChildFormalEntity::getParentRowId, lastParent.getRowId()).list();
|
||||||
|
if (CollectionUtil.isEmpty(newestChildList) || CollectionUtil.isEmpty(lastChildList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<String> newestMaterialNos = newestChildList.stream().map(BomNewPbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
List<String> newestMaterialNos = newestChildList.stream().map(BomNewPbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
||||||
List<String> lastMaterialNos = lastChildList.stream().map(BomNewPbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
List<String> lastMaterialNos = lastChildList.stream().map(BomNewPbomChildFormalEntity::getMaterialNo).collect(Collectors.toList());
|
||||||
|
|
||||||
|
// Bom明细1 是否已经添加过该父级(只需添加一次)
|
||||||
|
boolean noticeNumDetailEntityListAdded = false;
|
||||||
|
|
||||||
// 假设旧版 [1,2,3,4,5] 新版 [3,4,5,6,7]
|
// 假设旧版 [1,2,3,4,5] 新版 [3,4,5,6,7]
|
||||||
// 旧版和新版的交集 -> [3,4,5]
|
// 旧版和新版的交集 -> [3,4,5]
|
||||||
List<String> intersection = new ArrayList<>(lastMaterialNos);
|
List<String> intersection = new ArrayList<>(lastMaterialNos);
|
||||||
|
|
@ -1573,94 +1632,152 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
|
||||||
List<String> difference2 = new ArrayList<>(newestMaterialNos);
|
List<String> difference2 = new ArrayList<>(newestMaterialNos);
|
||||||
difference2.removeAll(lastMaterialNos);
|
difference2.removeAll(lastMaterialNos);
|
||||||
|
|
||||||
List<BomNewNoticeNumDetailEntity> saveDetailList = new ArrayList<>();
|
|
||||||
// 物料变更的场景有5种:物料增加,物料减少,物料替代,改物料数量,改物料项目类别
|
// 物料变更的场景有5种:物料增加,物料减少,物料替代,改物料数量,改物料项目类别
|
||||||
|
|
||||||
// 两个差集元素的个数不等,则认为 difference2 的物料是增加,difference 的物料是减少
|
// 两个差集元素的个数不等,则认为 difference2 的物料是增加,difference 的物料是减少
|
||||||
if (difference.size() != difference2.size()) {
|
if (difference.size() != difference2.size()) {
|
||||||
difference.forEach(remove -> {
|
for (String add : difference2) {
|
||||||
BomNewPbomChildFormalEntity removeEntity = lastChildList.stream().filter(item -> item.getMaterialNo().equals(remove)).findFirst().orElse(null);
|
|
||||||
if (ObjectUtil.isNotEmpty(removeEntity)) {
|
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
|
||||||
saveDetail.setMaterialNo(removeEntity.getMaterialNo());
|
|
||||||
saveDetail.setDrawingNo(removeEntity.getDrawingNo());
|
|
||||||
saveDetail.setMaterialName(removeEntity.getMaterialName());
|
|
||||||
saveDetail.setParentMaterialNo("");
|
|
||||||
saveDetail.setChangeType(2);
|
|
||||||
saveDetail.setChangeContent("BOM物料减少");
|
|
||||||
saveDetailList.add(saveDetail);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
difference2.forEach(add -> {
|
|
||||||
BomNewPbomChildFormalEntity addEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(add)).findFirst().orElse(null);
|
BomNewPbomChildFormalEntity addEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(add)).findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(addEntity)) {
|
if (ObjectUtil.isNotEmpty(addEntity)) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(addEntity.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(addEntity.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(addEntity.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(1);
|
saveDetail.setChangeType(1);
|
||||||
saveDetail.setChangeContent("BOM物料增加");
|
saveDetail.setChangeContent("BOM物料增加");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
}
|
}
|
||||||
});
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(addEntity.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(addEntity.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(1);
|
||||||
|
saveDetail2.setChangeContent("BOM物料增加");
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (String remove : difference) {
|
||||||
|
BomNewPbomChildFormalEntity removeEntity = lastChildList.stream().filter(item -> item.getMaterialNo().equals(remove)).findFirst().orElse(null);
|
||||||
|
if (ObjectUtil.isNotEmpty(removeEntity)) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
|
saveDetail.setParentMaterialNo("");
|
||||||
|
saveDetail.setChangeType(2);
|
||||||
|
saveDetail.setChangeContent("BOM物料减少");
|
||||||
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
|
}
|
||||||
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(lastParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(removeEntity.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(removeEntity.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(2);
|
||||||
|
saveDetail2.setChangeContent("BOM物料减少");
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 个数相等,则认为 difference2 是 difference 的替代物料
|
// 个数相等,则认为 difference2 是 difference 的替代物料
|
||||||
if (CollectionUtil.isNotEmpty(difference2)) {
|
if (CollectionUtil.isNotEmpty(difference2)) {
|
||||||
difference2.forEach(replace -> {
|
for (String replace : difference2) {
|
||||||
BomNewPbomChildFormalEntity replaceEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(replace)).findFirst().orElse(null);
|
BomNewPbomChildFormalEntity replaceEntity = newestChildList.stream().filter(item -> item.getMaterialNo().equals(replace)).findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(replaceEntity)) {
|
if (ObjectUtil.isNotEmpty(replaceEntity)) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(replaceEntity.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(replaceEntity.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(replaceEntity.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(3);
|
saveDetail.setChangeType(3);
|
||||||
saveDetail.setChangeContent("BOM物料替换");
|
saveDetail.setChangeContent("BOM物料替换");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
|
}
|
||||||
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(replaceEntity.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(replaceEntity.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(3);
|
||||||
|
saveDetail2.setChangeContent("BOM物料替换");
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 遍历交集,如果旧版和新版物料的数量不等,则认为是改物料数量;如果旧版和新版物料的项目类别不一致,则认为是改物料项目类别
|
// 遍历交集,如果旧版和新版物料的数量不等,则认为是改物料数量;如果旧版和新版物料的项目类别不一致,则认为是改物料项目类别
|
||||||
intersection.forEach(entity -> {
|
for (String entity : intersection) {
|
||||||
BomNewPbomChildFormalEntity lastChild = lastChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
BomNewPbomChildFormalEntity lastChild = lastChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
||||||
BomNewPbomChildFormalEntity newestChild = newestChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
BomNewPbomChildFormalEntity newestChild = newestChildList.stream().filter(item -> item.getMaterialNo().equals(entity)).findFirst().orElse(null);
|
||||||
if (ObjectUtil.isNotEmpty(newestChild.getNum()) && newestChild.getNum().compareTo(lastChild.getNum()) != 0) {
|
if (ObjectUtil.isNotEmpty(newestChild.getNum()) && newestChild.getNum().compareTo(lastChild.getNum()) != 0) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(newestChild.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(newestChild.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(newestChild.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(4);
|
saveDetail.setChangeType(4);
|
||||||
saveDetail.setChangeContent("BOM物料数量变更");
|
saveDetail.setChangeContent("BOM物料数量变更");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
|
}
|
||||||
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(newestChild.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(newestChild.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(4);
|
||||||
|
saveDetail2.setChangeContent("BOM物料数量变更:" + lastChild.getNum() + "->" + newestChild.getNum());
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(newestChild.getProjectType()) && !newestChild.getProjectType().equals(lastChild.getProjectType())) {
|
if (ObjectUtil.isNotEmpty(newestChild.getProjectType()) && !newestChild.getProjectType().equals(lastChild.getProjectType())) {
|
||||||
|
if (!noticeNumDetailEntityListAdded) {
|
||||||
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
BomNewNoticeNumDetailEntity saveDetail = new BomNewNoticeNumDetailEntity();
|
||||||
saveDetail.setRowId(IdWorker.getId());
|
saveDetail.setRowId(IdWorker.getId());
|
||||||
saveDetail.setHeaderRowId(saveEntity.getRowId());
|
saveDetail.setHeaderRowId(noticeNumRowId);
|
||||||
saveDetail.setMaterialNo(newestChild.getMaterialNo());
|
saveDetail.setMaterialNo(newestParent.getMaterialNo());
|
||||||
saveDetail.setDrawingNo(newestChild.getDrawingNo());
|
saveDetail.setDrawingNo(newestParent.getDrawingNo());
|
||||||
saveDetail.setMaterialName(newestChild.getMaterialName());
|
saveDetail.setMaterialName(newestParent.getMaterialName());
|
||||||
saveDetail.setParentMaterialNo("");
|
saveDetail.setParentMaterialNo("");
|
||||||
saveDetail.setChangeType(5);
|
saveDetail.setChangeType(5);
|
||||||
saveDetail.setChangeContent("BOM项目类别变更");
|
saveDetail.setChangeContent("BOM项目类别变更");
|
||||||
saveDetailList.add(saveDetail);
|
noticeNumDetailEntityList.add(saveDetail);
|
||||||
|
noticeNumDetailEntityListAdded = true;
|
||||||
}
|
}
|
||||||
});
|
BomNewNoticeNumDetail2Entity saveDetail2 = new BomNewNoticeNumDetail2Entity();
|
||||||
bomNewNoticeNumDetailService.saveBatch(saveDetailList);
|
saveDetail2.setRowId(IdWorker.getId());
|
||||||
bomNewNoticeNumService.sync2Oa(saveEntity, saveDetailList);
|
saveDetail2.setHeaderRowId(noticeNumRowId);
|
||||||
|
saveDetail2.setParentMaterialNo(newestParent.getMaterialNo());
|
||||||
|
saveDetail2.setOrderNum(newestChild.getOrderNumber());
|
||||||
|
saveDetail2.setMaterialNo(newestChild.getMaterialNo());
|
||||||
|
saveDetail2.setChangeType(5);
|
||||||
|
saveDetail2.setChangeContent("BOM项目类别变更:" + lastChild.getProjectType() + "->" + newestChild.getProjectType());
|
||||||
|
noticeNumDetailEntity2List.add(saveDetail2);
|
||||||
}
|
}
|
||||||
|
BomNewPbomParentFormalEntity newestP = bomNewPbomParentFormalService.lambdaQuery().eq(BomNewPbomParentFormalEntity::getRowId, newestChild.getBomVersionRowId()).one();
|
||||||
|
BomNewPbomParentFormalEntity lastP = bomNewPbomParentFormalService.lambdaQuery().eq(BomNewPbomParentFormalEntity::getRowId, lastChild.getBomVersionRowId()).one();
|
||||||
|
buildNoticeNumDetailList(noticeNumRowId, noticeNumDetailEntityList, noticeNumDetailEntity2List, newestP, lastP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.nflg.product.bomnew.mapper.master.BomNewNoticeNumDetail2Mapper">
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue