diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java index 382b8b71..d520a197 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/DQBomApi.java @@ -1,17 +1,18 @@ package com.nflg.product.bomnew.api.user; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzt.logapi.context.LogRecordContext; import com.mzt.logapi.starter.annotation.LogRecord; import com.nflg.product.base.core.api.BaseApi; +import com.nflg.product.bomnew.pojo.query.BomNewDQbomPageQuery; +import com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO; import com.nflg.product.bomnew.pojo.vo.OperationErrorMsgVO; import com.nflg.product.bomnew.service.DQBomImportService; +import com.nflg.product.bomnew.service.DQBomService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import nflg.product.common.vo.ResultVO; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -30,7 +31,16 @@ public class DQBomApi extends BaseApi { @Resource DQBomImportService dqBomImportService; - @ApiOperation("导入") + @Resource + DQBomService dQBomService; + + /** + * 导入 + * @param file 导入的excel文件 + * @return + * @throws IOException + */ + @ApiOperation("从excel导入数据") @PostMapping("importBom") @LogRecord(success = "电气BOM-导入:文件名:{{#fileNme}},操作结果:{{#_ret}}", bizNo = "", type = "电气BOM导入") public ResultVO> importBom(@RequestParam(value = "file") MultipartFile file) throws IOException { @@ -42,4 +52,21 @@ public class DQBomApi extends BaseApi { return ResultVO.success(dqBomImportService.importBom(file)); } + + /** + * 分页查询数据 + * @param query 查询条件 + * @return + */ + @PostMapping("getPageList") + @ApiOperation("分页查询数据") + public ResultVO> getPageList(@RequestBody BomNewDQbomPageQuery query) { + return ResultVO.success(dQBomService.getPageList(query)); + } + + @GetMapping("getChild") + @ApiOperation("获取子级数据") + public ResultVO> getChild(@RequestParam("bomRowId") Long bomRowId) { + return ResultVO.success(dQBomService.getChild(bomRowId)); + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/DQBomStatusEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/DQBomStatusEnum.java new file mode 100644 index 00000000..36721d9e --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/DQBomStatusEnum.java @@ -0,0 +1,28 @@ +package com.nflg.product.bomnew.constant; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author 曹鹏飞 + * @date 2024/4/8 10:22:59 + */ +@AllArgsConstructor +@Getter +public enum DQBomStatusEnum implements ValueEnum { + + WAIT_CONVERT(1, "待转换"), + PUBLISHED(2, "定版(已发布PBOM)"); + + private final Integer value; + private final String description; + + public static DQBomStatusEnum findByValue(Integer value) { + for (DQBomStatusEnum statusEnum : DQBomStatusEnum.values()) { + if (statusEnum.getValue().equals(value)) { + return statusEnum; + } + } + throw new IllegalArgumentException("无效的值"); + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewDQbomParentMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewDQbomParentMapper.java index 4bcb0f0c..2b925deb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewDQbomParentMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewDQbomParentMapper.java @@ -1,8 +1,10 @@ package com.nflg.product.bomnew.mapper.master; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.product.bomnew.pojo.entity.BomNewDQbomParentEntity; -import org.apache.ibatis.annotations.Select; +import com.nflg.product.bomnew.pojo.query.BomNewDQbomPageQuery; +import com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO; import java.util.List; @@ -12,6 +14,7 @@ import java.util.List; */ public interface BomNewDQbomParentMapper extends BaseMapper { - @Select("SELECT p.* FROM t_bom_new_dqbom_parent p INNER JOIN t_bom_new_dqbom_child c ON p.material_no = c.material_no WHERE c.status=1 AND p.material_no='#{materialNo}' ORDER BY p.row_id DESC") - List getWorkSheet(String materialNo); + Page getPageList(Page objectPage, BomNewDQbomPageQuery query, String userCode); + + List getChild(Long bomRowId); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomChildEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomChildEntity.java index 55e2b0f7..d1e27217 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomChildEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomChildEntity.java @@ -106,34 +106,6 @@ public class BomNewDQbomChildEntity implements Serializable { @ApiModelProperty(value = "修改时间") private LocalDateTime modifyTime; - /** - * 处理状态:1=待处理、2=已处理 - */ - @TableField(value = "edit_status") - @ApiModelProperty(value = "处理状态") - private Integer editStatus = 1; - - /** - * 转换状态:1=待转换、2=已转换(已发布PBOM) - */ - @TableField(value = "status") - @ApiModelProperty(value = "转换状态") - private Integer status = 1; - - /** - * 异常状态 - */ - @TableField(value = "exception_status") - @ApiModelProperty(value = "异常状态") - private Integer exceptionStatus = -1; - - /** - * 异常标记 - */ - @TableField(value = "exception_tag") - @ApiModelProperty(value = "异常标记") - private String exceptionTag; - /** * 来源 1-EXCE导入 2-MDM创建 */ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomParentEntity.java index ca752dcc..e72c1b07 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewDQbomParentEntity.java @@ -121,6 +121,34 @@ public class BomNewDQbomParentEntity implements Serializable { @ApiModelProperty(value = "是否最新版") private Integer lastVersionIs = 1; + /** + * 处理状态:1=待处理、2=已处理 + */ + @TableField(value = "edit_status") + @ApiModelProperty(value = "处理状态") + private Integer editStatus = 1; + + /** + * 转换状态:1=待转换、2=已转换(已发布PBOM) + */ + @TableField(value = "status") + @ApiModelProperty(value = "转换状态") + private Integer status = 1; + + /** + * 异常状态 + */ + @TableField(value = "exception_status") + @ApiModelProperty(value = "异常状态") + private Integer exceptionStatus = -1; + + /** + * 异常标记 + */ + @TableField(value = "exception_tag") + @ApiModelProperty(value = "异常标记") + private String exceptionTag; + /** * 创建人名称 */ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewDQbomPageQuery.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewDQbomPageQuery.java new file mode 100644 index 00000000..cdcb77e8 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewDQbomPageQuery.java @@ -0,0 +1,60 @@ +package com.nflg.product.bomnew.pojo.query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @author 曹鹏飞 + * @date 2024/4/8 10:19:27 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-bomnew-pojo-new-query-BomNewDQbomPageQuery") +public class BomNewDQbomPageQuery extends BasePageQuery implements Serializable { + + /** + * 图号 + */ + @ApiModelProperty(value = "图号") + private String drawingNo; + + /** + * 物料编码 + */ + @ApiModelProperty(value = "物料编码") + private String materialNo; + + /** + * 物料名称 + */ + @ApiModelProperty(value = "物料名称") + private String materialName; + + /* + * 开始时间 + */ + @ApiModelProperty(value = "开始时间") + private String startDate; + + /* + * 结束时间 + */ + @ApiModelProperty(value = "结束时间") + private String endDate; + + /* + * 是否仅显示自己的数据:0=所有人的数据;1=仅自己的数据,默认为0 + */ + @ApiModelProperty(value = "是否仅显示自己的数据:0=所有人的数据;1=仅自己的数据,默认为0") + private Integer showMySelfOnly = 0; + + /** + * 状态 1=待转换、2=已转换(已发布PBOM) + */ + @ApiModelProperty("状态 1=待转换、2=已转换(已发布PBOM)") + private Integer status; +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java new file mode 100644 index 00000000..140734bf --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewDQbomVO.java @@ -0,0 +1,45 @@ +package com.nflg.product.bomnew.pojo.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.nflg.product.bomnew.pojo.entity.BomNewDQbomParentEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @author 曹鹏飞 + * @date 2024/4/8 10:36:42 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-bomnew-pojo-new-vo-BomNewDQbomVO") +public class BomNewDQbomVO extends BomNewDQbomParentEntity implements Serializable { + + /** + * 物料信息表中的物料名称 + */ + @ApiModelProperty(value = "物料名称(系统)") + private String systemMaterialName; + + /** + * 物料类别 + */ + @ApiModelProperty(value = "物料类别") + private String systemMaterialCategoryName; + + /** + * 物料状态 1:激活 2:禁止采购 3:售后专用 4:冻结 5:完全弃用 + */ + @ApiModelProperty(value = "物料状态") + private Integer systemMaterialState; + + /** + * 排序号 + */ + @TableField(value = "order_number") + @ApiModelProperty(value = "排序号") + private String orderNumber; +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java index 0deb5c53..afbe30e2 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomImportService.java @@ -104,34 +104,37 @@ public class DQBomImportService { private void checkExceptionStatus(List parents, List children) { List materialNos = children.stream().map(BomNewDQbomChildEntity::getMaterialNo).collect(Collectors.toList()); List materialVOS = materialMainService.getMaterialBaseInfo(materialNos); - checkChildExceptionStatus(children.get(0), parents, children, materialVOS); + checkChildExceptionStatus(parents.get(0), parents, children, materialVOS); } - private void checkChildExceptionStatus(BomNewDQbomChildEntity child, List parents, List children, List materialVOS) { - BomNewDQbomParentEntity parent = parents.stream().filter(p -> p.getMaterialNo().equals(child.getMaterialNo())).findFirst().get(); + private void checkChildExceptionStatus(BomNewDQbomParentEntity parent, List parents, List children, List materialVOS) { + //BomNewDQbomParentEntity parent = parents.stream().filter(p -> p.getMaterialNo().equals(child.getMaterialNo())).findFirst().get(); if (parent.getProjectType().equals("T")) { - child.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue()); + parent.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue()); } else { - BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(child.getMaterialNo())).findFirst().orElse(null); + BaseMaterialVO materialVO = materialVOS.stream().filter(v -> v.getMaterialNo().equals(parent.getMaterialNo())).findFirst().orElse(null); if (materialVO == null) { - child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_7.getValue()); + parent.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_7.getValue()); } else if (materialVO.getMaterialState().equals(MaterialGetEnum.MaterialStateEnum.STATE_NO_4.getValue())) { - child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_2.getValue()); + parent.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_2.getValue()); } else if (!materialVO.getMaterialName().equals(parent.getMaterialName())) { - child.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_15.getValue()); + parent.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_15.getValue()); } else { - child.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue()); + parent.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue()); } } - List cc = children.stream().filter(c -> c.getParentRowId().equals(parent.getRowId())).collect(Collectors.toList()); - for (BomNewDQbomChildEntity c : cc) { - checkChildExceptionStatus(c, parents, children, materialVOS); + List cc = children.stream().filter(c -> c.getParentRowId().equals(parent.getRowId())) + .map(BomNewDQbomChildEntity::getMaterialNo) + .collect(Collectors.toList()); + List pp = parents.stream().filter(p -> cc.contains(p.getMaterialNo())).collect(Collectors.toList()); + for (BomNewDQbomParentEntity p : pp) { + checkChildExceptionStatus(p, parents, children, materialVOS); } } private void checkInconsistentData(BomNewDQbomParentEntity parent, List parents, List children) throws JsonProcessingException { log.debug("checkInconsistentData,parent:" + JsonUtil.toJson(parent)); - BomNewDQbomParentEntity oldParent = dQBomParentService.getWorkSheet(parent.getMaterialNo()).stream().findFirst().orElse(null); + BomNewDQbomParentEntity oldParent = dQBomParentService.getLastVersion(parent.getMaterialNo()); if (oldParent != null) { if (!parent.getMaterialUnit().equals(oldParent.getMaterialUnit()) || !parent.getMaterialTexture().equals(oldParent.getMaterialTexture())) { @@ -256,7 +259,7 @@ public class DQBomImportService { private void handlerExcelRow(DQbomExcelVO dQbomExcelVO) { rowNum.set(rowNum.get() + 1); - log.debug("电气bom导入excel,第" + rowNum.get() + "行,处理前:" + JSON.toJSONString(dQbomExcelVO)); + log.debug("电气bom导入excel,第{}行,处理前:{}", rowNum.get(), JSON.toJSONString(dQbomExcelVO)); dQbomExcelVO.setRowNum(rowNum.get()); if (StrUtil.isBlank(dQbomExcelVO.getMaterialNo())) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomParentService.java index a492d075..948635fd 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomParentService.java @@ -15,8 +15,11 @@ import java.util.List; @Service public class DQBomParentService extends ServiceImpl { - public List getWorkSheet(String materialNo) { - return this.getBaseMapper().getWorkSheet(materialNo); + public BomNewDQbomParentEntity getLastVersion(String materialNo) { + return this.lambdaQuery().eq(BomNewDQbomParentEntity::getLastVersionIs, 1) + .eq(BomNewDQbomParentEntity::getMaterialNo, materialNo) + .list() + .stream().findFirst().orElse(null); } public void setLastVersionIs0(List materialNo) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java new file mode 100644 index 00000000..de31bb3d --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/DQBomService.java @@ -0,0 +1,56 @@ +package com.nflg.product.bomnew.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.product.base.core.conmon.util.SessionUtil; +import com.nflg.product.bomnew.pojo.query.BomNewDQbomPageQuery; +import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; +import com.nflg.product.bomnew.pojo.vo.BomNewDQbomVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author 曹鹏飞 + * @date 2024/4/8 11:26:04 + */ +@Service +@Slf4j +public class DQBomService { + + @Resource + DQBomParentService dQBomParentService; + + @Resource + DQBomChildService dQBomChildService; + + @Resource + MaterialMainService materialMainService; + + public Page getPageList(BomNewDQbomPageQuery query) { + Page ret = dQBomParentService.getBaseMapper().getPageList(new Page<>(query.getPage(), query.getPageSize()), query, SessionUtil.getUserCode()); + initMaterialInfo(ret.getRecords()); + return ret; + } + + public List getChild(Long bomRowId) { + List data = dQBomParentService.getBaseMapper().getChild(bomRowId); + initMaterialInfo(data); + return data; + } + + private void initMaterialInfo(List data) { + List materialNos = data.stream().map(BomNewDQbomVO::getMaterialNo).collect(Collectors.toList()); + List materialBaseInfos = materialMainService.getMaterialBaseInfo(materialNos); + data.forEach(d -> { + BaseMaterialVO bm = materialBaseInfos.stream().filter(m -> m.getMaterialNo().equals(d.getMaterialNo())).findFirst().orElse(null); + if (bm != null) { + d.setSystemMaterialState(bm.getMaterialState()); + d.setSystemMaterialName(bm.getMaterialName()); + d.setSystemMaterialCategoryName(bm.getCategoryName()); + } + }); + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewDQbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewDQbomParentMapper.xml new file mode 100644 index 00000000..2f793c9d --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewDQbomParentMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file