排产相关-sjx

develop-QA
sunjianxi 3 months ago
parent 918691bc8f
commit 1df70a1e4f
  1. 8
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 160
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/DifferentFurnaceTankController.java
  3. 12
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/EquipAbilityController.java
  4. 161
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/SameTroughController.java
  5. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/EquipAbilityEntity.java
  6. 53
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/SameTroughEntity.java
  7. 171
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/SameTroughExcel.java
  8. 22
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/SameTroughMapper.java
  9. 32
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/SameTroughMapper.xml
  10. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml
  11. 1
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IEquipResourceService.java
  12. 22
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/ISameTroughService.java
  13. 48
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/EquipResourceServiceImpl.java
  14. 30
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/SameTroughServiceImpl.java
  15. 28
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java
  16. 9
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/vo/SameTroughVO.java
  17. 28
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/wrapper/SameTroughWrapper.java

@ -13,10 +13,10 @@ public interface LauncherConstant {
* nacos 命名空间
*/
// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// 生产环境
String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// 测试环境
// String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
// 生产环境
// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// 测试环境
String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
/**
* nacos 用户名

@ -1,160 +0,0 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity;
import org.springblade.scheduling.scheduling.excel.DifferentFurnaceTankExcel;
import org.springblade.scheduling.scheduling.service.IDifferentFurnaceTankService;
import org.springblade.scheduling.scheduling.vo.DifferentFurnaceTankVO;
import org.springblade.scheduling.scheduling.wrapper.DifferentFurnaceTankWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 非同炉同槽因素表 控制器
*
* @author BladeX
* @since 2025-12-18
*/
@RestController
@AllArgsConstructor
@RequestMapping("/differentFurnaceTank")
@Tag(name = "非同炉同槽因素表", description = "非同炉同槽因素表接口")
public class DifferentFurnaceTankController extends BladeController {
private final IDifferentFurnaceTankService differentFurnaceTankService;
/**
* 非同炉同槽因素表 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入DifferentFurnaceTank")
public R<DifferentFurnaceTankVO> detail(DifferentFurnaceTankEntity DifferentFurnaceTank) {
DifferentFurnaceTankEntity detail = differentFurnaceTankService.getOne(Condition.getQueryWrapper(DifferentFurnaceTank));
return R.data(DifferentFurnaceTankWrapper.build().entityVO(detail));
}
/**
* 非同炉同槽因素表 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入DifferentFurnaceTank")
public R<IPage<DifferentFurnaceTankVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> DifferentFurnaceTank, Query query) {
IPage<DifferentFurnaceTankEntity> pages = differentFurnaceTankService.page(Condition.getPage(query), Condition.getQueryWrapper(DifferentFurnaceTank, DifferentFurnaceTankEntity.class));
return R.data(DifferentFurnaceTankWrapper.build().pageVO(pages));
}
/**
* 非同炉同槽因素表 自定义分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入DifferentFurnaceTank")
public R<IPage<DifferentFurnaceTankVO>> page(DifferentFurnaceTankVO DifferentFurnaceTank, Query query) {
IPage<DifferentFurnaceTankVO> pages = differentFurnaceTankService.selectDifferentFurnaceTankPage(Condition.getPage(query), DifferentFurnaceTank);
return R.data(pages);
}
/**
* 非同炉同槽因素表 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入DifferentFurnaceTank")
public R save(@Valid @RequestBody DifferentFurnaceTankEntity DifferentFurnaceTank) {
return R.status(differentFurnaceTankService.save(DifferentFurnaceTank));
}
/**
* 非同炉同槽因素表 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入DifferentFurnaceTank")
public R update(@Valid @RequestBody DifferentFurnaceTankEntity DifferentFurnaceTank) {
return R.status(differentFurnaceTankService.updateById(DifferentFurnaceTank));
}
/**
* 非同炉同槽因素表 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入DifferentFurnaceTank")
public R submit(@Valid @RequestBody DifferentFurnaceTankEntity DifferentFurnaceTank) {
return R.status(differentFurnaceTankService.saveOrUpdate(DifferentFurnaceTank));
}
/**
* 非同炉同槽因素表 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(differentFurnaceTankService.deleteLogic(Func.toLongList(ids)));
}
/**
* 导出数据
*/
@IsAdmin
@GetMapping("/export")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入DifferentFurnaceTank")
public void export(@Parameter(hidden = true) @RequestParam Map<String, Object> DifferentFurnaceTank, BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<DifferentFurnaceTankEntity> queryWrapper = Condition.getQueryWrapper(DifferentFurnaceTank, DifferentFurnaceTankEntity.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(DifferentFurnaceTank::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(DifferentFurnaceTankEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<DifferentFurnaceTankExcel> list = differentFurnaceTankService.export(queryWrapper);
ExcelUtil.export(response, "非同炉同槽因素表数据" + DateUtil.time(), "非同炉同槽因素表数据表", list, DifferentFurnaceTankExcel.class);
}
}

@ -49,6 +49,7 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.scheduling.scheduling.entity.EquipAbilityEntity;
import org.springblade.scheduling.scheduling.excel.EquipAbilityExcel;
import org.springblade.scheduling.scheduling.service.IEquipAbilityService;
import org.springblade.scheduling.scheduling.service.IEquipResourceService;
import org.springblade.scheduling.scheduling.vo.EquipAbilityVO;
import org.springblade.scheduling.scheduling.wrapper.EquipAbilityWrapper;
import org.springframework.web.bind.annotation.*;
@ -69,6 +70,7 @@ import java.util.Map;
public class EquipAbilityController extends BladeController {
private final IEquipAbilityService equipAbilityService;
private final IEquipResourceService equipResourceService;
/**
* 设备能力表 详情
@ -113,7 +115,10 @@ public class EquipAbilityController extends BladeController {
if(CollectionUtils.isNotEmpty(list)){
return R.status(false,"该设备能力已存在!");
}
return R.status(equipAbilityService.save(entity));
equipAbilityService.save(entity);
//初始化设备资源
equipResourceService.initSingleEquipResource(entity.getWorkCenterId(),entity.getCraftId(),entity.getEquipCode());
return R.status(true);
}
/**
@ -123,7 +128,10 @@ public class EquipAbilityController extends BladeController {
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入mesEquipAbility")
public R update(@Valid @RequestBody EquipAbilityEntity entity) {
return R.status(equipAbilityService.updateById(entity));
equipAbilityService.updateById(entity);
//初始化设备资源
equipResourceService.initSingleEquipResource(entity.getWorkCenterId(),entity.getCraftId(),entity.getEquipCode());
return R.status(true);
}
/**

@ -0,0 +1,161 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.scheduling.scheduling.entity.SameTroughEntity;
import org.springblade.scheduling.scheduling.excel.SameTroughExcel;
import org.springblade.scheduling.scheduling.service.ISameTroughService;
import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import org.springblade.scheduling.scheduling.wrapper.SameTroughWrapper;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import java.util.Map;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
/**
* 非同槽因素表 控制器
*
* @author BladeX
* @since 2026-01-07
*/
@RestController
@AllArgsConstructor
@RequestMapping("/sameTrough")
@Tag(name = "非同槽因素表", description = "非同槽因素表接口")
public class SameTroughController extends BladeController {
private final ISameTroughService sameTroughService;
/**
* 非同槽因素表 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入SameTrough")
public R<SameTroughVO> detail(SameTroughEntity sameTrough) {
SameTroughEntity detail = sameTroughService.getOne(Condition.getQueryWrapper(sameTrough));
return R.data(SameTroughWrapper.build().entityVO(detail));
}
/**
* 非同槽因素表 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入SameTrough")
public R<IPage<SameTroughVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> sameTrough, Query query) {
IPage<SameTroughEntity> pages = sameTroughService.page(Condition.getPage(query), Condition.getQueryWrapper(sameTrough, SameTroughEntity.class));
return R.data(SameTroughWrapper.build().pageVO(pages));
}
/**
* 非同槽因素表 自定义分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入SameTrough")
public R<IPage<SameTroughVO>> page(SameTroughVO sameTrough, Query query) {
IPage<SameTroughVO> pages = sameTroughService.selectSameTroughPage(Condition.getPage(query), sameTrough);
return R.data(pages);
}
/**
* 非同槽因素表 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入SameTrough")
public R save(@Valid @RequestBody SameTroughEntity sameTrough) {
return R.status(sameTroughService.save(sameTrough));
}
/**
* 非同槽因素表 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入SameTrough")
public R update(@Valid @RequestBody SameTroughEntity sameTrough) {
return R.status(sameTroughService.updateById(sameTrough));
}
/**
* 非同槽因素表 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入SameTrough")
public R submit(@Valid @RequestBody SameTroughEntity sameTrough) {
return R.status(sameTroughService.saveOrUpdate(sameTrough));
}
/**
* 非同槽因素表 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(sameTroughService.deleteLogic(Func.toLongList(ids)));
}
/**
* 导出数据
*/
@IsAdmin
@GetMapping("/export")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入SameTrough")
public void export(@Parameter(hidden = true) @RequestParam Map<String, Object> sameTrough, BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<SameTroughEntity> queryWrapper = Condition.getQueryWrapper(sameTrough, SameTroughEntity.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(SameTrough::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(SameTroughEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<SameTroughExcel> list = sameTroughService.export(queryWrapper);
ExcelUtil.export(response, "非同槽因素表数据" + DateUtil.time(), "非同槽因素表数据表", list, SameTroughExcel.class);
}
}

@ -84,7 +84,7 @@ public class EquipAbilityEntity extends BaseEntity {
* 工艺能力Id
*/
@Schema(description = "工艺能力Id")
private String craftId;
private Long craftId;
/**
* 工艺能力名称

@ -25,27 +25,26 @@
*/
package org.springblade.scheduling.scheduling.entity;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 非同炉同槽因素表 实体类
* 非同槽因素表 实体类
*
* @author BladeX
* @since 2025-12-18
* @since 2026-01-07
*/
@Data
@TableName("MES_DIFFERENT_FURNACE_TANK")
@Schema(description = "MesDifferentFurnaceTank对象")
@TableName("MES_SAME_TROUGH")
@Schema(description = "MesSameTrough对象")
@EqualsAndHashCode(callSuper = true)
public class DifferentFurnaceTankEntity extends BaseEntity {
public class SameTroughEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
@ -71,14 +70,14 @@ public class DifferentFurnaceTankEntity extends BaseEntity {
@Schema(description = "工序名称")
private String processName;
/**
* 工艺能力id
* 工艺id
*/
@Schema(description = "工艺能力id")
@Schema(description = "工艺id")
private BigDecimal craftId;
/**
* 工艺能力
* 工艺名称
*/
@Schema(description = "工艺能力")
@Schema(description = "工艺名称")
private String craftName;
/**
* 键位
@ -89,11 +88,11 @@ public class DifferentFurnaceTankEntity extends BaseEntity {
* 生产厂家
*/
@Schema(description = "生产厂家")
private String factory;
private String producter;
/**
* 检验编
* 检验编
*/
@Schema(description = "检验编")
@Schema(description = "检验编")
private String inspectionCode;
/**
* 材料
@ -106,7 +105,7 @@ public class DifferentFurnaceTankEntity extends BaseEntity {
@Schema(description = "厚度")
private String thickness;
/**
*
*
*/
@Schema(description = "钝化")
private String passivation;
@ -119,11 +118,21 @@ public class DifferentFurnaceTankEntity extends BaseEntity {
* 生产标识
*/
@Schema(description = "生产标识")
private String productionIdent;
private String productIdent;
/**
* 结构
*/
@Schema(description = "结构")
private String structure;
/**
* 磁性
*/
@Schema(description = "磁性")
private String magnetism;
/**
* 结构/单件面积
* 批次号
*/
@Schema(description = "结构/单件面积")
private String singleArea;
@Schema(description = "批次号")
private String batchNo;
}

@ -0,0 +1,171 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.excel;
import lombok.Data;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import java.io.Serializable;
import java.io.Serial;
/**
* 非同槽因素表 Excel实体类
*
* @author BladeX
* @since 2026-01-07
*/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class SameTroughExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ColumnWidth(20)
@ExcelProperty("ID")
private BigDecimal id;
/**
* 作业中心id
*/
@ColumnWidth(20)
@ExcelProperty("作业中心id")
private BigDecimal workCenterId;
/**
* 作业中心名称
*/
@ColumnWidth(20)
@ExcelProperty("作业中心名称")
private String workCenterName;
/**
* 工序id
*/
@ColumnWidth(20)
@ExcelProperty("工序id")
private BigDecimal processId;
/**
* 工序名称
*/
@ColumnWidth(20)
@ExcelProperty("工序名称")
private String processName;
/**
* 工艺id
*/
@ColumnWidth(20)
@ExcelProperty("工艺id")
private BigDecimal craftId;
/**
* 工艺名称
*/
@ColumnWidth(20)
@ExcelProperty("工艺名称")
private String craftName;
/**
* 键位
*/
@ColumnWidth(20)
@ExcelProperty("键位")
private String keyBinding;
/**
* 生产厂家
*/
@ColumnWidth(20)
@ExcelProperty("生产厂家")
private String producter;
/**
* 检验编码
*/
@ColumnWidth(20)
@ExcelProperty("检验编码")
private String inspectionCode;
/**
* 材料
*/
@ColumnWidth(20)
@ExcelProperty("材料")
private String material;
/**
* 厚度
*/
@ColumnWidth(20)
@ExcelProperty("厚度")
private String thickness;
/**
* 钝化
*/
@ColumnWidth(20)
@ExcelProperty("钝化")
private String passivation;
/**
* 硬度
*/
@ColumnWidth(20)
@ExcelProperty("硬度")
private String hardness;
/**
* 生产标识
*/
@ColumnWidth(20)
@ExcelProperty("生产标识")
private String productIdent;
/**
* 结构
*/
@ColumnWidth(20)
@ExcelProperty("结构")
private String structure;
/**
* 磁性
*/
@ColumnWidth(20)
@ExcelProperty("磁性")
private String magnetism;
/**
* 批次号
*/
@ColumnWidth(20)
@ExcelProperty("批次号")
private String batchNo;
/**
* 是否已删除
*/
@ColumnWidth(20)
@ExcelProperty("是否已删除")
private Long isDeleted;
}

@ -29,36 +29,36 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity;
import org.springblade.scheduling.scheduling.excel.DifferentFurnaceTankExcel;
import org.springblade.scheduling.scheduling.vo.DifferentFurnaceTankVO;
import org.springblade.scheduling.scheduling.entity.SameTroughEntity;
import org.springblade.scheduling.scheduling.excel.SameTroughExcel;
import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import java.util.List;
/**
* 非同炉同槽因素表 Mapper 接口
* 非同槽因素表 Mapper 接口
*
* @author BladeX
* @since 2025-12-18
* @since 2026-01-07
*/
public interface DifferentFurnaceTankMapper extends BaseMapper<DifferentFurnaceTankEntity> {
public interface SameTroughMapper extends BaseMapper<SameTroughEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param DifferentFurnaceTank 查询参数
* @return List<DifferentFurnaceTankVO>
* @param SameTrough 查询参数
* @return List<SameTroughVO>
*/
List<DifferentFurnaceTankVO> selectDifferentFurnaceTankPage(IPage page, DifferentFurnaceTankVO DifferentFurnaceTank);
List<SameTroughVO> selectSameTroughPage(IPage page, SameTroughVO SameTrough);
/**
* 获取导出数据
*
* @param queryWrapper 查询条件
* @return List<DifferentFurnaceTankExcel>
* @return List<SameTroughExcel>
*/
List<DifferentFurnaceTankExcel> export(@Param("ew") Wrapper<DifferentFurnaceTankEntity> queryWrapper);
List<SameTroughExcel> export(@Param("ew") Wrapper<SameTroughEntity> queryWrapper);
}

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.scheduling.scheduling.mapper.DifferentFurnaceTankMapper">
<mapper namespace="org.springblade.scheduling.scheduling.mapper.SameTroughMapper">
<!-- 通用查询映射结果 -->
<resultMap id="differentFurnaceTankResultMap" type="org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity">
<resultMap id="sameTroughResultMap" type="org.springblade.scheduling.scheduling.entity.SameTroughEntity">
<result column="ID" property="id"/>
<result column="WORK_CENTER_ID" property="workCenterId"/>
<result column="WORK_CENTER_NAME" property="workCenterName"/>
@ -12,14 +12,16 @@
<result column="CRAFT_ID" property="craftId"/>
<result column="CRAFT_NAME" property="craftName"/>
<result column="KEY_BINDING" property="keyBinding"/>
<result column="FACTORY" property="factory"/>
<result column="PRODUCTER" property="producter"/>
<result column="INSPECTION_CODE" property="inspectionCode"/>
<result column="MATERIAL" property="material"/>
<result column="THICKNESS" property="thickness"/>
<result column="PASSIVATION" property="passivation"/>
<result column="HARDNESS" property="hardness"/>
<result column="PRODUCTION_IDENT" property="productionIdent"/>
<result column="SINGLE_AREA" property="singleArea"/>
<result column="PRODUCT_IDENT" property="productIdent"/>
<result column="STRUCTURE" property="structure"/>
<result column="MAGNETISM" property="magnetism"/>
<result column="BATCH_NO" property="batchNo"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
@ -30,25 +32,13 @@
</resultMap>
<select id="selectDifferentFurnaceTankPage" resultMap="differentFurnaceTankResultMap">
select * from MES_DIFFERENT_FURNACE_TANK
<where>
is_deleted = 0
<if test="param2.workCenterId !=null">
and work_center_id = #{param2.workCenterId}
</if>
<if test="param2.processId !=null">
and process_id = #{param2.processId}
</if>
<if test="param2.craftId !=null">
and craft_id = #{param2.craftId}
</if>
</where>
<select id="selectSameTroughPage" resultMap="sameTroughResultMap">
select * from MES_SAME_TROUGH where is_deleted = 0
</select>
<select id="export" resultType="org.springblade.scheduling.scheduling.excel.DifferentFurnaceTankExcel">
SELECT * FROM MES_DIFFERENT_FURNACE_TANK ${ew.customSqlSegment}
<select id="export" resultType="org.springblade.scheduling.scheduling.excel.SameTroughExcel">
SELECT * FROM MES_SAME_TROUGH ${ew.customSqlSegment}
</select>
</mapper>

@ -61,7 +61,7 @@
<select id="selectYieldOrderPage" resultType="org.springblade.scheduling.scheduling.vo.YieldOrderVO">
select * from MES_YIELD_ORDER
<where>
is_deleted = 0
is_deleted = 0 and work_center_id is not null
<if test="yieldOrder.status != null and yieldOrder.status != ''">
and status = #{yieldOrder.status}
</if>

@ -59,6 +59,7 @@ public interface IEquipResourceService extends BaseService<EquipResourceEntity>
List<EquipResourceExcel> export(Wrapper<EquipResourceEntity> queryWrapper);
public void initEquipResource();
public void initSingleEquipResource(Long workCenterId,Long craftId,String equipCode);
List<EquipResourceEntity> selectCommonCraftList();

@ -28,35 +28,35 @@ package org.springblade.scheduling.scheduling.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity;
import org.springblade.scheduling.scheduling.excel.DifferentFurnaceTankExcel;
import org.springblade.scheduling.scheduling.vo.DifferentFurnaceTankVO;
import org.springblade.scheduling.scheduling.entity.SameTroughEntity;
import org.springblade.scheduling.scheduling.excel.SameTroughExcel;
import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import java.util.List;
/**
* 非同炉同槽因素表 服务类
* 非同槽因素表 服务类
*
* @author BladeX
* @since 2025-12-18
* @since 2026-01-07
*/
public interface IDifferentFurnaceTankService extends BaseService<DifferentFurnaceTankEntity> {
public interface ISameTroughService extends BaseService<SameTroughEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param DifferentFurnaceTank 查询参数
* @return IPage<DifferentFurnaceTankVO>
* @param SameTrough 查询参数
* @return IPage<SameTroughVO>
*/
IPage<DifferentFurnaceTankVO> selectDifferentFurnaceTankPage(IPage<DifferentFurnaceTankVO> page, DifferentFurnaceTankVO DifferentFurnaceTank);
IPage<SameTroughVO> selectSameTroughPage(IPage<SameTroughVO> page, SameTroughVO SameTrough);
/**
* 导出数据
*
* @param queryWrapper 查询条件
* @return List<DifferentFurnaceTankExcel>
* @return List<SameTroughExcel>
*/
List<DifferentFurnaceTankExcel> export(Wrapper<DifferentFurnaceTankEntity> queryWrapper);
List<SameTroughExcel> export(Wrapper<SameTroughEntity> queryWrapper);
}

@ -26,10 +26,12 @@
package org.springblade.scheduling.scheduling.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springblade.core.mp.base.BaseEntity;
@ -79,13 +81,15 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
}
public void initEquipResource(){
//获取包括今天在内未来3
//获取包括今天在内未来7
Date date = new Date();
for(int i=0;i<7;i++){
String today = DateFormatUtils.format(DateUtils.addDays(date,i),"yyyy-MM-dd");
List<EquipResourceEntity> list = this.list(Wrappers.<EquipResourceEntity>lambdaQuery().eq(EquipResourceEntity::getDateTime,today));
LambdaQueryWrapper<EquipResourceEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EquipResourceEntity::getDateTime,today);
List<EquipResourceEntity> list = this.list(wrapper);
if(CollectionUtils.isEmpty(list)){
generateData(today);
generateData(today,null,null,null);
}
}
//删除3天之前的数据
@ -93,16 +97,46 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
deleteList.forEach(item -> baseMapper.deleteById(item.getId()));
}
public void initSingleEquipResource(Long workCenterId,Long craftId,String equipCode){
//获取包括今天在内未来7天
Date date = new Date();
for(int i=0;i<7;i++){
String today = DateFormatUtils.format(DateUtils.addDays(date,i),"yyyy-MM-dd");
generateData(today,workCenterId,craftId,equipCode);
}
}
@Override
public List<EquipResourceEntity> selectCommonCraftList() {
return baseMapper.selectCommonCraftList();
}
public void generateData(String day){
public void generateData(String day,Long workCenterId,Long craftId,String equipCode){
//获取设备能力列表
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(Wrappers.<EquipAbilityEntity>lambdaQuery().isNotNull(EquipAbilityEntity::getStandardTime));
LambdaQueryWrapper<EquipAbilityEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.isNotNull(EquipAbilityEntity::getStandardTime);
if(workCenterId != null){
wrapper.eq(EquipAbilityEntity::getWorkCenterId,workCenterId);
}
if(craftId != null){
wrapper.eq(EquipAbilityEntity::getCraftId,craftId);
}
if(StringUtils.isNotBlank(equipCode)){
wrapper.eq(EquipAbilityEntity::getEquipCode,equipCode);
}
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(wrapper);
if(CollectionUtils.isNotEmpty(equipAbilityList)){
if(workCenterId != null && craftId != null && StringUtils.isNotBlank(equipCode)){
List<EquipResourceEntity> list = this.list(Wrappers.<EquipResourceEntity>lambdaQuery()
.eq(EquipResourceEntity::getWorkCenterId,workCenterId)
.eq(EquipResourceEntity::getCraftId,craftId)
.eq(EquipResourceEntity::getEquipCode,equipCode)
.eq(EquipResourceEntity::getDateTime,day));
if(CollectionUtils.isNotEmpty(list)){
list.forEach(item -> baseMapper.deleteById(item.getId()));
}
}
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
@ -125,7 +159,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode());
equipResource.setEquipName(equipAbility.getEquipName());
equipResource.setCraftId(equipAbility.getCraftId());
equipResource.setCraftId(equipAbility.getCraftId().toString());
equipResource.setCraftName(equipAbility.getCraftName());
equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility());
@ -170,7 +204,7 @@ public class EquipResourceServiceImpl extends BaseServiceImpl<EquipResourceMappe
equipResource.setDateTime(day);
equipResource.setEquipCode(equipAbility.getEquipCode());
equipResource.setEquipName(equipAbility.getEquipName());
equipResource.setCraftId(equipAbility.getCraftId());
equipResource.setCraftId(equipAbility.getCraftId().toString());
equipResource.setCraftName(equipAbility.getCraftName());
equipResource.setPeriod(startTime.format(timeFormatter) + "-" + endTime.format(timeFormatter));
equipResource.setTotalCapacity(equipAbility.getStandardProcessAbility());

@ -25,11 +25,11 @@
*/
package org.springblade.scheduling.scheduling.service.impl;
import org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity;
import org.springblade.scheduling.scheduling.excel.DifferentFurnaceTankExcel;
import org.springblade.scheduling.scheduling.mapper.DifferentFurnaceTankMapper;
import org.springblade.scheduling.scheduling.service.IDifferentFurnaceTankService;
import org.springblade.scheduling.scheduling.vo.DifferentFurnaceTankVO;
import org.springblade.scheduling.scheduling.entity.SameTroughEntity;
import org.springblade.scheduling.scheduling.excel.SameTroughExcel;
import org.springblade.scheduling.scheduling.mapper.SameTroughMapper;
import org.springblade.scheduling.scheduling.service.ISameTroughService;
import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -37,27 +37,25 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
* 非同炉同槽因素表 服务实现类
* 非同槽因素表 服务实现类
*
* @author BladeX
* @since 2025-12-18
* @since 2026-01-07
*/
@Service
public class DifferentFurnaceTankServiceImpl extends BaseServiceImpl<DifferentFurnaceTankMapper, DifferentFurnaceTankEntity> implements IDifferentFurnaceTankService {
public class SameTroughServiceImpl extends BaseServiceImpl<SameTroughMapper, SameTroughEntity> implements ISameTroughService {
@Override
public IPage<DifferentFurnaceTankVO> selectDifferentFurnaceTankPage(IPage<DifferentFurnaceTankVO> page, DifferentFurnaceTankVO DifferentFurnaceTank) {
return page.setRecords(baseMapper.selectDifferentFurnaceTankPage(page, DifferentFurnaceTank));
public IPage<SameTroughVO> selectSameTroughPage(IPage<SameTroughVO> page, SameTroughVO SameTrough) {
return page.setRecords(baseMapper.selectSameTroughPage(page, SameTrough));
}
@Override
public List<DifferentFurnaceTankExcel> export(Wrapper<DifferentFurnaceTankEntity> queryWrapper) {
List<DifferentFurnaceTankExcel> DifferentFurnaceTankList = baseMapper.export(queryWrapper);
//DifferentFurnaceTankList.forEach(DifferentFurnaceTank -> {
// DifferentFurnaceTank.setTypeName(DictCache.getValue(DictEnum.YES_NO, DifferentFurnaceTank.getType()));
//});
return DifferentFurnaceTankList;
public List<SameTroughExcel> export(Wrapper<SameTroughEntity> queryWrapper) {
List<SameTroughExcel> SameTroughList = baseMapper.export(queryWrapper);
return SameTroughList;
}
}

@ -86,6 +86,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IPartService partService;
private final ISintTempCurveService sintTempCurveService;
private final ITeamSetService teamSetService;
private final ISameTroughService sameTroughService;
private final IWorkCenterService workCenterService;
private final ICraftAbilityService craftAbilityService;
@Value("${business.oldMes.url}")
private String oldMesUrl;
@ -144,6 +147,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
processList.forEach(item -> {
processMap.put(item.getId(), item.getName());
});
//初始化作业中心
List<WorkCenterEntity> workCenterList = workCenterService.list();
Map<Long,String> workCenterMap = workCenterList.stream().collect(Collectors.toMap(BaseEntity::getId,WorkCenterEntity::getWcName));
//初始化工艺能力
List<CraftAbilityEntity> craftAbilityList = craftAbilityService.list();
Map<Long,String> craftAbilityMap = craftAbilityList.stream().collect(Collectors.toMap(BaseEntity::getId,CraftAbilityEntity::getCaName));
//初始化烧结温度曲线
List<SintTempCurveEntity> sintList = sintTempCurveService.list();
Map<Long, List<SintTempCurveEntity>> sintMap = sintList.stream().collect(Collectors.groupingBy(SintTempCurveEntity::getProcessId));
@ -176,7 +185,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
new LinkedBlockingQueue<>(),
r -> new Thread(r, "scheduling-thread-" + System.currentTimeMillis()));
map.forEach((workcenter, orders) -> {
threadPool.execute(() -> allocateResources(orders, personAbilityMap, mainProducerMap, planMap, processMap,sintMap));
threadPool.execute(() -> allocateResources(orders, personAbilityMap, mainProducerMap, planMap, processMap,sintMap,workCenterMap,craftAbilityMap));
});
}
@ -298,7 +307,14 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
* @since 2025/12/1 18:08
**/
@Transactional(rollbackFor = Exception.class)
public void allocateResources(List<YieldOrderEntity> list, Map<String, PersonAbilityEntity> personAbilityMap, Map<Long, String> mainProducerMap, Map<String, List<WorkPlanEntity>> planMap, Map<Long, String> processMap, Map<Long, List<SintTempCurveEntity>> sintMap) {
public void allocateResources(List<YieldOrderEntity> list,
Map<String, PersonAbilityEntity> personAbilityMap,
Map<Long, String> mainProducerMap,
Map<String, List<WorkPlanEntity>> planMap,
Map<Long, String> processMap,
Map<Long, List<SintTempCurveEntity>> sintMap,
Map<Long, String> workCenterMap,
Map<Long, String> craftAbilityMap) {
List<WorkOrderEntity> workOrderList = new ArrayList<>();
for (YieldOrderEntity order : list) {
try {
@ -453,7 +469,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//根据作业中心查询所有设备
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(Wrappers.<EquipAbilityEntity>lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId, craft.getCaId()));
if (CollectionUtils.isEmpty(equipAbilityList)) {
order.setErrorInfo("工序:"+processMap.get(craft.getPpsId()) +",未匹配到对应的设备能力");
order.setErrorInfo("作业中心:"+workCenterMap.get(craft.getWorkCenterId())+",工艺:"+craftAbilityMap.get(craft.getCaId())+",工序:"+processMap.get(craft.getPpsId()) +",未匹配到对应的设备能力");
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCode());
yieldOrderService.updateById(order);
isSchecuding = false;
@ -1151,13 +1167,15 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
}
public void sameTrough(List<YieldOrderEntity> list){
public void sameTrough(List<YieldOrderEntity> list,Long workCenterId){
List<SameTroughEntity> sameTroughEntities = sameTroughService.list();
//相同零件号判断键位、生产厂家、检验编号、生产标识
//按照零件号分组
Map<String,List<YieldOrderEntity>> map = list.stream().collect(Collectors.groupingBy(YieldOrderEntity::getPartCode));
for(Map.Entry<String,List<YieldOrderEntity>> entry : map.entrySet()){
List<YieldOrderEntity> list1 = entry.getValue();
if(list1.size() > 1){
List<YieldOrderCraftEntity> craftList = yieldOrderCraftService.list(Wrappers.<YieldOrderCraftEntity>lambdaQuery().in(YieldOrderCraftEntity::getYoId,list1.stream().map(BaseEntity::getId).collect(Collectors.toList())));
}
}

@ -24,22 +24,21 @@
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity;
import org.springblade.scheduling.scheduling.entity.SameTroughEntity;
import java.io.Serial;
/**
* 非同炉同槽因素表 视图实体类
* 非同槽因素表 视图实体类
*
* @author BladeX
* @since 2025-12-18
* @since 2026-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DifferentFurnaceTankVO extends DifferentFurnaceTankEntity {
public class SameTroughVO extends SameTroughEntity {
@Serial
private static final long serialVersionUID = 1L;

@ -27,33 +27,33 @@ package org.springblade.scheduling.scheduling.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.scheduling.scheduling.entity.DifferentFurnaceTankEntity;
import org.springblade.scheduling.scheduling.vo.DifferentFurnaceTankVO;
import org.springblade.scheduling.scheduling.entity.SameTroughEntity;
import org.springblade.scheduling.scheduling.vo.SameTroughVO;
import java.util.Objects;
/**
* 非同炉同槽因素表 包装类,返回视图层所需的字段
* 非同槽因素表 包装类,返回视图层所需的字段
*
* @author BladeX
* @since 2025-12-18
* @since 2026-01-07
*/
public class DifferentFurnaceTankWrapper extends BaseEntityWrapper<DifferentFurnaceTankEntity, DifferentFurnaceTankVO> {
public class SameTroughWrapper extends BaseEntityWrapper<SameTroughEntity, SameTroughVO> {
public static DifferentFurnaceTankWrapper build() {
return new DifferentFurnaceTankWrapper();
public static SameTroughWrapper build() {
return new SameTroughWrapper();
}
@Override
public DifferentFurnaceTankVO entityVO(DifferentFurnaceTankEntity DifferentFurnaceTank) {
DifferentFurnaceTankVO DifferentFurnaceTankVO = Objects.requireNonNull(BeanUtil.copyProperties(DifferentFurnaceTank, DifferentFurnaceTankVO.class));
public SameTroughVO entityVO(SameTroughEntity SameTrough) {
SameTroughVO SameTroughVO = Objects.requireNonNull(BeanUtil.copyProperties(SameTrough, SameTroughVO.class));
//User createUser = UserCache.getUser(DifferentFurnaceTank.getCreateUser());
//User updateUser = UserCache.getUser(DifferentFurnaceTank.getUpdateUser());
//DifferentFurnaceTankVO.setCreateUserName(createUser.getName());
//DifferentFurnaceTankVO.setUpdateUserName(updateUser.getName());
//User createUser = UserCache.getUser(SameTrough.getCreateUser());
//User updateUser = UserCache.getUser(SameTrough.getUpdateUser());
//SameTroughVO.setCreateUserName(createUser.getName());
//SameTroughVO.setUpdateUserName(updateUser.getName());
return DifferentFurnaceTankVO;
return SameTroughVO;
}
Loading…
Cancel
Save