Merge branch 'refs/heads/dev' into sit
This commit is contained in:
commit
654fb01f1e
|
|
@ -87,10 +87,10 @@ public class DQBomApi extends BaseApi {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ApiOperation("确认从excel导入数据")
|
@ApiOperation("确认从excel导入数据")
|
||||||
@PostMapping("importBomSave")
|
@GetMapping("importBomConfirm")
|
||||||
@LogRecord(success = "电气BOM-确认导入,操作结果:{{#_ret}}", bizNo = "", type = "电气BOM导入")
|
@LogRecord(success = "电气BOM-确认导入,操作结果:{{#_ret}}", bizNo = "", type = "电气BOM导入")
|
||||||
public ResultVO importBomSave() {
|
public ResultVO importBomConfirm(@Valid @RequestParam("save") @NotNull Boolean save) {
|
||||||
dqBomImportService.save();
|
dqBomImportService.importBomConfirm(save);
|
||||||
return ResultVO.success();
|
return ResultVO.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -129,9 +129,8 @@ public class DQBomApi extends BaseApi {
|
||||||
*/
|
*/
|
||||||
@PostMapping("temporary")
|
@PostMapping("temporary")
|
||||||
@ApiOperation("暂存")
|
@ApiOperation("暂存")
|
||||||
public ResultVO<String> temporary(@Valid @RequestBody @NotNull BomNewDQbomSaveQuery query) {
|
public ResultVO<BomNewDQbomSaveQuery> temporary(@Valid @RequestBody @NotNull BomNewDQbomSaveQuery query) {
|
||||||
dQBomService.save(query);
|
return ResultVO.success(dQBomService.save(query));
|
||||||
return ResultVO.success();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,5 @@ public class BomConstant {
|
||||||
|
|
||||||
public static final String SAP_YDBOM="1";
|
public static final String SAP_YDBOM="1";
|
||||||
|
|
||||||
public static final String MATERIAL_NO_TEMPORARY_PREFIX = "TN";
|
public static final String NO_TEMPORARY_PREFIX = "T";
|
||||||
public static final String DRAWING_NO_TEMPORARY_PREFIX = "TD";
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,6 @@ public interface BomNewDQbomChildMapper extends BaseMapper<BomNewDQbomChildEntit
|
||||||
void deleteAllChildren(Long parentRowId);
|
void deleteAllChildren(Long parentRowId);
|
||||||
|
|
||||||
List<BomNewDQbomVO> getBomsByParentRowId(Long rowId);
|
List<BomNewDQbomVO> getBomsByParentRowId(Long rowId);
|
||||||
|
|
||||||
|
List<BomNewDQbomVO> getBom(Long parentRowId, String materialNo);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
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 io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 曹鹏飞
|
||||||
|
* @date 2024/4/23 15:10:28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@ApiModel(value = "com-nflg-product-bomnew-pojo-new-entity-BomNewDQbomBaseEntity")
|
||||||
|
public class BomNewDQbomBaseEntity implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键-雪花
|
||||||
|
*/
|
||||||
|
@TableId(value = "row_id", type = IdType.ASSIGN_ID)
|
||||||
|
@ApiModelProperty(value = "主键-雪花")
|
||||||
|
protected Long rowId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图号
|
||||||
|
*/
|
||||||
|
@TableField(value = "drawing_no")
|
||||||
|
@ApiModelProperty(value = "图号")
|
||||||
|
protected String drawingNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@TableField(value = "material_no")
|
||||||
|
@ApiModelProperty(value = "物料编码")
|
||||||
|
protected String materialNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
@TableField(value = "material_unit")
|
||||||
|
@ApiModelProperty(value = "单位")
|
||||||
|
protected String materialUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
@TableField(value = "num")
|
||||||
|
@ApiModelProperty(value = "数量")
|
||||||
|
protected BigDecimal num;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 材质
|
||||||
|
*/
|
||||||
|
@TableField(value = "material_texture")
|
||||||
|
@ApiModelProperty(value = "材质")
|
||||||
|
protected String materialTexture;
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,12 @@
|
||||||
package com.nflg.product.bomnew.pojo.entity;
|
package com.nflg.product.bomnew.pojo.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
|
@ -21,14 +18,14 @@ import java.time.LocalDateTime;
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@ApiModel(value = "com-nflg-product-bomnew-pojo-new-entity-BomNewDQbomChildEntity")
|
@ApiModel(value = "com-nflg-product-bomnew-pojo-new-entity-BomNewDQbomChildEntity")
|
||||||
@TableName(value = "t_bom_new_dqbom_child")
|
@TableName(value = "t_bom_new_dqbom_child")
|
||||||
public class BomNewDQbomChildEntity implements Serializable {
|
public class BomNewDQbomChildEntity extends BomNewDQbomBaseEntity {
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 主键-雪花
|
// * 主键-雪花
|
||||||
*/
|
// */
|
||||||
@TableId(value = "row_id", type = IdType.ASSIGN_ID)
|
// @TableId(value = "row_id", type = IdType.ASSIGN_ID)
|
||||||
@ApiModelProperty(value = "主键-雪花")
|
// @ApiModelProperty(value = "主键-雪花")
|
||||||
private Long rowId;
|
// private Long rowId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 层次
|
* 层次
|
||||||
|
|
@ -65,19 +62,19 @@ public class BomNewDQbomChildEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "项目类别")
|
@ApiModelProperty(value = "项目类别")
|
||||||
private String projectType;
|
private String projectType;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 图号
|
// * 图号
|
||||||
*/
|
// */
|
||||||
@TableField(value = "drawing_no")
|
// @TableField(value = "drawing_no")
|
||||||
@ApiModelProperty(value = "图号")
|
// @ApiModelProperty(value = "图号")
|
||||||
private String drawingNo;
|
// private String drawingNo;
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 物料编码
|
// * 物料编码
|
||||||
*/
|
// */
|
||||||
@TableField(value = "material_no")
|
// @TableField(value = "material_no")
|
||||||
@ApiModelProperty(value = "物料编码")
|
// @ApiModelProperty(value = "物料编码")
|
||||||
private String materialNo;
|
// private String materialNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料名称
|
* 物料名称
|
||||||
|
|
@ -86,19 +83,19 @@ public class BomNewDQbomChildEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "物料名称")
|
@ApiModelProperty(value = "物料名称")
|
||||||
private String materialName;
|
private String materialName;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 材质
|
// * 材质
|
||||||
*/
|
// */
|
||||||
@TableField(value = "material_texture")
|
// @TableField(value = "material_texture")
|
||||||
@ApiModelProperty(value = "材质")
|
// @ApiModelProperty(value = "材质")
|
||||||
private String materialTexture;
|
// private String materialTexture;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 单位
|
// * 单位
|
||||||
*/
|
// */
|
||||||
@TableField(value = "material_unit")
|
// @TableField(value = "material_unit")
|
||||||
@ApiModelProperty(value = "单位")
|
// @ApiModelProperty(value = "单位")
|
||||||
private String materialUnit;
|
// private String materialUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单重
|
* 单重
|
||||||
|
|
@ -107,12 +104,12 @@ public class BomNewDQbomChildEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "单重")
|
@ApiModelProperty(value = "单重")
|
||||||
private BigDecimal unitWeight;
|
private BigDecimal unitWeight;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 数量
|
// * 数量
|
||||||
*/
|
// */
|
||||||
@TableField(value = "num")
|
// @TableField(value = "num")
|
||||||
@ApiModelProperty(value = "数量")
|
// @ApiModelProperty(value = "数量")
|
||||||
private BigDecimal num;
|
// private BigDecimal num;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 总重
|
* 总重
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,12 @@
|
||||||
package com.nflg.product.bomnew.pojo.entity;
|
package com.nflg.product.bomnew.pojo.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
|
@ -21,14 +18,14 @@ import java.time.LocalDateTime;
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@ApiModel(value = "com-nflg-product-bomnew-pojo-new-entity-BomNewDQbomParentEntity")
|
@ApiModel(value = "com-nflg-product-bomnew-pojo-new-entity-BomNewDQbomParentEntity")
|
||||||
@TableName(value = "t_bom_new_dqbom_parent")
|
@TableName(value = "t_bom_new_dqbom_parent")
|
||||||
public class BomNewDQbomParentEntity implements Serializable {
|
public class BomNewDQbomParentEntity extends BomNewDQbomBaseEntity {
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 主键-雪花
|
// * 主键-雪花
|
||||||
*/
|
// */
|
||||||
@TableId(value = "row_id", type = IdType.ASSIGN_ID)
|
// @TableId(value = "row_id", type = IdType.ASSIGN_ID)
|
||||||
@ApiModelProperty(value = "主键-雪花")
|
// @ApiModelProperty(value = "主键-雪花")
|
||||||
private Long rowId;
|
// private Long rowId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 层次
|
* 层次
|
||||||
|
|
@ -37,19 +34,19 @@ public class BomNewDQbomParentEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "层次")
|
@ApiModelProperty(value = "层次")
|
||||||
private Integer level;
|
private Integer level;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 图号
|
// * 图号
|
||||||
*/
|
// */
|
||||||
@TableField(value = "drawing_no")
|
// @TableField(value = "drawing_no")
|
||||||
@ApiModelProperty(value = "图号")
|
// @ApiModelProperty(value = "图号")
|
||||||
private String drawingNo;
|
// private String drawingNo;
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 物料编码
|
// * 物料编码
|
||||||
*/
|
// */
|
||||||
@TableField(value = "material_no")
|
// @TableField(value = "material_no")
|
||||||
@ApiModelProperty(value = "物料编码")
|
// @ApiModelProperty(value = "物料编码")
|
||||||
private String materialNo;
|
// private String materialNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料名称
|
* 物料名称
|
||||||
|
|
@ -58,19 +55,19 @@ public class BomNewDQbomParentEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "物料名称")
|
@ApiModelProperty(value = "物料名称")
|
||||||
private String materialName;
|
private String materialName;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 材质
|
// * 材质
|
||||||
*/
|
// */
|
||||||
@TableField(value = "material_texture")
|
// @TableField(value = "material_texture")
|
||||||
@ApiModelProperty(value = "材质")
|
// @ApiModelProperty(value = "材质")
|
||||||
private String materialTexture;
|
// private String materialTexture;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 单位
|
// * 单位
|
||||||
*/
|
// */
|
||||||
@TableField(value = "material_unit")
|
// @TableField(value = "material_unit")
|
||||||
@ApiModelProperty(value = "单位")
|
// @ApiModelProperty(value = "单位")
|
||||||
private String materialUnit;
|
// private String materialUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单重
|
* 单重
|
||||||
|
|
@ -79,12 +76,12 @@ public class BomNewDQbomParentEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "单重")
|
@ApiModelProperty(value = "单重")
|
||||||
private BigDecimal unitWeight;
|
private BigDecimal unitWeight;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 数量
|
// * 数量
|
||||||
*/
|
// */
|
||||||
@TableField(value = "num")
|
// @TableField(value = "num")
|
||||||
@ApiModelProperty(value = "数量")
|
// @ApiModelProperty(value = "数量")
|
||||||
private BigDecimal num;
|
// private BigDecimal num;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 总重
|
* 总重
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.nflg.product.bomnew.pojo.query;
|
package com.nflg.product.bomnew.pojo.query;
|
||||||
|
|
||||||
import com.nflg.product.bomnew.pojo.vo.BomNewDQbomSaveVO;
|
import com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -24,12 +24,12 @@ public class BomNewDQbomSaveQuery implements Serializable {
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "父级")
|
@ApiModelProperty(value = "父级")
|
||||||
@NotNull
|
@NotNull
|
||||||
private BomNewDQbomSaveVO parent;
|
private BomNewDQbomVO parent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 子级数据
|
* 子级数据
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "子级数据")
|
@ApiModelProperty(value = "子级数据")
|
||||||
@NotNull
|
@NotNull
|
||||||
private List<BomNewDQbomSaveVO> children;
|
private List<BomNewDQbomVO> children;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.nflg.product.bomnew.pojo.vo;
|
package com.nflg.product.bomnew.pojo.vo;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.nflg.product.bomnew.constant.BomConstant;
|
||||||
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity;
|
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
@ -106,4 +108,30 @@ public class BomNewDQbomVO extends BomNewDQbomChildEntity implements Serializabl
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "导入SAP状态,1-未导入;3-已导入")
|
@ApiModelProperty(value = "导入SAP状态,1-未导入;3-已导入")
|
||||||
private Integer sapState;
|
private Integer sapState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图号(显示用)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "图号(显示用)")
|
||||||
|
private String drawingNoDesc;
|
||||||
|
|
||||||
|
public String getDrawingNoDesc() {
|
||||||
|
if (StrUtil.isNotBlank(getDrawingNo()) && getDrawingNo().startsWith(BomConstant.NO_TEMPORARY_PREFIX)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return getDrawingNo();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料编码(显示用)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "物料编码(显示用)")
|
||||||
|
private String materialNoDesc;
|
||||||
|
|
||||||
|
public String getMaterialNoDesc() {
|
||||||
|
if (StrUtil.isNotBlank(getMaterialNo()) && getMaterialNo().startsWith(BomConstant.NO_TEMPORARY_PREFIX)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return getMaterialNo();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.nflg.product.bomnew.pojo.vo;
|
package com.nflg.product.bomnew.pojo.vo;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO;
|
import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.ttzero.excel.annotation.ExcelColumn;
|
import org.ttzero.excel.annotation.ExcelColumn;
|
||||||
|
|
@ -28,6 +29,13 @@ public class DQbomExcelVO extends BaseImportExcelDTO {
|
||||||
@ExcelColumn("材料")
|
@ExcelColumn("材料")
|
||||||
private String materialTexture;
|
private String materialTexture;
|
||||||
|
|
||||||
|
public String getMaterialTexture() {
|
||||||
|
if (StrUtil.isBlank(materialTexture)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return materialTexture;
|
||||||
|
}
|
||||||
|
|
||||||
@ExcelColumn(value = "数量")
|
@ExcelColumn(value = "数量")
|
||||||
private BigDecimal num;
|
private BigDecimal num;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ public class BomNewDQbomExceptionCheckService {
|
||||||
if (parent.getRootIs() == 1 || parent.getUserRootIs() == 1) {
|
if (parent.getRootIs() == 1 || parent.getUserRootIs() == 1) {
|
||||||
if ("T".equals(parent.getProjectType())) {
|
if ("T".equals(parent.getProjectType())) {
|
||||||
parent.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue());
|
parent.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue());
|
||||||
} else if (parent.getMaterialNo().startsWith(BomConstant.MATERIAL_NO_TEMPORARY_PREFIX)) {
|
} else if (parent.getMaterialNo().startsWith(BomConstant.NO_TEMPORARY_PREFIX)) {
|
||||||
status = EBomExceptionStatusEnum.EXCEPT_NO_4;
|
status = EBomExceptionStatusEnum.EXCEPT_NO_4;
|
||||||
} else {
|
} else {
|
||||||
BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(parent.getMaterialNo()))
|
BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(parent.getMaterialNo()))
|
||||||
|
|
@ -164,7 +164,7 @@ public class BomNewDQbomExceptionCheckService {
|
||||||
EBomExceptionStatusEnum status = EBomExceptionStatusEnum.OK;
|
EBomExceptionStatusEnum status = EBomExceptionStatusEnum.OK;
|
||||||
if ("T".equals(child.getProjectType())) {
|
if ("T".equals(child.getProjectType())) {
|
||||||
child.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue());
|
child.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue());
|
||||||
} else if (child.getMaterialNo().startsWith(BomConstant.MATERIAL_NO_TEMPORARY_PREFIX)) {
|
} else if (child.getMaterialNo().startsWith(BomConstant.NO_TEMPORARY_PREFIX)) {
|
||||||
status = EBomExceptionStatusEnum.EXCEPT_NO_4;
|
status = EBomExceptionStatusEnum.EXCEPT_NO_4;
|
||||||
} else {
|
} else {
|
||||||
BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(child.getMaterialNo()))
|
BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(child.getMaterialNo()))
|
||||||
|
|
|
||||||
|
|
@ -41,4 +41,8 @@ public class DQBomChildService extends ServiceImpl<BomNewDQbomChildMapper, BomNe
|
||||||
public List<BomNewDQbomVO> getBomsByParentRowId(Long rowId) {
|
public List<BomNewDQbomVO> getBomsByParentRowId(Long rowId) {
|
||||||
return this.getBaseMapper().getBomsByParentRowId(rowId);
|
return this.getBaseMapper().getBomsByParentRowId(rowId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<BomNewDQbomVO> getBom(Long parentRowId, String materialNo) {
|
||||||
|
return this.getBaseMapper().getBom(parentRowId, materialNo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.product.bomnew.service;
|
package com.nflg.product.bomnew.service;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||||
|
|
@ -8,10 +9,14 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.nflg.product.base.core.conmon.util.SessionUtil;
|
import com.nflg.product.base.core.conmon.util.SessionUtil;
|
||||||
import com.nflg.product.base.core.exception.NflgBusinessException;
|
import com.nflg.product.base.core.exception.NflgBusinessException;
|
||||||
import com.nflg.product.bomnew.constant.*;
|
import com.nflg.product.bomnew.constant.BomConstant;
|
||||||
|
import com.nflg.product.bomnew.constant.DQBomStatusEnum;
|
||||||
|
import com.nflg.product.bomnew.constant.EBomExceptionStatusEnum;
|
||||||
|
import com.nflg.product.bomnew.constant.UserJobEnum;
|
||||||
import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO;
|
import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO;
|
||||||
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity;
|
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity;
|
||||||
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomParentEntity;
|
import com.nflg.product.bomnew.pojo.entity.BomNewDQbomParentEntity;
|
||||||
|
import com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO;
|
||||||
import com.nflg.product.bomnew.pojo.vo.DQbomExcelVO;
|
import com.nflg.product.bomnew.pojo.vo.DQbomExcelVO;
|
||||||
import com.nflg.product.bomnew.pojo.vo.OperationErrorMsgVO;
|
import com.nflg.product.bomnew.pojo.vo.OperationErrorMsgVO;
|
||||||
import com.nflg.product.bomnew.util.*;
|
import com.nflg.product.bomnew.util.*;
|
||||||
|
|
@ -74,9 +79,10 @@ public class DQBomImportService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Pair<List<BomNewDQbomParentEntity>, List<BomNewDQbomChildEntity>> pcs = convertToBom(datas);
|
Pair<List<BomNewDQbomParentEntity>, List<BomNewDQbomChildEntity>> pcs = convertToBom(datas);
|
||||||
VUtils.isTure(CollUtil.isEmpty(pcs.getLeft())).throwMessage("所有数据都已经导入过了,请勿重复导入");
|
//VUtils.isTure(CollUtil.isEmpty(pcs.getLeft())).throwMessage("所有数据都已经导入过了,请勿重复导入");
|
||||||
try {
|
try {
|
||||||
checkInconsistentData(pcs.getLeft().get(0), pcs.getLeft(), pcs.getRight());
|
VUtils.isTure(checkInconsistentData(pcs.getLeft().get(0), pcs.getLeft(), pcs.getRight()))
|
||||||
|
.throwMessage("导入的数据已存在,请勿重复导入");
|
||||||
} catch (NflgBusinessException ex) {
|
} catch (NflgBusinessException ex) {
|
||||||
if (Objects.equals(ex.getState(), STATE.InconsistentDataError)) {
|
if (Objects.equals(ex.getState(), STATE.InconsistentDataError)) {
|
||||||
BOMMAP.put(SessionUtil.getUserCode(), pcs);
|
BOMMAP.put(SessionUtil.getUserCode(), pcs);
|
||||||
|
|
@ -101,53 +107,119 @@ public class DQBomImportService {
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void save(List<BomNewDQbomParentEntity> parents, List<BomNewDQbomChildEntity> children) {
|
public void save(List<BomNewDQbomParentEntity> parents, List<BomNewDQbomChildEntity> children) {
|
||||||
// checkExceptionStatus(parents, children);
|
Set<String> materialNos = parents.stream().map(BomNewDQbomParentEntity::getMaterialNo).collect(Collectors.toSet());
|
||||||
dQBomParentService.setLastVersionIs0(parents.stream().map(BomNewDQbomParentEntity::getMaterialNo).collect(Collectors.toList()));
|
List<BomNewDQbomParentEntity> oldParents = dQBomParentService.getLatestByMaterialNo(materialNos);
|
||||||
|
parents.forEach(p -> {
|
||||||
|
BomNewDQbomParentEntity oldParent = oldParents.stream().filter(op -> op.getMaterialNo().equals(p.getMaterialNo())).findFirst().orElse(null);
|
||||||
|
if (!Objects.isNull(oldParent) && Objects.equals(oldParent.getStatus(), DQBomStatusEnum.WAIT_CONVERT.getValue())) {
|
||||||
|
dQBomParentService.getBaseMapper().deleteById(oldParent.getRowId());
|
||||||
|
dQBomChildService.deleteAllChildren(oldParent.getRowId());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dQBomParentService.setLastVersionIs0(materialNos);
|
||||||
dQBomParentService.saveBatch(parents);
|
dQBomParentService.saveBatch(parents);
|
||||||
dQBomChildService.saveBatch(children);
|
dQBomChildService.saveBatch(children);
|
||||||
BomNewDQbomParentEntity root = parents.stream().filter(p -> p.getRootIs() == 1).findFirst().orElseThrow(() -> new NflgBusinessException(STATE.BusinessError, "根节点不存在"));
|
BomNewDQbomParentEntity root = parents.stream().filter(p -> p.getRootIs() == 1).findFirst().orElseThrow(() -> new NflgBusinessException(STATE.BusinessError, "根节点不存在"));
|
||||||
dQBomService.checkException(root.getRowId());
|
dQBomService.checkException(root.getRowId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void checkExceptionStatus(List<BomNewDQbomParentEntity> parents, List<BomNewDQbomChildEntity> children) {
|
private boolean checkInconsistentData(BomNewDQbomParentEntity parent, List<BomNewDQbomParentEntity> parents,
|
||||||
// BomNewDQbomExceptionCheckService checkService = new BomNewDQbomExceptionCheckService(dQBomParentService, dQBomChildService, materialMainService);
|
|
||||||
// checkService.check(parents, children);
|
|
||||||
// }
|
|
||||||
|
|
||||||
private void checkInconsistentData(BomNewDQbomParentEntity parent, List<BomNewDQbomParentEntity> parents,
|
|
||||||
List<BomNewDQbomChildEntity> children) throws JsonProcessingException {
|
List<BomNewDQbomChildEntity> children) throws JsonProcessingException {
|
||||||
log.debug("checkInconsistentData,parent:" + JsonUtil.toJson(parent));
|
log.debug("checkInconsistentData,entity:" + JsonUtil.toJson(parent));
|
||||||
BomNewDQbomParentEntity oldParent = dQBomParentService.getLatestByMaterialNo(parent.getMaterialNo());
|
BomNewDQbomParentEntity oldParent = dQBomParentService.getLatestByMaterialNo(parent.getMaterialNo());
|
||||||
if (!Objects.isNull(oldParent)) {
|
// if (parent.getRowId() > 0) {
|
||||||
Set<String> cc = children.stream().filter(c -> c.getParentRowId().equals(parent.getRowId()))
|
// old = dQBomParentService.getLatestByMaterialNo(parent.getMaterialNo());
|
||||||
.map(BomNewDQbomChildEntity::getMaterialNo)
|
// } else {
|
||||||
.collect(Collectors.toSet());
|
// old = dQBomChildService.lambdaQuery()
|
||||||
Set<String> oc = dQBomChildService.lambdaQuery().eq(BomNewDQbomChildEntity::getParentRowId, oldParent.getRowId())
|
// .eq(BomNewDQbomChildEntity::getParentRowId, parent.getRowId())
|
||||||
.list()
|
// .eq(BomNewDQbomChildEntity::getMaterialNo, parent.getMaterialNo())
|
||||||
.stream().map(BomNewDQbomChildEntity::getMaterialNo)
|
// .one();
|
||||||
.collect(Collectors.toSet());
|
|
||||||
// if (!Sets.difference(cc, oc).isEmpty()) {
|
|
||||||
// throw new NflgBusinessException(STATE.InconsistentDataError, "导入的数据和已存在的数据不一致,是否覆盖?");
|
|
||||||
// }
|
// }
|
||||||
boolean isSame = Sets.difference(cc, oc).isEmpty()
|
//BomNewDQbomParentEntity oldParent = dQBomParentService.getLatestByMaterialNo(parent.getMaterialNo());
|
||||||
&& Objects.equals(parent.getMaterialUnit(), oldParent.getMaterialUnit())
|
boolean isSame = true;
|
||||||
&& Objects.equals(parent.getNum(), oldParent.getNum())
|
if (Objects.isNull(oldParent)) {
|
||||||
|
return isSame;
|
||||||
|
}
|
||||||
|
isSame = Objects.equals(parent.getMaterialUnit(), oldParent.getMaterialUnit())
|
||||||
|
&& NumberUtil.equals(parent.getNum(), oldParent.getNum())
|
||||||
&& Objects.equals(parent.getMaterialTexture(), oldParent.getMaterialTexture());
|
&& Objects.equals(parent.getMaterialTexture(), oldParent.getMaterialTexture());
|
||||||
VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入");
|
|
||||||
|
|
||||||
if (Objects.equals(oldParent.getStatus(), DQBomStatusEnum.WAIT_CONVERT.getValue())) {
|
if (isSame) {
|
||||||
VUtils.isTure(!Objects.equals(oldParent.getCreatedBy(), SessionUtil.getUserCode()))
|
List<BomNewDQbomChildEntity> cc = children.stream()
|
||||||
.throwMessage(StrUtil.format("此物料已由{}导入过,不能再次导入", oldParent.getCreatedName()));
|
.filter(c -> c.getParentRowId().equals(parent.getRowId()))
|
||||||
throw new NflgBusinessException(STATE.InconsistentDataError, "导入的数据和已存在的数据不一致,是否覆盖?");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<BomNewDQbomParentEntity> ps = parents.stream().filter(p -> cc.contains(p.getMaterialNo()))
|
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
for (BomNewDQbomParentEntity p : ps) {
|
List<BomNewDQbomChildEntity> oc = dQBomChildService.lambdaQuery()
|
||||||
checkInconsistentData(p, parents, children);
|
.eq(BomNewDQbomChildEntity::getParentRowId, oldParent.getRowId())
|
||||||
|
.list();
|
||||||
|
|
||||||
|
isSame = cc.size() == oc.size()
|
||||||
|
&& cc.stream().filter(c -> c.getProjectType().equals("T")).count() == oc.stream().filter(c -> c.getProjectType().equals("T")).count()
|
||||||
|
&& Sets.difference(cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet()), oc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet())).isEmpty();
|
||||||
|
//VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入");
|
||||||
|
|
||||||
|
for (BomNewDQbomChildEntity ccc : cc) {
|
||||||
|
if (!checkInconsistentData(parent.getRowId(), ccc, parents, children)) {
|
||||||
|
isSame = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!isSame && Objects.equals(oldParent.getStatus(), DQBomStatusEnum.WAIT_CONVERT.getValue())) {
|
||||||
|
VUtils.isTure(!Objects.equals(oldParent.getCreatedBy(), SessionUtil.getUserCode()))
|
||||||
|
.throwMessage(StrUtil.format("{}已由{}导入过,不能再次导入", oldParent.getMaterialNo(), oldParent.getCreatedName()));
|
||||||
|
throw new NflgBusinessException(STATE.InconsistentDataError, oldParent.getMaterialNo() + "和已存在的数据不一致,是否覆盖?");
|
||||||
|
}
|
||||||
|
return isSame;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkInconsistentData(Long parentRowId, BomNewDQbomChildEntity child, List<BomNewDQbomParentEntity> parents,
|
||||||
|
List<BomNewDQbomChildEntity> children) throws JsonProcessingException {
|
||||||
|
log.debug("checkInconsistentData,entity:" + JsonUtil.toJson(child));
|
||||||
|
List<BomNewDQbomVO> oldChildren = dQBomChildService.getBom(parentRowId, child.getMaterialNo());
|
||||||
|
boolean isSame = true;
|
||||||
|
if (CollUtil.isEmpty(oldChildren)) return isSame;
|
||||||
|
BomNewDQbomVO oldChild;
|
||||||
|
if (oldChildren.size() == 1) {
|
||||||
|
oldChild = oldChildren.get(0);
|
||||||
|
} else {
|
||||||
|
oldChild = oldChildren.stream().filter(c -> Objects.equals(c.getOrderNumber(), child.getOrderNumber())).findFirst().orElse(null);
|
||||||
|
if (Objects.isNull(oldChild)) {
|
||||||
|
return isSame;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isSame = Objects.equals(child.getMaterialUnit(), oldChild.getMaterialUnit())
|
||||||
|
&& NumberUtil.equals(child.getNum(), oldChild.getNum())
|
||||||
|
&& Objects.equals(child.getMaterialTexture(), oldChild.getMaterialTexture());
|
||||||
|
|
||||||
|
if (isSame) {
|
||||||
|
BomNewDQbomParentEntity cp = parents.stream().filter(p -> p.getMaterialNo().equals(child.getMaterialNo())).findFirst().orElse(null);
|
||||||
|
if (!Objects.isNull(cp)) {
|
||||||
|
List<BomNewDQbomChildEntity> cc = children.stream()
|
||||||
|
.filter(c -> c.getParentRowId().equals(cp.getRowId()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
List<BomNewDQbomChildEntity> oc = dQBomChildService.lambdaQuery()
|
||||||
|
.eq(BomNewDQbomChildEntity::getParentRowId, oldChild.getBomRowId())
|
||||||
|
.list();
|
||||||
|
Set<String> ccm = cc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet());
|
||||||
|
|
||||||
|
isSame = cc.size() == oc.size()
|
||||||
|
&& cc.stream().filter(c -> c.getProjectType().equals("T")).count() == oc.stream().filter(c -> c.getProjectType().equals("T")).count()
|
||||||
|
&& Sets.difference(ccm, oc.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toSet())).isEmpty();
|
||||||
|
//VUtils.isTure(isSame).throwMessage("导入的数据已存在,请勿重复导入");
|
||||||
|
|
||||||
|
for (BomNewDQbomChildEntity ccc : cc) {
|
||||||
|
if (!checkInconsistentData(cp.getRowId(), ccc, parents, children)) {
|
||||||
|
isSame = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isSame && Objects.equals(oldChild.getStatus(), DQBomStatusEnum.WAIT_CONVERT.getValue())) {
|
||||||
|
VUtils.isTure(!Objects.equals(oldChild.getCreatedBy(), SessionUtil.getUserCode()))
|
||||||
|
.throwMessage(StrUtil.format("{}已由{}导入过,不能再次导入", oldChild.getMaterialNo(), oldChild.getCreatedName()));
|
||||||
|
throw new NflgBusinessException(STATE.InconsistentDataError, oldChild.getMaterialNo() + "和已存在的数据不一致,是否覆盖?");
|
||||||
|
}
|
||||||
|
return isSame;
|
||||||
|
}
|
||||||
|
|
||||||
private List<OperationErrorMsgVO> checkExcel(List<DQbomExcelVO> datas) {
|
private List<OperationErrorMsgVO> checkExcel(List<DQbomExcelVO> datas) {
|
||||||
List<OperationErrorMsgVO> errorMsg = new ArrayList<>();
|
List<OperationErrorMsgVO> errorMsg = new ArrayList<>();
|
||||||
|
|
@ -226,7 +298,7 @@ public class DQBomImportService {
|
||||||
parent.setNum(Objects.isNull(data.getNum()) ? BigDecimal.ZERO : data.getNum());
|
parent.setNum(Objects.isNull(data.getNum()) ? BigDecimal.ZERO : data.getNum());
|
||||||
parent.setTotalWeight(BomUtil.calculateTotalWeight(data.getNum(), data.getUnitWeight()));
|
parent.setTotalWeight(BomUtil.calculateTotalWeight(data.getNum(), data.getUnitWeight()));
|
||||||
parent.setProjectType(data.getProjectType());
|
parent.setProjectType(data.getProjectType());
|
||||||
parent.setCurrentVersion(OriginalConstant.DEFAULT_BOM_VERSION);
|
//parent.setCurrentVersion(OriginalConstant.DEFAULT_BOM_VERSION);
|
||||||
parent.setRootIs(index == 0 ? 1 : 0);
|
parent.setRootIs(index == 0 ? 1 : 0);
|
||||||
parent.setUserRootIs(index == 0 ? 1 : 0);
|
parent.setUserRootIs(index == 0 ? 1 : 0);
|
||||||
parent.setLastVersionIs(1);
|
parent.setLastVersionIs(1);
|
||||||
|
|
@ -268,7 +340,7 @@ public class DQBomImportService {
|
||||||
child.setTotalWeight(BomUtil.calculateTotalWeight(data.getNum(), data.getUnitWeight()));
|
child.setTotalWeight(BomUtil.calculateTotalWeight(data.getNum(), data.getUnitWeight()));
|
||||||
child.setOrderNumber(StrUtil.padPre(String.valueOf(orderMap.get(data.getLevel())), 3, '0'));
|
child.setOrderNumber(StrUtil.padPre(String.valueOf(orderMap.get(data.getLevel())), 3, '0'));
|
||||||
child.setDrawingNo(data.getDrawingNo());
|
child.setDrawingNo(data.getDrawingNo());
|
||||||
child.setCurrentVersion(parent == null ? OriginalConstant.DEFAULT_BOM_VERSION : parent.getCurrentVersion());
|
//child.setCurrentVersion(parent == null ? OriginalConstant.DEFAULT_BOM_VERSION : parent.getCurrentVersion());
|
||||||
child.setMaterialNo(data.getMaterialNo());
|
child.setMaterialNo(data.getMaterialNo());
|
||||||
child.setExceptionStatus(EBomExceptionStatusEnum.INIT.getValue());
|
child.setExceptionStatus(EBomExceptionStatusEnum.INIT.getValue());
|
||||||
child.setNum(Objects.isNull(data.getNum()) ? BigDecimal.ZERO : data.getNum());
|
child.setNum(Objects.isNull(data.getNum()) ? BigDecimal.ZERO : data.getNum());
|
||||||
|
|
@ -292,21 +364,25 @@ public class DQBomImportService {
|
||||||
|
|
||||||
dQbomExcelVO.setRowNum(rowNum.get());
|
dQbomExcelVO.setRowNum(rowNum.get());
|
||||||
if (dQbomExcelVO.getProjectType().equals("T")) {
|
if (dQbomExcelVO.getProjectType().equals("T")) {
|
||||||
BomNewDQbomParentEntity p = dQBomParentService.lambdaQuery()
|
long id = System.currentTimeMillis();
|
||||||
.eq(BomNewDQbomParentEntity::getMaterialName, dQbomExcelVO.getMaterialName())
|
dQbomExcelVO.setMaterialNo(BomConstant.NO_TEMPORARY_PREFIX + id);
|
||||||
.orderByDesc(BomNewDQbomParentEntity::getRowId)
|
dQbomExcelVO.setDrawingNo(BomConstant.NO_TEMPORARY_PREFIX + id);
|
||||||
.last(" limit 1")
|
if (StrUtil.isBlank(dQbomExcelVO.getMaterialUnit())) {
|
||||||
.one();
|
dQbomExcelVO.setMaterialUnit("PC");
|
||||||
if (p != null) {
|
}
|
||||||
dQbomExcelVO.setMaterialNo(p.getMaterialNo());
|
if (Objects.isNull(dQbomExcelVO.getNum()) || NumberUtil.equals(dQbomExcelVO.getNum(), BigDecimal.ZERO)) {
|
||||||
dQbomExcelVO.setDrawingNo(p.getMaterialNo());
|
dQbomExcelVO.setNum(BigDecimal.ONE);
|
||||||
} else {
|
|
||||||
String id = BomConstant.DRAWING_NO_TEMPORARY_PREFIX + System.currentTimeMillis();
|
|
||||||
dQbomExcelVO.setMaterialNo(id);
|
|
||||||
dQbomExcelVO.setDrawingNo(id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
excelContextTL.get().add(dQbomExcelVO);
|
excelContextTL.get().add(dQbomExcelVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void importBomConfirm(Boolean save) {
|
||||||
|
if (save) {
|
||||||
|
save();
|
||||||
|
} else {
|
||||||
|
BOMMAP.remove(SessionUtil.getUserCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -24,7 +25,7 @@ public class DQBomParentService extends ServiceImpl<BomNewDQbomParentMapper, Bom
|
||||||
.one();
|
.one();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastVersionIs0(List<String> materialNo) {
|
public void setLastVersionIs0(Collection<String> materialNo) {
|
||||||
this.lambdaUpdate().in(BomNewDQbomParentEntity::getMaterialNo, materialNo)
|
this.lambdaUpdate().in(BomNewDQbomParentEntity::getMaterialNo, materialNo)
|
||||||
.set(BomNewDQbomParentEntity::getLastVersionIs, 0)
|
.set(BomNewDQbomParentEntity::getLastVersionIs, 0)
|
||||||
.set(BomNewDQbomParentEntity::getModifyTime, LocalDateTime.now())
|
.set(BomNewDQbomParentEntity::getModifyTime, LocalDateTime.now())
|
||||||
|
|
@ -42,7 +43,7 @@ public class DQBomParentService extends ServiceImpl<BomNewDQbomParentMapper, Bom
|
||||||
.exists();
|
.exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BomNewDQbomParentEntity> getLatestByMaterialNo(List<String> materialNos) {
|
public List<BomNewDQbomParentEntity> getLatestByMaterialNo(Collection<String> materialNos) {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery()
|
||||||
.in(BomNewDQbomParentEntity::getMaterialNo, materialNos)
|
.in(BomNewDQbomParentEntity::getMaterialNo, materialNos)
|
||||||
.eq(BomNewDQbomParentEntity::getLastVersionIs, 1)
|
.eq(BomNewDQbomParentEntity::getLastVersionIs, 1)
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
|
@ -37,6 +38,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
@ -221,7 +223,7 @@ public class DQBomService {
|
||||||
* @param query 请求参数
|
* @param query 请求参数
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void save(BomNewDQbomSaveQuery query) {
|
public BomNewDQbomSaveQuery save(BomNewDQbomSaveQuery query) {
|
||||||
BomNewDQbomParentEntity parent = new BomNewDQbomParentEntity();
|
BomNewDQbomParentEntity parent = new BomNewDQbomParentEntity();
|
||||||
BeanUtil.copyProperties(query.getParent(), parent);
|
BeanUtil.copyProperties(query.getParent(), parent);
|
||||||
|
|
||||||
|
|
@ -246,13 +248,14 @@ public class DQBomService {
|
||||||
parent.setCreatedJob(userRoleService.technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue());
|
parent.setCreatedJob(userRoleService.technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue());
|
||||||
parent.setSource(2);
|
parent.setSource(2);
|
||||||
dQBomParentService.save(parent);
|
dQBomParentService.save(parent);
|
||||||
|
query.getParent().setRowId(parent.getRowId());
|
||||||
} else {
|
} else {
|
||||||
//修改数据
|
//修改数据
|
||||||
VUtils.isTure(!SessionUtil.getUserCode().equals(parent.getCreatedBy())).throwMessage("不能修改他人的数据");
|
// VUtils.isTure(!SessionUtil.getUserCode().equals(parent.getCreatedBy())).throwMessage("不能修改他人的数据");
|
||||||
|
|
||||||
if (CollUtil.isEmpty(query.getChildren())) {
|
if (CollUtil.isEmpty(query.getChildren())) {
|
||||||
dQBomChildService.deleteAllChildren(parent.getRowId());
|
dQBomChildService.deleteAllChildren(parent.getRowId());
|
||||||
return;
|
return query;
|
||||||
}
|
}
|
||||||
//删除
|
//删除
|
||||||
dQBomChildService.deleteAllChildren(parent.getRowId());
|
dQBomChildService.deleteAllChildren(parent.getRowId());
|
||||||
|
|
@ -271,6 +274,12 @@ public class DQBomService {
|
||||||
} else {
|
} else {
|
||||||
c.setModifyTime(LocalDateTime.now());
|
c.setModifyTime(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
|
if (StrUtil.isBlank(c.getMaterialUnit())) {
|
||||||
|
c.setMaterialUnit("PC");
|
||||||
|
}
|
||||||
|
if (Objects.isNull(c.getNum()) || NumberUtil.equals(c.getNum(), BigDecimal.ZERO)) {
|
||||||
|
c.setNum(BigDecimal.ONE);
|
||||||
|
}
|
||||||
c.setLevel(parent.getLevel() + 1);
|
c.setLevel(parent.getLevel() + 1);
|
||||||
c.setParentRowId(parent.getRowId());
|
c.setParentRowId(parent.getRowId());
|
||||||
c.setIdentityNo(c.getParentRowId() + "_" + c.getRowId());
|
c.setIdentityNo(c.getParentRowId() + "_" + c.getRowId());
|
||||||
|
|
@ -278,36 +287,8 @@ public class DQBomService {
|
||||||
c.setTotalWeight(BomUtil.calculateTotalWeight(c.getNum(), query.getChildren().get(index).getUnitWeight()));
|
c.setTotalWeight(BomUtil.calculateTotalWeight(c.getNum(), query.getChildren().get(index).getUnitWeight()));
|
||||||
}
|
}
|
||||||
dQBomChildService.saveBatch(children);
|
dQBomChildService.saveBatch(children);
|
||||||
// //处理parent
|
query.setChildren(Convert.toList(BomNewDQbomVO.class, children));
|
||||||
// List<BomNewDQbomParentEntity> parents = Convert.toList(BomNewDQbomParentEntity.class, query.getChildren());
|
return query;
|
||||||
// List<String> materialNos = dQBomParentService.lambdaQuery()
|
|
||||||
// .in(BomNewDQbomParentEntity::getMaterialNo, parents.stream().map(BomNewDQbomParentEntity::getMaterialNo).collect(Collectors.toList()))
|
|
||||||
// .eq(BomNewDQbomParentEntity::getStatus, DQBomStatusEnum.WAIT_CONVERT.getValue())
|
|
||||||
// .list()
|
|
||||||
// .stream()
|
|
||||||
// .map(BomNewDQbomParentEntity::getMaterialNo).collect(Collectors.toList());
|
|
||||||
// parents.removeIf(p -> materialNos.contains(p.getMaterialNo()));
|
|
||||||
// List<String> materialNos1 = parents.stream().map(BomNewDQbomParentEntity::getMaterialNo).collect(Collectors.toList());
|
|
||||||
// if (CollUtil.isNotEmpty(materialNos1)) {
|
|
||||||
// dQBomParentService.lambdaUpdate().in(BomNewDQbomParentEntity::getMaterialNo, materialNos1)
|
|
||||||
// .set(BomNewDQbomParentEntity::getLastVersionIs, 0)
|
|
||||||
// .set(BomNewDQbomParentEntity::getModifyTime, LocalDateTime.now())
|
|
||||||
// .update();
|
|
||||||
// }
|
|
||||||
// parents.stream().filter(p -> Objects.isNull(p.getRowId())).forEach(p -> {
|
|
||||||
// p.setRowId(IdWorker.getId());
|
|
||||||
// p.setCreatedBy(SessionUtil.getUserCode());
|
|
||||||
// p.setStatus(DQBomStatusEnum.WAIT_CONVERT.getValue());
|
|
||||||
// p.setRootIs(0);
|
|
||||||
// p.setUserRootIs(0);
|
|
||||||
// p.setBomExist(0);
|
|
||||||
// p.setEditStatus(1);
|
|
||||||
// p.setCreatedName(SessionUtil.getRealName());
|
|
||||||
// p.setCreatedJob(userRoleService.technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue());
|
|
||||||
// p.setSource(2);
|
|
||||||
// });
|
|
||||||
// liParents.addAll(parents);
|
|
||||||
// dQBomParentService.saveOrUpdateBatch(liParents);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteBom(Long rowId) {
|
public void deleteBom(Long rowId) {
|
||||||
|
|
|
||||||
|
|
@ -137,10 +137,11 @@ public class EBomToPBom {
|
||||||
*/
|
*/
|
||||||
private void check() {
|
private void check() {
|
||||||
//动态判断异常
|
//动态判断异常
|
||||||
CheckEBomExceptoinDynamic.check(allBomDetail);
|
// CheckEBomExceptoinDynamic.check(allBomDetail);
|
||||||
List<BomNewEbomParentVO> collect = allBomDetail.stream().filter(u -> !EBomExceptionStatusEnum.OK.getValue().equals(u.getExceptionStatus())).collect(Collectors.toList());
|
// List<BomNewEbomParentVO> collect = allBomDetail.stream().filter(u -> !EBomExceptionStatusEnum.OK.getValue().equals(u.getExceptionStatus())).collect(Collectors.toList());
|
||||||
|
|
||||||
VUtils.isTure(CollUtil.isNotEmpty(collect)).throwMessage("存在异常数据,请处理完再转换");
|
// VUtils.isTure(CollUtil.isNotEmpty(collect)).throwMessage("存在异常数据,请处理完再转换");
|
||||||
|
VUtils.isTure(!Objects.equals(parent.getExceptionStatus(), EBomExceptionStatusEnum.OK.getValue())).throwMessage("存在异常数据,请处理完再转换");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,12 @@
|
||||||
LEFT JOIN t_bom_new_dqbom_parent p ON p.material_no = c.material_no
|
LEFT JOIN t_bom_new_dqbom_parent p ON p.material_no = c.material_no
|
||||||
WHERE c.parent_row_id = #{rowId}
|
WHERE c.parent_row_id = #{rowId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getBom" resultType="com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO">
|
||||||
|
SELECT c.*, p.row_id AS bomRowId, p.created_by AS bomCreateBy
|
||||||
|
FROM t_bom_new_dqbom_child c
|
||||||
|
LEFT JOIN t_bom_new_dqbom_parent p ON p.material_no = c.material_no AND c.status = p.status
|
||||||
|
WHERE c.parent_row_id = #{parentRowId}
|
||||||
|
AND c.material_no = #{materialNo}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue