From ae4547189f38699bd958dd38c3fb6b49914cfa48 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 Nov 2024 17:36:57 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF?= =?UTF-8?q?=E3=80=91=E4=BF=9D=E5=AD=98=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../technology/api/ProcessRouteTaskApi.java | 25 +++- .../technology/constant/HandleStateEnum.java | 35 ++++++ .../technology/constant/SapStateEnum.java | 36 ++++++ .../ProcessRouteTaskAssemblyEntity.java | 13 +- .../pojo/entity/ProcessRouteTaskEntity.java | 13 +- .../ProcessRouteTaskProcessesEntity.java | 13 +- .../pojo/entity/ProcessWorkCenterEntity.java | 13 +- .../technology/pojo/vo/BomNewPBomVO.java | 113 ++++++++++++++++++ .../service/ProcessRouteTaskService.java | 99 +++++++++++++++ 9 files changed, 327 insertions(+), 33 deletions(-) create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/HandleStateEnum.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/SapStateEnum.java create mode 100644 nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BomNewPBomVO.java diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java index 5aec4e47..06b8711e 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/api/ProcessRouteTaskApi.java @@ -4,12 +4,14 @@ package com.nflg.product.technology.api; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.product.base.core.api.BaseApi; import com.nflg.product.technology.pojo.query.ProcessRouteTaskQuery; +import com.nflg.product.technology.pojo.vo.BomNewPBomVO; import com.nflg.product.technology.pojo.vo.ProcessRouteTaskVO; import com.nflg.product.technology.service.ProcessRouteTaskService; import nflg.product.common.vo.ResultVO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** *

