doc/create_table_process_route_item.sql
@@ -50,6 +50,10 @@ create_time datetime null comment '录入时间', update_time datetime null comment '更新时间', work_order_no varchar(255) not null default '' comment '工单编号', plan_start_time datetime null comment '计划开始时间', plan_end_time datetime null comment '计划结束时间', actual_start_time datetime null comment '实际开始时间', actual_end_time datetime null comment '实际结束时间', status int not null default 0 comment '状态 1 待确认 2 待生产 3生产中 4已生产 ', tenant_id bigint not null comment '租户id' ); src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -23,4 +23,9 @@ public R page(Page<ProductionProductMainDto> page, ProductionProductMainDto productionProductMainDto) { return R.ok(productionProductMainService.listPageProductionProductMainDto(page, productionProductMainDto)); } @GetMapping("addProductMain") public R addProductMain(ProductionProductMainDto productionProductMainDto) { return R.ok(productionProductMainService.addProductMain(productionProductMainDto)); } } src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class ProductionProductMainDto extends ProductionProductMain { @ApiModelProperty(value = "工单编号") @@ -14,4 +16,7 @@ @ApiModelProperty(value = "报工人员昵称") private String nickName; @ApiModelProperty(value = "报工数量") private BigDecimal quantity; } src/main/java/com/ruoyi/production/pojo/ProcessRouteItem.java
@@ -1,15 +1,13 @@ package com.ruoyi.production.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("process_route_item") public class ProcessRouteItem { @TableId(type = IdType.AUTO) src/main/java/com/ruoyi/production/pojo/ProductionProductInput.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,6 +11,7 @@ import java.time.LocalDateTime; @Data @TableName("production_product_input") public class ProductionProductInput { @TableId src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
@@ -3,12 +3,14 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("production_product_main") public class ProductionProductMain { @TableId @@ -21,12 +23,13 @@ private Long userId; @ApiModelProperty(value = "工单id") private String workOrderId; private String productProcessRouteItemId; @ApiModelProperty(value = "报工状态") private Integer status; @ApiModelProperty(value = "创建时间") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "租户ID") src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,6 +11,7 @@ import java.time.LocalDateTime; @Data @TableName("production_product_input") public class ProductionProductOutput { @TableId src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -12,4 +12,7 @@ public interface ProductionProductMainService extends IService<ProductionProductMain> { IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto); Boolean addProductMain(ProductionProductMainDto productionProductMainDto); } src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -1,19 +1,23 @@ package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.production.controller.ProductWorkOrderController; import com.ruoyi.production.dto.ProcessRouteItemDto; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.dto.ProductionProductMainDto; import com.ruoyi.production.mapper.ProcessRouteItemMapper; import com.ruoyi.production.mapper.ProductionProductMainMapper; import com.ruoyi.production.pojo.ProductionProductMain; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.production.service.ProductionProductMainService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; @Service @@ -21,9 +25,63 @@ public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService { @Autowired private ProductionProductMainMapper productionProductMainMapper; @Autowired private ProductWorkOrderController productWorkOrderController; @Autowired private ProductWorkOrderMapper productWorkOrderMapper; @Autowired private ProductProcessRouteItemMapper productProcessRouteItemMapper; @Autowired private ProductionProductOutputMapper productionProductOutputMapper; @Autowired private ProcessRouteItemMapper processRouteItemMapper; @Autowired private ProductModelMapper productModelMapper; @Override public IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto) { return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto); } @Override public Boolean addProductMain(ProductionProductMainDto productionProductMainDto) { ProductionProductMain productionProductMain = new ProductionProductMain(); ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(productionProductMainDto.getProductProcessRouteItemId()); String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); // 查询今日已存在的最大工单号 QueryWrapper<ProductionProductMain> queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("work_order_no", datePrefix) .orderByDesc("work_order_no") .last("LIMIT 1"); ProductionProductMain lastWorkOrder = productionProductMainMapper.selectOne(queryWrapper); int sequenceNumber = 1; // 默认序号 if (lastWorkOrder != null && lastWorkOrder.getProductNo() != null) { String lastNo = lastWorkOrder.getProductNo().toString(); if (lastNo.startsWith(datePrefix)) { String seqStr = lastNo.substring(datePrefix.length()); try { sequenceNumber = Integer.parseInt(seqStr) + 1; } catch (NumberFormatException e) { sequenceNumber = 1; } } } String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber); productionProductMain.setProductNo(workOrderNoStr); productionProductMain.setUserId(productionProductMainDto.getUserId()); productionProductMain.setProductProcessRouteItemId(productionProductMainDto.getProductProcessRouteItemId()); productionProductMain.setStatus(0); //添加报工主表 productionProductMainMapper.insert(productionProductMain); ProductionProductOutput productionProductOutput = new ProductionProductOutput(); productionProductOutput.setProductMainId(productionProductMain.getId()); productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId()); productionProductOutput.setQuantity(productionProductMainDto.getQuantity()); //添加产出 productionProductOutputMapper.insert(productionProductOutput); return true; } }