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;
+ }
}