From 6e9466004b499b88d02f9d9a14a3187a06dc9a8f Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 2 Sep 2024 17:58:05 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/ProductionOrderEntity.java | 6 + .../entity/ProductionOrderItemEntity.java | 24 ++-- .../pojo/entity/ProductionOrderSapEntity.java | 6 +- .../pojo/query/ProductionOrderQuery.java | 6 + .../bomnew/pojo/vo/ProductionOrderItemVO.java | 44 +++--- .../service/ProductionOrderService.java | 129 +++++++++++++----- .../mapper/master/ProductionOrderMapper.xml | 3 + 7 files changed, 146 insertions(+), 72 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderEntity.java index e8ec851b..bb9ab496 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderEntity.java @@ -123,6 +123,12 @@ public class ProductionOrderEntity implements Serializable { @ApiModelProperty(value = "确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认") private Integer confirmStatus; + /** + * 同步状态 0未同步 1已同步 + */ + @TableField(value = "sync_status") + private Integer syncStatus; + /** * 创建人 */ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderItemEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderItemEntity.java index 5e40e2cb..4f9afbb0 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderItemEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderItemEntity.java @@ -53,12 +53,12 @@ public class ProductionOrderItemEntity implements Serializable { @ApiModelProperty(value = "物料编码") private String materialNo; - /** - * 物料描述 - */ - @TableField(value = "material_desc") - @ApiModelProperty(value = "物料描述") - private String materialDesc; +// /** +// * 物料描述 +// */ +// @TableField(value = "material_desc") +// @ApiModelProperty(value = "物料描述") +// private String materialDesc; /** * 父物料 0否 1是 @@ -158,12 +158,12 @@ public class ProductionOrderItemEntity implements Serializable { @ApiModelProperty(value = "提交 0否 1是") private Integer submit; - /** - * 操作类型:0不变 1新增 2修改 3删除 - */ - @TableField(value = "operate_type") - @ApiModelProperty(value = "操作类型:0不变 1新增 2修改 3删除") - private Integer operateType; +// /** +// * 操作类型:0不变 1新增 2修改 3删除 +// */ +// @TableField(value = "operate_type") +// @ApiModelProperty(value = "操作类型:0不变 1新增 2修改 3删除") +// private Integer operateType; /** * 创建人 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderSapEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderSapEntity.java index 73e86c02..16dcfe06 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderSapEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderSapEntity.java @@ -98,10 +98,10 @@ public class ProductionOrderSapEntity implements Serializable { private String ERNAM; /** - * 处理状态 0未处理 1已处理 + * 同步状态 0未同步 1已同步 */ - @TableField(value = "handle_status") - private Integer handleStatus; + @TableField(value = "sync_status") + private Integer syncStatus; private static final long serialVersionUID = 1L; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderQuery.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderQuery.java index 1669cd58..dec630fb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderQuery.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderQuery.java @@ -47,4 +47,10 @@ public class ProductionOrderQuery extends BasePageQuery implements Serializable @ApiModelProperty(value = "确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认") private Integer confirmStatus; + /** + * 同步状态 + */ + @ApiModelProperty(value = "同步状态") + private Integer syncStatus; + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderItemVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderItemVO.java index 0ab6d9eb..61d37de6 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderItemVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderItemVO.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; @Data @Accessors(chain = true) @ApiModel(value="com-nflg-product-bomnew-pojo-new-vo-ProductionOrderItemVO") -public class ProductionOrderItemVO implements Serializable { +public class ProductionOrderItemVO extends BaseMaterialVO implements Serializable { /** * 行ID 雪花 @@ -32,17 +32,17 @@ public class ProductionOrderItemVO implements Serializable { @ApiModelProperty(value = "项目号") private String itemNo; - /** - * 物料编码 - */ - @ApiModelProperty(value = "物料编码") - private String materialNo; - - /** - * 物料描述 - */ - @ApiModelProperty(value = "物料描述") - private String materialDesc; +// /** +// * 物料编码 +// */ +// @ApiModelProperty(value = "物料编码") +// private String materialNo; +// +// /** +// * 物料描述 +// */ +// @ApiModelProperty(value = "物料描述") +// private String materialDesc; /** * 父物料 0否 1是 @@ -74,11 +74,11 @@ public class ProductionOrderItemVO implements Serializable { @ApiModelProperty(value = "单位") private String unit; - /** - * 项目类别 - */ - @ApiModelProperty(value = "项目类别") - private String projectType; +// /** +// * 项目类别 +// */ +// @ApiModelProperty(value = "项目类别") +// private String projectType; /** * 工序 @@ -128,11 +128,11 @@ public class ProductionOrderItemVO implements Serializable { @ApiModelProperty(value = "提交 0否 1是") private Integer submit; - /** - * 操作类型:0不变 1新增 2修改 3删除 - */ - @ApiModelProperty(value = "操作类型:0不变 1新增 2修改 3删除") - private Integer operateType; +// /** +// * 操作类型:0不变 1新增 2修改 3删除 +// */ +// @ApiModelProperty(value = "操作类型:0不变 1新增 2修改 3删除") +// private Integer operateType; /** * 创建人 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderService.java index 4d3379a0..3a6d6c58 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderService.java @@ -1,8 +1,10 @@ package com.nflg.product.bomnew.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.convert.Converter; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -19,6 +21,7 @@ import com.nflg.product.bomnew.pojo.dto.sap.SapReqParams; import com.nflg.product.bomnew.pojo.dto.sap.SapResult; import com.nflg.product.bomnew.pojo.entity.ProductionOrderEntity; import com.nflg.product.bomnew.pojo.entity.ProductionOrderItemEntity; +import com.nflg.product.bomnew.pojo.entity.ProductionOrderItemSapEntity; import com.nflg.product.bomnew.pojo.entity.ProductionOrderSapEntity; import com.nflg.product.bomnew.pojo.query.ProductionOrderQuery; import com.nflg.product.bomnew.pojo.query.ProductionOrderSaveQuery; @@ -35,6 +38,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.stream.Collectors; /** @@ -56,6 +60,7 @@ public class ProductionOrderService extends ServiceImpl getListByPage(ProductionOrderQuery query){ + query.setSyncStatus(0); Page page = new Page<>(query.getPage(),query.getPageSize()); Page listByPage = this.getBaseMapper().getListByPage(page, query); if (CollUtil.isNotEmpty(listByPage.getRecords())) { @@ -67,7 +72,11 @@ public class ProductionOrderService extends ServiceImpl getItemList(Long rowId) { VUtils.isTure(ObjectUtil.isEmpty(rowId)).throwMessage("生产订单 rowId 不能为空"); List itemList = productionOrderItemService.lambdaQuery().eq(ProductionOrderItemEntity::getOrderRowId, rowId).list(); - return Convert.toList(ProductionOrderItemVO.class, itemList); + List itemVOList = Convert.toList(ProductionOrderItemVO.class, itemList); + if (CollUtil.isNotEmpty(itemVOList)) { + materialMainService.intiMaterialInfo(itemVOList, "projectType"); + } + return itemVOList; } public String queryPostByUser() { @@ -162,9 +171,14 @@ public class ProductionOrderService extends ServiceImpl> headList = outTablesMap.get("HEAD"); if (CollUtil.isNotEmpty(headList)) { - List saveList = new ArrayList<>(); for (Map head : headList) { if (ObjectUtil.isEmpty(head.get("AUFNR"))) { continue; } - String productionOrder = head.get("AUFNR").toString().replaceAll("^0+", ""); - // 生产订单号存在且未处理则跳过 + String aufnr = head.get("AUFNR").toString(); + // 生产订单号存在且未同步则跳过 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("AUFNR", productionOrder) - .eq("handle_status", 0); - List exist = this.productionOrderSapMapper.selectList(queryWrapper); - List exists = this.lambdaQuery().eq(ProductionOrderEntity::getProductionOrder, productionOrder).list(); + queryWrapper.eq("AUFNR", aufnr) + .eq("sync_status", 0); + List exists = this.productionOrderSapMapper.selectList(queryWrapper); if (CollUtil.isNotEmpty(exists)) { continue; } + // 存入SAP原始表 + ProductionOrderSapEntity productionOrderSapEntity = BeanUtil.toBean(head, ProductionOrderSapEntity.class); + Long rowId = IdWorker.getId(); + productionOrderSapEntity.setRowId(rowId); + this.productionOrderSapMapper.insert(productionOrderSapEntity); + // 存入生产订单抬头表 + String productionOrder = aufnr.replaceAll("^0+", ""); ProductionOrderEntity save = new ProductionOrderEntity(); - save.setRowId(IdWorker.getId()); + save.setRowId(rowId); save.setFactory(ObjectUtil.isNotEmpty(head.get("WERKS")) ? head.get("WERKS").toString() : ""); save.setProductionOrder(productionOrder); save.setMaterialNo(ObjectUtil.isNotEmpty(head.get("STLBEZ")) ? head.get("STLBEZ").toString().replaceAll("^0+", "") : ""); @@ -259,35 +278,75 @@ public class ProductionOrderService extends ServiceImpl> itemList = outTablesMap.get("ITEM"); + if (CollUtil.isNotEmpty(itemList)) { + List> filterItemList = itemList.stream().filter(item -> aufnr.equals(item.get("AUFNR"))).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(filterItemList)) { + List saveItemList = new ArrayList<>(filterItemList.size()); + for (Map filterItem : filterItemList) { + // 存入SAP原始表 + ProductionOrderItemSapEntity productionOrderItemSapEntity = BeanUtil.toBean(filterItem, ProductionOrderItemSapEntity.class); + Long itemRowId = IdWorker.getId(); + productionOrderItemSapEntity.setRowId(itemRowId); + productionOrderItemSapEntity.setOrderRowId(rowId); + this.productionOrderItemSapMapper.insert(productionOrderItemSapEntity); + + // 存入生产订单明细表 + ProductionOrderItemEntity productionOrderItemEntity = new ProductionOrderItemEntity(); + productionOrderItemEntity.setRowId(itemRowId); + productionOrderItemEntity.setOrderRowId(rowId); + productionOrderItemEntity.setItemNo(ObjectUtil.isNotEmpty(filterItem.get("POSNR")) ? filterItem.get("POSNR").toString() : ""); + productionOrderItemEntity.setMaterialNo(ObjectUtil.isNotEmpty(filterItem.get("MATNR")) ? filterItem.get("MATNR").toString().replaceAll("^0+", "") : ""); + productionOrderItemEntity.setCommandNum(ObjectUtil.isNotEmpty(filterItem.get("BDMNG")) ? new BigDecimal(filterItem.get("BDMNG").toString()) : null); +// productionOrderItemEntity.setPromiseNum(ObjectUtil.isNotEmpty(filterItem.get("WERKS")) ? filterItem.get("WERKS").toString() : ""); + productionOrderItemEntity.setPickNum(ObjectUtil.isNotEmpty(filterItem.get("ENMNG")) ? new BigDecimal(filterItem.get("ENMNG").toString()) : null); + productionOrderItemEntity.setUnit(ObjectUtil.isNotEmpty(filterItem.get("MEINS")) ? filterItem.get("MEINS").toString() : ""); + productionOrderItemEntity.setProjectType(ObjectUtil.isNotEmpty(filterItem.get("POSTP")) ? filterItem.get("POSTP").toString() : ""); +// productionOrderItemEntity.setProgress(ObjectUtil.isNotEmpty(filterItem.get("")) ? filterItem.get("").toString() : ""); + productionOrderItemEntity.setBatchNo(ObjectUtil.isNotEmpty(filterItem.get("CHARG")) ? filterItem.get("CHARG").toString() : ""); + productionOrderItemEntity.setFactory(ObjectUtil.isNotEmpty(filterItem.get("WERKS")) ? filterItem.get("WERKS").toString() : ""); + productionOrderItemEntity.setStorage(ObjectUtil.isNotEmpty(filterItem.get("LGORT")) ? filterItem.get("LGORT").toString() : ""); + + productionOrderItemEntity.setCreatedBy(SessionUtil.getUserCode()); + productionOrderItemEntity.setCreatedTime(LocalDateTime.now()); + productionOrderItemEntity.setUpdatedBy(SessionUtil.getUserCode()); + productionOrderItemEntity.setUpdatedTime(LocalDateTime.now()); + saveItemList.add(productionOrderItemEntity); + } + this.productionOrderItemService.saveBatch(saveItemList); + } + } + } } - this.saveBatch(saveList); } } - // 生产订单明细 - if (outTablesMap.containsKey("ITEM")) { - /** - * CHARG=, 批号 - * BAUGR=000000002120230002, 高层次组装的物料号 - * WERKS=1010, 工厂 - * LGORT=0022, 库存地点 - * BDMNG=1.000, 需求量 - * MEINS=ST, 基本计量单位 - * ENMNG=0.000, 提货数 - * AUFNR=000010435564, 订单号 - * RSNUM=0001308129, 预留/相关需求的编号 - * NOMAT=, 后继/原始物料 - * POSNR=0010, BOM 项目号 - * NOMNG=0.000, 需求数量 - * RSPOS=0001, 预留/相关需求的项目编号 - * DUMPS=, 虚拟项目标识 - * PRVBE=, 供应区域 - * POSTP=L, 项目类别(物料单) - * BDTER=Tue Jan 02 00:00:00 CST 2024, 组件的需求日期 - * SORTF=, 排序字符串 - * MATNR=000000002100330331 物料号 - */ - } + } catch (Exception e) { e.printStackTrace(); log.error("从SAP获取生产订单报错: {}", e.getMessage()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderMapper.xml index 40514421..c212f1fd 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderMapper.xml @@ -24,6 +24,9 @@ + + and sync_status = #{query.syncStatus} + and production_order like concat('%',#{query.productionOrder},'%')