@@ -33,7 +35,7 @@ public class ProcessRouteTaskApi extends BaseApi { * @return 所有数据 */ @PostMapping("page") - public ResultVO> selectAll(@RequestBody ProcessRouteTaskQuery query) { + public ResultVO> page(@RequestBody ProcessRouteTaskQuery query) { return ResultVO.success(processRouteTaskService.selectPageByCondition(query)); } @@ -47,4 +49,25 @@ public class ProcessRouteTaskApi extends BaseApi { return ResultVO.success(processRouteTaskService.detail(rowId)); } + /** + * 保存 + * @param processRouteTaskVO + * @return + */ + @PostMapping("save") + public ResultVO> save(@RequestBody ProcessRouteTaskVO processRouteTaskVO) { + processRouteTaskService.save(processRouteTaskVO); + return ResultVO.success(); + } + + /** + * 获取PBOM所有层级 + * @param query + * @return + */ + @GetMapping("getPBomAllTree") + public ResultVO> getPBomAllTree(@RequestBody ProcessRouteTaskQuery query) { + return ResultVO.success(processRouteTaskService.getPBomAllTree(query)); + } + } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/HandleStateEnum.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/HandleStateEnum.java new file mode 100644 index 00000000..b553b28f --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/HandleStateEnum.java @@ -0,0 +1,35 @@ +package com.nflg.product.technology.constant; + + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Optional; + +@AllArgsConstructor +@Getter +public enum HandleStateEnum implements ValueEnum { + + // 处理状态:1=修改中、2=暂存中、3=已完成', + HANDLER_UPDATING(1, "修改中"), + HANDLER_TEMPSAVING(2, "暂存中"), + HANDLER_FINISHED(3, "已完成"); + + private final Integer value; + private final String description; + + public static HandleStateEnum findDescriptionByValue(Integer value) { + for (HandleStateEnum valueEnum : HandleStateEnum.values()) { + if (valueEnum.getValue().equals(value)) { + return valueEnum; + } + } + return null; + } + + public static String byValue(Integer value){ + return Optional.ofNullable(findDescriptionByValue(value)) + .map(HandleStateEnum::getDescription).orElse(""); + } + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/SapStateEnum.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/SapStateEnum.java new file mode 100644 index 00000000..eaa11863 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/constant/SapStateEnum.java @@ -0,0 +1,36 @@ +package com.nflg.product.technology.constant; + + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Optional; + +@AllArgsConstructor +@Getter +public enum SapStateEnum implements ValueEnum { + + // SAP导入状态:1=已导入、2=未导入、3=异常、4=已修改(未导入) + STATE_IMPORTED(1, "已导入"), + STATE_UNIMPORT(2, "未导入"), + STATE_EXCEPTION(3, "异常"), + STATE_UPDATED(4, "已修改(未导入)"); + + private final Integer value; + private final String description; + + public static SapStateEnum findDescriptionByValue(Integer value) { + for (SapStateEnum valueEnum : SapStateEnum.values()) { + if (valueEnum.getValue().equals(value)) { + return valueEnum; + } + } + return null; + } + + public static String byValue(Integer value){ + return Optional.ofNullable(findDescriptionByValue(value)) + .map(SapStateEnum::getDescription).orElse(""); + } + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskAssemblyEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskAssemblyEntity.java index 4b428015..758d6446 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskAssemblyEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskAssemblyEntity.java @@ -1,9 +1,6 @@ package com.nflg.product.technology.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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.experimental.Accessors; @@ -94,19 +91,19 @@ public class ProcessRouteTaskAssemblyEntity implements Serializable { private Integer delFlag; // 创建人 - @TableField(value = "created_by") + @TableField(value = "created_by",fill = FieldFill.INSERT) private String createdBy; // 创建时间 - @TableField(value = "created_time") + @TableField(value = "created_time",fill = FieldFill.INSERT) private LocalDateTime createdTime; // 更新人 - @TableField(value = "updated_by") + @TableField(value = "updated_by",fill = FieldFill.INSERT_UPDATE) private String updatedBy; // 更新时间 - @TableField(value = "updated_time") + @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedTime; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskEntity.java index 36cfc184..26a4fd5f 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskEntity.java @@ -1,9 +1,6 @@ package com.nflg.product.technology.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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.experimental.Accessors; @@ -73,19 +70,19 @@ public class ProcessRouteTaskEntity implements Serializable { private Integer delFlag; // 创建人 - @TableField(value = "created_by") + @TableField(value = "created_by",fill = FieldFill.INSERT) private String createdBy; // 创建时间 - @TableField(value = "created_time") + @TableField(value = "created_time",fill = FieldFill.INSERT) private LocalDateTime createdTime; // 更新人 - @TableField(value = "updated_by") + @TableField(value = "updated_by",fill = FieldFill.INSERT_UPDATE) private String updatedBy; // 更新时间 - @TableField(value = "updated_time") + @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedTime; // 处理状态:1=修改中、2=暂存中、3=已完成 diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskProcessesEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskProcessesEntity.java index fbdfbb46..8acc00b3 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskProcessesEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessRouteTaskProcessesEntity.java @@ -1,9 +1,6 @@ package com.nflg.product.technology.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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.experimental.Accessors; @@ -130,19 +127,19 @@ public class ProcessRouteTaskProcessesEntity implements Serializable { private Integer delFlag; // 创建人 - @TableField(value = "created_by") + @TableField(value = "created_by",fill = FieldFill.INSERT) private String createdBy; // 创建时间 - @TableField(value = "created_time") + @TableField(value = "created_time",fill = FieldFill.INSERT) private LocalDateTime createdTime; // 更新人 - @TableField(value = "updated_by") + @TableField(value = "updated_by",fill = FieldFill.INSERT_UPDATE) private String updatedBy; // 更新时间 - @TableField(value = "updated_time") + @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedTime; diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessWorkCenterEntity.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessWorkCenterEntity.java index 86283cfd..034a1e32 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessWorkCenterEntity.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/entity/ProcessWorkCenterEntity.java @@ -1,9 +1,6 @@ package com.nflg.product.technology.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 com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.experimental.Accessors; @@ -107,16 +104,16 @@ public class ProcessWorkCenterEntity implements Serializable { @TableField(value = "end_time") private Date endTime; - @TableField(value = "created_by") + @TableField(value = "created_by",fill = FieldFill.INSERT) private String createdBy; - @TableField(value = "created_time") + @TableField(value = "created_time",fill = FieldFill.INSERT) private Date createdTime; - @TableField(value = "updated_by") + @TableField(value = "updated_by",fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @TableField(value = "updated_time") + @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE) private Date updatedTime; } diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BomNewPBomVO.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BomNewPBomVO.java new file mode 100644 index 00000000..56851e67 --- /dev/null +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/pojo/vo/BomNewPBomVO.java @@ -0,0 +1,113 @@ +package com.nflg.product.technology.pojo.vo; + +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Objects; + +@Data +public class BomNewPBomVO extends BaseMaterialVO { + + @ApiModelProperty("行id") + private Long rowId=0L; + + @ApiModelProperty("BOM版本ID") + private Long bomRowId=0L; + + @ApiModelProperty("父级行ID") + private Long parentRowId=0L; + + + + @ApiModelProperty("排序号") + private String orderNumber; + + @ApiModelProperty("层级") + private Integer levelNum; + @ApiModelProperty("查询物料bom版本") + private String bomVersion; + + @ApiModelProperty("层级描述") + private String levelNumText; + + public String getLevelNumText(){ + if(Objects.nonNull(levelNum)){ + levelNumText=StrUtil.repeat(".",levelNum); + levelNumText=levelNumText+levelNum; + } + return levelNumText; + } + + @ApiModelProperty(value = "工厂编码") + private String facCode; + + @ApiModelProperty("版本号") + private String currentVersion; + + + @ApiModelProperty(value = "数量") + private BigDecimal num; + + public BigDecimal getNum(){ + + if(Objects.nonNull(num)) { + DecimalFormat df2 = new DecimalFormat("#.####"); + + return new BigDecimal(df2.format(num)); + } +// else{ +// return new BigDecimal(1); +// } + return num; + } + + + + /** + * 单重 + */ + @ApiModelProperty(value = "单重") + private BigDecimal unitWeight; + + /** + * 总重 + */ + @ApiModelProperty(value = "总重") + private BigDecimal totalWeight; + + @ApiModelProperty(value = "创建人编码") + private String createdBy; + @ApiModelProperty(value = "设计人") + private String deviseName; + @ApiModelProperty(value = "设计人员编码") + private String deviseUserCode; + + @ApiModelProperty(value = "创建时间-有效开始时间") + private LocalDateTime createdTime; + + @ApiModelProperty(value = "版本过期时间=下个版本的创建时间") + private LocalDateTime expireEndTime; + + @ApiModelProperty(value = "备注") + private String remark; + + + @ApiModelProperty(value = "标记0-未汇总 1-汇总") + private Integer tag=0; + + + public LocalDateTime getExpireEndTime(){ + if(Objects.isNull(expireEndTime)) { + return Objects.isNull(expireEndTime) ? LocalDateTime.parse("9999-12-31 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : expireEndTime; + }else { + return expireEndTime; + } + } + + +} diff --git a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java index c075c81c..8fc63d2d 100644 --- a/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java +++ b/nflg_project_dev/nflg-technology/src/main/java/com/nflg/product/technology/service/ProcessRouteTaskService.java @@ -4,10 +4,13 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.product.base.core.exception.NflgBusinessException; import com.nflg.product.base.core.vo.PageVO; +import com.nflg.product.technology.constant.HandleStateEnum; +import com.nflg.product.technology.constant.SapStateEnum; import com.nflg.product.technology.mapper.master.ProcessRouteTaskAssemblyMapper; import com.nflg.product.technology.mapper.master.ProcessRouteTaskMapper; import com.nflg.product.technology.mapper.master.ProcessRouteTaskProcessesMapper; @@ -15,11 +18,13 @@ import com.nflg.product.technology.pojo.entity.ProcessRouteTaskAssemblyEntity; import com.nflg.product.technology.pojo.entity.ProcessRouteTaskEntity; import com.nflg.product.technology.pojo.entity.ProcessRouteTaskProcessesEntity; import com.nflg.product.technology.pojo.query.ProcessRouteTaskQuery; +import com.nflg.product.technology.pojo.vo.BomNewPBomVO; import com.nflg.product.technology.pojo.vo.ProcessRouteTaskAssemblyVO; import com.nflg.product.technology.pojo.vo.ProcessRouteTaskProcessesVO; import com.nflg.product.technology.pojo.vo.ProcessRouteTaskVO; import nflg.product.common.constant.STATE; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Collections; @@ -81,4 +86,98 @@ public class ProcessRouteTaskService extends ServiceImpl processesVOList = processRouteTaskVO.getProcessesVOList(); + if (CollUtil.isNotEmpty(processesVOList)) { + List taskProcessesEntityList = Convert.toList(ProcessRouteTaskProcessesEntity.class, processesVOList); + taskProcessesEntityList.forEach(taskProcessesEntity -> { + // 新增 + if (ObjectUtil.isEmpty(taskProcessesEntity.getRowId())) { + taskProcessesEntity.setRowId(IdWorker.getId()); + taskProcessesEntity.setTaskRowId(taskEntity.getRowId()); + } else { + // 修改 + + } + }); + processRouteTaskProcessesService.saveOrUpdateBatch(taskProcessesEntityList); + } + // 组件分配列表 + List assemblyVOList = processRouteTaskVO.getAssemblyVOList(); + if (CollUtil.isNotEmpty(assemblyVOList)) { + List taskAssemblyEntityList = Convert.toList(ProcessRouteTaskAssemblyEntity.class, assemblyVOList); + taskAssemblyEntityList.forEach(taskAssemblyEntity -> { + // 新增 + if (ObjectUtil.isEmpty(taskAssemblyEntity.getRowId())) { + taskAssemblyEntity.setRowId(IdWorker.getId()); + taskAssemblyEntity.setTaskRowId(taskEntity.getRowId()); + } else { + // 修改 + + } + }); + processRouteTaskAssemblyService.saveOrUpdateBatch(taskAssemblyEntityList); + } + } + + public List getPBomAllTree(ProcessRouteTaskQuery query) { + if (ObjectUtil.isEmpty(query.getMaterialNo())) { + return null; + } +// BomNewPbomParentVO parentFormal0=listParent.get(0); +// ForwardReportVO forwardReportVO = Convert.convert(ForwardReportVO.class, parentFormal0); +// +// List nodesList=new ArrayList<>(); +// for ( BomNewPbomParentVO parentFormal: +// listParent ) { +// +// +// List bomList = bomDetailAndParent(parentFormal); +// +// if(CollUtil.isEmpty(bomList)){ +// continue; +// } +// initMaterialInfo(bomList); +// List convertBomList = Convert.convert(new TypeReference>() { +// }, bomList); +// +// +// sumLevel(convertBomList); +// //转化为树结构 +// List nodeList = showDataStyle(convertBomList, parentFormal.getRowId()); +// +// +// for (ForwardReportVO vo : +// nodeList) { +// vo.setBomVersion(parentFormal.getCurrentVersion()); +// // vo.setDeviseName(parentFormal.getDeviseName()); +// // vo.setCreatedTime(parentFormal.getCreatedTime()); +// // vo.setExpireEndTime(parentFormal.getReleaseTime()); +// // 10、40、50、60、70大类以及200201小类这些不需要BOM的物料,版本号显示B00 by 10002327 241101 +// if(MaterialshouldBomExistUtil.checkNoNeedBom(vo) || Objects.equals("T",vo.getProjectType())){ +// vo.setCurrentVersion(OriginalConstant.NO_NEED_BOM); +// } +// } +// nodesList.addAll(nodeList); +// } +// +// ReportBomVO reportBomVO =buildReportBomVo(forwardReportVO,nodesList,query.getDataType()); +// reportBomVO.setBomNum(listParent.size()); +// return reportBomVO; + return null; + } }