From 5e1ef72fa538c03fe950c0935df65c4ba95289ee Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Wed, 24 Jul 2024 10:47:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/api/user/ProductionOrderApi.java | 104 ++++++++++ .../master/ProductionOrderItemMapper.java | 11 + .../mapper/master/ProductionOrderMapper.java | 18 ++ .../pojo/entity/ProductionOrderEntity.java | 156 ++++++++++++++ .../entity/ProductionOrderItemEntity.java | 191 ++++++++++++++++++ .../pojo/query/ProductionOrderQuery.java | 50 +++++ .../pojo/query/ProductionOrderSaveQuery.java | 35 ++++ .../bomnew/pojo/vo/ProductionOrderItemVO.java | 157 ++++++++++++++ .../bomnew/pojo/vo/ProductionOrderVO.java | 128 ++++++++++++ .../service/ProductionOrderItemService.java | 16 ++ .../service/ProductionOrderService.java | 147 ++++++++++++++ .../master/ProductionOrderItemMapper.xml | 4 + .../mapper/master/ProductionOrderMapper.xml | 50 +++++ 13 files changed, 1067 insertions(+) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/ProductionOrderApi.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderItemMapper.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderMapper.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderEntity.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderItemEntity.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderQuery.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderSaveQuery.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderItemVO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderVO.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderItemService.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderService.java create mode 100644 nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderItemMapper.xml create mode 100644 nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderMapper.xml diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/ProductionOrderApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/ProductionOrderApi.java new file mode 100644 index 00000000..abfd0c32 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/ProductionOrderApi.java @@ -0,0 +1,104 @@ +package com.nflg.product.bomnew.api.user; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.product.base.core.api.BaseApi; +import com.nflg.product.bomnew.pojo.query.ProductionOrderQuery; +import com.nflg.product.bomnew.pojo.query.ProductionOrderSaveQuery; +import com.nflg.product.bomnew.pojo.vo.ProductionOrderItemVO; +import com.nflg.product.bomnew.pojo.vo.ProductionOrderVO; +import com.nflg.product.bomnew.service.ProductionOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import nflg.product.common.vo.ResultVO; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author makejava + */ +@Api(tags = "生产订单") +@RestController +@RequestMapping("productionOrder") +public class ProductionOrderApi extends BaseApi { + + /** + * 服务对象 + */ + @Resource + private ProductionOrderService productionOrderService; + + /** + * 分页查询所有数据 + * + * @param query Query 查询实体 + * @return 所有数据 + */ + @PostMapping("getListByPage") + @ApiOperation("auto-生产订单列表") + public ResultVO> selectProductionOrderPageByCondition(@RequestBody ProductionOrderQuery query) { + return ResultVO.success(productionOrderService.getListByPage(query)); + } + + @GetMapping("getItemList") + @ApiOperation("auto-生产订单详情") + public ResultVO> getItemList(@RequestParam Long rowId) { + return ResultVO.success(productionOrderService.getItemList(rowId)); + } + + @GetMapping("queryPostByUser") + @ApiOperation("auto-查询用户所有岗位") + public ResultVO queryPostByUser() { + return ResultVO.success(productionOrderService.queryPostByUser()); + } + + /** + * 暂存 + * @param query 保存的数据 + * @return + */ + @PostMapping("temporary") + @ApiOperation("暂存") + public ResultVO temporary(@Valid @RequestBody @NotNull ProductionOrderSaveQuery query) { + productionOrderService.save(query, false); + return ResultVO.success(); + } + + /** + * 提交 + * @param query 保存的数据 + * @return + */ + @PostMapping("submit") + @ApiOperation("提交") + public ResultVO submit(@Valid @RequestBody @NotNull ProductionOrderSaveQuery query) { + productionOrderService.submit(query); + return ResultVO.success(); + } + + /** + * 发起变更通知 + * @return + */ + @PostMapping("sendNotice") + @ApiOperation("发起变更通知") + public ResultVO sendNotice(@RequestBody List rowIds) { + productionOrderService.sendNotice(rowIds); + return ResultVO.success(); + } + + /** + * 确认状态 + * @return + */ + @PostMapping("confirmStatus") + @ApiOperation("确认状态") + public ResultVO confirmStatus(@Valid @RequestBody @NotNull ProductionOrderQuery query) { + productionOrderService.confirmStatus(query.getRowId(), query.getConfirmStatus()); + return ResultVO.success(); + } + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderItemMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderItemMapper.java new file mode 100644 index 00000000..1437f3f2 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderItemMapper.java @@ -0,0 +1,11 @@ +package com.nflg.product.bomnew.mapper.master; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.product.bomnew.pojo.entity.ProductionOrderItemEntity; + +/** + * @author makejava + */ +public interface ProductionOrderItemMapper extends BaseMapper { + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderMapper.java new file mode 100644 index 00000000..fa02b767 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/ProductionOrderMapper.java @@ -0,0 +1,18 @@ +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.ProductionOrderEntity; +import com.nflg.product.bomnew.pojo.query.ProductionOrderQuery; +import com.nflg.product.bomnew.pojo.vo.ProductionOrderVO; +import org.apache.ibatis.annotations.Param; + +/** + * @author makejava + */ +public interface ProductionOrderMapper extends BaseMapper { + + Page getListByPage(Page page , @Param("query") ProductionOrderQuery query); + + String queryPostByUser(@Param("userRowId") Long userRowId); +} 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 new file mode 100644 index 00000000..0ed04227 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderEntity.java @@ -0,0 +1,156 @@ +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 com.baomidou.mybatisplus.annotation.TableName; +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; +import java.time.LocalDateTime; + +/** + * t_production_order + * 生产订单抬头表 + * + * @author makejava + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-bomnew-pojo-main-entity-ProductionOrderEntity") +@TableName(value = "t_production_order") +public class ProductionOrderEntity implements Serializable { + + /** + * 行ID 雪花 + */ + @TableId(value = "row_id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "行ID 雪花") + private Long rowId; + + /** + * 工厂 + */ + @TableField(value = "factory") + @ApiModelProperty(value = "工厂") + private String factory; + + /** + * 生产订单号 + */ + @TableField(value = "production_order") + @ApiModelProperty(value = "生产订单号") + private String productionOrder; + + /** + * 物料编码 + */ + @TableField(value = "material_no") + @ApiModelProperty(value = "物料编码") + private String materialNo; + + /** + * 物料描述 + */ + @TableField(value = "material_desc") + @ApiModelProperty(value = "物料描述") + private String materialDesc; + + /** + * 数量 + */ + @TableField(value = "num") + @ApiModelProperty(value = "数量") + private BigDecimal num; + + /** + * 单位 + */ + @TableField(value = "unit") + @ApiModelProperty(value = "单位") + private String unit; + + /** + * 生产订单类型 + */ + @TableField(value = "order_type") + @ApiModelProperty(value = "生产订单类型") + private String orderType; + + /** + * 长文本 + */ + @TableField(value = "long_text") + @ApiModelProperty(value = "长文本") + private String longText; + + /** + * 合同号 + */ + @TableField(value = "contract_no") + @ApiModelProperty(value = "合同号") + private String contractNo; + + /** + * 追踪ID号 + */ + @TableField(value = "find_id") + @ApiModelProperty(value = "追踪ID号") + private String findId; + + /** + * 状态 0 未处理、1 已处理、2 已导入SAP + */ + @TableField(value = "edit_status") + @ApiModelProperty(value = "状态 0 未处理、1 已处理、2 已导入SAP") + private Integer editStatus; + + /** + * 提交 0否 1是 + */ + @TableField(value = "submit") + @ApiModelProperty(value = "提交 0否 1是") + private Integer submit; + + /** + * 确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认 + */ + @TableField(value = "confirm_status") + @ApiModelProperty(value = "确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认") + private Integer confirmStatus; + + /** + * 创建人 + */ + @TableField(value = "created_by") + @ApiModelProperty(value = "创建人") + private String createdBy; + + /** + * 创建时间 + */ + @TableField(value = "created_time") + @ApiModelProperty(value = "创建时间") + private LocalDateTime createdTime; + + /** + * 更新人 + */ + @TableField(value = "updated_by") + @ApiModelProperty(value = "更新人") + private String updatedBy; + + /** + * 更新时间 + */ + @TableField(value = "updated_time") + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + private static final long serialVersionUID = 1L; + +} 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 new file mode 100644 index 00000000..0daae617 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/ProductionOrderItemEntity.java @@ -0,0 +1,191 @@ +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 com.baomidou.mybatisplus.annotation.TableName; +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; +import java.time.LocalDateTime; + +/** + * t_production_order_item + * 生产订单明细表 + * + * @author makejava + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-bomnew-pojo-main-entity-ProductionOrderItemEntity") +@TableName(value = "t_production_order_item") +public class ProductionOrderItemEntity implements Serializable { + + /** + * 行ID 雪花 + */ + @TableId(value = "row_id", type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "行ID 雪花") + private Long rowId; + + /** + * 生产订单行ID + */ + @TableField(value = "order_row_id") + @ApiModelProperty(value = "生产订单行ID") + private Long orderRowId; + + /** + * 项目号 + */ + @TableField(value = "item_no") + @ApiModelProperty(value = "项目号") + private String itemNo; + + /** + * 物料编码 + */ + @TableField(value = "material_no") + @ApiModelProperty(value = "物料编码") + private String materialNo; + + /** + * 物料描述 + */ + @TableField(value = "material_desc") + @ApiModelProperty(value = "物料描述") + private String materialDesc; + + /** + * 父物料 0否 1是 + */ + @TableField(value = "parent_material") + @ApiModelProperty(value = "父物料 0否 1是") + private Integer parentMaterial; + + /** + * 需求数量 + */ + @TableField(value = "command_num") + @ApiModelProperty(value = "需求数量") + private BigDecimal commandNum; + + /** + * 承诺数量 + */ + @TableField(value = "promise_num") + @ApiModelProperty(value = "承诺数量") + private BigDecimal promiseNum; + + /** + * 提货数 + */ + @TableField(value = "pick_num") + @ApiModelProperty(value = "提货数") + private BigDecimal pickNum; + + /** + * 单位 + */ + @TableField(value = "unit") + @ApiModelProperty(value = "单位") + private String unit; + + /** + * 项目类别 + */ + @TableField(value = "project_type") + @ApiModelProperty(value = "项目类别") + private String projectType; + + /** + * 工序 + */ + @TableField(value = "progress") + @ApiModelProperty(value = "工序") + private String progress; + + /** + * 追踪ID号 + */ + @TableField(value = "find_id") + @ApiModelProperty(value = "追踪ID号") + private String findId; + + /** + * 批次号 + */ + @TableField(value = "batch_no") + @ApiModelProperty(value = "批次号") + private String batchNo; + + /** + * 工厂 + */ + @TableField(value = "factory") + @ApiModelProperty(value = "工厂") + private String factory; + + /** + * 存储地点 + */ + @TableField(value = "storage") + @ApiModelProperty(value = "存储地点") + private String storage; + + /** + * 反冲 0否 1是 + */ + @TableField(value = "fanchong") + @ApiModelProperty(value = "反冲 0否 1是") + private Integer fanchong; + + /** + * 虚拟件 0否 1是 + */ + @TableField(value = "virtual_material") + @ApiModelProperty(value = "虚拟件 0否 1是") + private Integer virtualMaterial; + + /** + * 提交 0否 1是 + */ + @TableField(value = "submit") + @ApiModelProperty(value = "提交 0否 1是") + private Integer submit; + + /** + * 创建人 + */ + @TableField(value = "created_by") + @ApiModelProperty(value = "创建人") + private String createdBy; + + /** + * 创建时间 + */ + @TableField(value = "created_time") + @ApiModelProperty(value = "创建时间") + private LocalDateTime createdTime; + + /** + * 更新人 + */ + @TableField(value = "updated_by") + @ApiModelProperty(value = "更新人") + private String updatedBy; + + /** + * 更新时间 + */ + @TableField(value = "updated_time") + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + 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 new file mode 100644 index 00000000..1669cd58 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderQuery.java @@ -0,0 +1,50 @@ +package com.nflg.product.bomnew.pojo.query; + +import com.baomidou.mybatisplus.annotation.IdType; +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; + +/** + * @author makejava + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-bomnew-pojo-new-query-ProductionOrderQuery") +public class ProductionOrderQuery extends BasePageQuery implements Serializable { + + /** + * 行ID 雪花 + */ + @ApiModelProperty(value = "行ID 雪花") + private Long rowId; + + /** + * 生产订单号 + */ + @ApiModelProperty(value = "生产订单号") + private String productionOrder; + + /** + * 开始时间 + */ + @ApiModelProperty(value = "开始时间") + private String startDate; + + /** + * 结束时间 + */ + @ApiModelProperty(value = "结束时间") + private String endDate; + + /** + * 确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认 + */ + @ApiModelProperty(value = "确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认") + private Integer confirmStatus; + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderSaveQuery.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderSaveQuery.java new file mode 100644 index 00000000..81ea0e5b --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/ProductionOrderSaveQuery.java @@ -0,0 +1,35 @@ +package com.nflg.product.bomnew.pojo.query; + +import com.nflg.product.bomnew.pojo.vo.ProductionOrderItemVO; +import com.nflg.product.bomnew.pojo.vo.ProductionOrderVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @author makejava + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "com-nflg-product-bomnew-pojo-new-query-ProductionOrderSaveQuery") +public class ProductionOrderSaveQuery implements Serializable { + + /** + * 抬头 + */ + @ApiModelProperty(value = "抬头") + @NotNull + private ProductionOrderVO header; + + /** + * 明细 + */ + @ApiModelProperty(value = "明细") + @NotNull + private List details; +} 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 new file mode 100644 index 00000000..df154707 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderItemVO.java @@ -0,0 +1,157 @@ +package com.nflg.product.bomnew.pojo.vo; + +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; +import java.time.LocalDateTime; + +@Data +@Accessors(chain = true) +@ApiModel(value="com-nflg-product-bomnew-pojo-new-vo-ProductionOrderItemVO") +public class ProductionOrderItemVO implements Serializable { + + /** + * 行ID 雪花 + */ + @ApiModelProperty(value = "行ID 雪花") + private Long rowId; + + /** + * 生产订单行ID + */ + @ApiModelProperty(value = "生产订单行ID") + private Long orderRowId; + + /** + * 项目号 + */ + @ApiModelProperty(value = "项目号") + private String itemNo; + + /** + * 物料编码 + */ + @ApiModelProperty(value = "物料编码") + private String materialNo; + + /** + * 物料描述 + */ + @ApiModelProperty(value = "物料描述") + private String materialDesc; + + /** + * 父物料 0否 1是 + */ + @ApiModelProperty(value = "父物料 0否 1是") + private Integer parentMaterial; + + /** + * 需求数量 + */ + @ApiModelProperty(value = "需求数量") + private BigDecimal commandNum; + + /** + * 承诺数量 + */ + @ApiModelProperty(value = "承诺数量") + private BigDecimal promiseNum; + + /** + * 提货数 + */ + @ApiModelProperty(value = "提货数") + private BigDecimal pickNum; + + /** + * 单位 + */ + @ApiModelProperty(value = "单位") + private String unit; + + /** + * 项目类别 + */ + @ApiModelProperty(value = "项目类别") + private String projectType; + + /** + * 工序 + */ + @ApiModelProperty(value = "工序") + private String progress; + + /** + * 追踪ID号 + */ + @ApiModelProperty(value = "追踪ID号") + private String findId; + + /** + * 批次号 + */ + @ApiModelProperty(value = "批次号") + private String batchNo; + + /** + * 工厂 + */ + @ApiModelProperty(value = "工厂") + private String factory; + + /** + * 存储地点 + */ + @ApiModelProperty(value = "存储地点") + private String storage; + + /** + * 反冲 0否 1是 + */ + @ApiModelProperty(value = "反冲 0否 1是") + private Integer fanchong; + + /** + * 虚拟件 0否 1是 + */ + @ApiModelProperty(value = "虚拟件 0否 1是") + private Integer virtualMaterial; + + /** + * 提交 0否 1是 + */ + @ApiModelProperty(value = "提交 0否 1是") + private Integer submit; + + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createdBy; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private LocalDateTime createdTime; + + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updatedBy; + + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + private static final long serialVersionUID = 1L; + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderVO.java new file mode 100644 index 00000000..4e3bb671 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ProductionOrderVO.java @@ -0,0 +1,128 @@ +package com.nflg.product.bomnew.pojo.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +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; +import java.time.LocalDateTime; + +@Data +@Accessors(chain = true) +@ApiModel(value="com-nflg-product-bomnew-pojo-new-vo-ProductionOrderVO") +public class ProductionOrderVO implements Serializable { + + /** + * 行ID 雪花 + */ + @ApiModelProperty(value = "行ID 雪花") + private Long rowId; + + /** + * 工厂 + */ + @ApiModelProperty(value = "工厂") + private String factory; + + /** + * 生产订单号 + */ + @ApiModelProperty(value = "生产订单号") + private String productionOrder; + + /** + * 物料编码 + */ + @ApiModelProperty(value = "物料编码") + private String materialNo; + + /** + * 物料描述 + */ + @ApiModelProperty(value = "物料描述") + private String materialDesc; + + /** + * 数量 + */ + @ApiModelProperty(value = "数量") + private BigDecimal num; + + /** + * 单位 + */ + @ApiModelProperty(value = "单位") + private String unit; + + /** + * 生产订单类型 + */ + @ApiModelProperty(value = "生产订单类型") + private String orderType; + + /** + * 长文本 + */ + @ApiModelProperty(value = "长文本") + private String longText; + + /** + * 合同号 + */ + @ApiModelProperty(value = "合同号") + private String contractNo; + + /** + * 追踪ID号 + */ + @ApiModelProperty(value = "追踪ID号") + private String findId; + + /** + * 状态 0 未处理、1 已处理、2 已导入SAP + */ + @ApiModelProperty(value = "状态 0 未处理、1 已处理、2 已导入SAP") + private Integer editStatus; + + /** + * 提交 0否 1是 + */ + @ApiModelProperty(value = "提交 0否 1是") + private Integer submit; + + /** + * 确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认 + */ + @ApiModelProperty(value = "确认情况 0设计待确认 1供应链待确认 2计划待确认 3计划已确认") + private Integer confirmStatus; + + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createdBy; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private LocalDateTime createdTime; + + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updatedBy; + + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private LocalDateTime updatedTime; + + private static final long serialVersionUID = 1L; + +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderItemService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderItemService.java new file mode 100644 index 00000000..f29e4288 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderItemService.java @@ -0,0 +1,16 @@ +package com.nflg.product.bomnew.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.product.bomnew.mapper.master.ProductionOrderItemMapper; +import com.nflg.product.bomnew.pojo.entity.ProductionOrderItemEntity; +import org.springframework.stereotype.Service; + + +/** + * @author makejava + */ +@Service +public class ProductionOrderItemService extends ServiceImpl { + +} 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 new file mode 100644 index 00000000..efe33968 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/ProductionOrderService.java @@ -0,0 +1,147 @@ +package com.nflg.product.bomnew.service; + + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.product.base.core.conmon.util.SessionUtil; +import com.nflg.product.bomnew.mapper.master.ProductionOrderMapper; +import com.nflg.product.bomnew.pojo.entity.BomNewDQbomChildEntity; +import com.nflg.product.bomnew.pojo.entity.ProductionOrderEntity; +import com.nflg.product.bomnew.pojo.entity.ProductionOrderItemEntity; +import com.nflg.product.bomnew.pojo.query.ProductionOrderQuery; +import com.nflg.product.bomnew.pojo.query.ProductionOrderSaveQuery; +import com.nflg.product.bomnew.pojo.vo.ProductionOrderItemVO; +import com.nflg.product.bomnew.pojo.vo.ProductionOrderVO; +import com.nflg.product.bomnew.util.VUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + + +/** + * @author makejava + */ +@Service +public class ProductionOrderService extends ServiceImpl { + + @Resource + private ProductionOrderItemService productionOrderItemService; + + public IPage getListByPage(ProductionOrderQuery query){ + Page page=new Page<>(query.getPage(),query.getPageSize()); + return this.getBaseMapper().getListByPage(page,query); + } + + public List 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); + } + + public String queryPostByUser() { + return this.getBaseMapper().queryPostByUser(SessionUtil.getRowId()); + } + + /** + * 暂存 + * @param query + */ + public void save(ProductionOrderSaveQuery query, boolean submit) { + VUtils.isTure(ObjectUtil.isEmpty(query.getHeader()) || ObjectUtil.isEmpty(query.getHeader().getRowId())) + .throwMessage("生产订单 rowId 不能为空"); + Long orderRowId = query.getHeader().getRowId(); + // 清空所有明细 + productionOrderItemService.getBaseMapper() + .delete(Wrappers.lambdaQuery(ProductionOrderItemEntity.class).eq(ProductionOrderItemEntity::getOrderRowId, orderRowId)); + // 处理明细 + List items = Convert.toList(ProductionOrderItemEntity.class, query.getDetails()); + items.forEach(item -> { + Long headerRowId = item.getOrderRowId(); + item.setSubmit(submit ? 1 : 0); + item.setUpdatedBy(SessionUtil.getUserCode()); + item.setUpdatedTime(LocalDateTime.now()); + // 新增 + if (ObjectUtil.isEmpty(headerRowId)) { + item.setRowId(IdWorker.getId()); + item.setOrderRowId(orderRowId); + item.setCreatedBy(SessionUtil.getUserCode()); + item.setCreatedTime(LocalDateTime.now()); + } else { + // 修改 + } + }); + productionOrderItemService.saveOrUpdateBatch(items); + // 处理抬头 + ProductionOrderEntity header = new ProductionOrderEntity(); + header.setRowId(orderRowId); + header.setSubmit(submit ? 1 : 0); + header.setUpdatedBy(SessionUtil.getUserCode()); + header.setUpdatedTime(LocalDateTime.now()); + this.updateById(header); + } + + /** + * 提交 + * @param query + */ + public void submit(ProductionOrderSaveQuery query) { + save(query, true); + // 其他逻辑 + } + + /** + * 发起变更通知 + * @param rowIds + */ + public void sendNotice(List rowIds) { + VUtils.isTure(CollUtil.isEmpty(rowIds)).throwMessage("请选择要发起变更的数据"); + List updateList = new ArrayList<>(rowIds.size()); + rowIds.forEach(rowId -> { + ProductionOrderEntity update = new ProductionOrderEntity(); + update.setRowId(rowId); + update.setEditStatus(1); // 已处理 + update.setUpdatedBy(SessionUtil.getUserCode()); + update.setUpdatedTime(LocalDateTime.now()); + updateList.add(update); + }); + this.updateBatchById(updateList); + } + + public void confirmStatus(Long rowId, Integer confirmStatus) { + VUtils.isTure(ObjectUtil.isEmpty(rowId)).throwMessage("生产订单 rowId 不能为空"); + ProductionOrderEntity updateEntity = new ProductionOrderEntity(); + updateEntity.setRowId(rowId); + updateEntity.setConfirmStatus(confirmStatus); + updateEntity.setUpdatedBy(SessionUtil.getUserCode()); + updateEntity.setUpdatedTime(LocalDateTime.now()); + this.updateById(updateEntity); + // 计划已确认,自动提交到AP + if (confirmStatus == 3) { + syncChange2Sap(rowId); + } + } + + /** + * 生产订单变更提交到SAP + * @param rowId + */ + private void syncChange2Sap(Long rowId) { + // TODO + ProductionOrderEntity updateEntity = new ProductionOrderEntity(); + updateEntity.setRowId(rowId); + updateEntity.setEditStatus(2); + updateEntity.setUpdatedBy(SessionUtil.getUserCode()); + updateEntity.setUpdatedTime(LocalDateTime.now()); + this.updateById(updateEntity); + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderItemMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderItemMapper.xml new file mode 100644 index 00000000..adeae711 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderItemMapper.xml @@ -0,0 +1,4 @@ + + + + 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 new file mode 100644 index 00000000..adc45d05 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/ProductionOrderMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + and production_order like concat('%',#{query.productionOrder},'%') + + + and created_time >= #{query.startDate} + + + and created_time <= #{query.endDate} + + + + + + +