pangyang 2 months ago
commit 33cea7bdc9
  1. 1
      blade-ops/blade-develop/src/main/java/org/springblade/develop/service/impl/ModelPrototypeServiceImpl.java
  2. 46
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveDetailDTO.java
  3. 21
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbFilePreserveSlotDTO.java
  4. 20
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/RetrospectDefendDTO.java
  5. 69
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveDetailEntity.java
  6. 64
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MesRbFilePreserveSlotEntity.java
  7. 46
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesRbFilePreserveDetailVO.java
  8. 21
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/MesRbFilePreserveSlotVO.java
  9. 108
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/MesRbFilePreserveDetailController.java
  10. 110
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/MesRbFilePreserveSlotController.java
  11. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
  12. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
  13. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesRbFilePreserveDetailMapper.java
  14. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MesRbFilePreserveSlotMapper.java
  15. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/RbFilePreserveDetailMapper.xml
  16. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/RbFilePreserveSlotMapper.xml
  17. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  18. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  19. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
  20. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveDetailService.java
  21. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMesRbFilePreserveSlotService.java
  22. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
  23. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  24. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveDetailServiceImpl.java
  25. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MesRbFilePreserveSlotServiceImpl.java
  26. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
  27. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/MesRbFilePreserveDetailWrapper.java
  28. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/MesRbFilePreserveSlotWrapper.java

@ -103,7 +103,6 @@ public class ModelPrototypeServiceImpl extends BaseServiceImpl<ModelPrototypeMap
if (StringUtil.isNotBlank(tableName)) {
builder.addInclude(tableName);
}
builder.addInclude("MES_MAKE_REC");
StrategyConfig strategyConfig = builder.entityBuilder()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel).build();

@ -0,0 +1,46 @@
/**
* 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.desk.produce.pojo.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import java.io.Serial;
/**
* 热表电子档案维护-明细 数据传输对象实体类
*
* @author BladeX
* @since 2026-02-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesRbFilePreserveDetailDTO extends MesRbFilePreserveDetailEntity {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,21 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import java.io.Serial;
/**
* 热表电子档案维护-槽子明细 数据传输对象实体类
*
* @author BladeX
* @since 2026-02-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesRbFilePreserveSlotDTO extends MesRbFilePreserveSlotEntity {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,20 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import java.util.List;
@Data
public class RetrospectDefendDTO {
private Long ecId;
private Long rfpId;
private List<Long> wpIdList;
private Boolean line;
private List<MesRbFilePreserveSlotEntity> preserveSlotList;
}

@ -0,0 +1,69 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/**
* 热表电子档案维护-明细 实体类
*
* @author BladeX
* @since 2026-02-05
*/
@Data
@TableName("MES_RB_FILE_PRESERVE_DETAIL")
@Schema(description = "MesRbFilePreserveDetail对象")
@EqualsAndHashCode(callSuper = true)
public class MesRbFilePreserveDetailEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 热表电子档案维护-槽子明细
*/
@Schema(description = "热表电子档案维护-槽子明细")
private BigDecimal rfpsId;
/**
* 明细名称
*/
@Schema(description = "明细名称")
private String detailName;
/**
* 明细序号
*/
@Schema(description = "明细序号")
private String detailIndex;
/**
* 工艺要求
*/
@Schema(description = "工艺要求")
private String ask;
/**
* 时间
*/
@Schema(description = "时间")
private Date rfpdTime;
/**
* 是否合格
*/
@Schema(description = "是否合格")
private BigDecimal qualified;
/**
* 参数名称
*/
@Schema(description = "参数名称")
private String paramName;
/**
* 参数值
*/
@Schema(description = "参数值")
private String paramValue;
}

@ -0,0 +1,64 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/**
* 热表电子档案维护-槽子明细 实体类
*
* @author BladeX
* @since 2026-02-05
*/
@Data
@TableName("MES_RB_FILE_PRESERVE_SLOT")
@Schema(description = "MesRbFilePreserveSlot对象")
@EqualsAndHashCode(callSuper = true)
public class MesRbFilePreserveSlotEntity extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 热表电子档案维护
*/
@Schema(description = "热表电子档案维护")
private BigDecimal rfpId;
/**
* 槽号名称
*/
@Schema(description = "槽号名称")
private String slotName;
/**
* 槽号序号
*/
@Schema(description = "槽号序号")
private String slotIndex;
/**
* 插入序号
*/
@Schema(description = "插入序号")
private String insertIndex;
/**
* 模板类型
*/
@Schema(description = "模板类型")
private String rfpsType;
/**
* 维护时间
*/
@Schema(description = "维护时间")
private Date keepTime;
/**
* 维护人
*/
@Schema(description = "维护人")
private String keepMan;
}

@ -0,0 +1,46 @@
/**
* 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.desk.produce.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import java.io.Serial;
/**
* 热表电子档案维护-明细 视图实体类
*
* @author BladeX
* @since 2026-02-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesRbFilePreserveDetailVO extends MesRbFilePreserveDetailEntity {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,21 @@
package org.springblade.desk.produce.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import java.io.Serial;
/**
* 热表电子档案维护-槽子明细 视图实体类
*
* @author BladeX
* @since 2026-02-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MesRbFilePreserveSlotVO extends MesRbFilePreserveSlotEntity {
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,108 @@
package org.springblade.desk.produce.controller;
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.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
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.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import org.springblade.desk.produce.service.IMesRbFilePreserveDetailService;
import org.springblade.desk.produce.wrapper.MesRbFilePreserveDetailWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 热表电子档案维护-明细 控制器
*
* @author BladeX
* @since 2026-02-05
*/
@RestController
@AllArgsConstructor
@RequestMapping("/mesRbFilePreserveDetail")
@Tag(name = "热表电子档案维护-明细", description = "热表电子档案维护-明细接口")
public class MesRbFilePreserveDetailController extends BladeController {
private final IMesRbFilePreserveDetailService mesRbFilePreserveDetailService;
/**
* 热表电子档案维护-明细 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入mesRbFilePreserveDetail")
public R<MesRbFilePreserveDetailVO> detail(MesRbFilePreserveDetailEntity mesRbFilePreserveDetail) {
MesRbFilePreserveDetailEntity detail = mesRbFilePreserveDetailService.getOne(Condition.getQueryWrapper(mesRbFilePreserveDetail));
return R.data(MesRbFilePreserveDetailWrapper.build().entityVO(detail));
}
/**
* 热表电子档案维护-明细 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入mesRbFilePreserveDetail")
public R<IPage<MesRbFilePreserveDetailVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> mesRbFilePreserveDetail, Query query) {
IPage<MesRbFilePreserveDetailEntity> pages = mesRbFilePreserveDetailService.page(Condition.getPage(query), Condition.getQueryWrapper(mesRbFilePreserveDetail, MesRbFilePreserveDetailEntity.class));
return R.data(MesRbFilePreserveDetailWrapper.build().pageVO(pages));
}
/**
* 热表电子档案维护-明细 自定义分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入mesRbFilePreserveDetail")
public R<IPage<MesRbFilePreserveDetailVO>> page(MesRbFilePreserveDetailVO mesRbFilePreserveDetail, Query query) {
IPage<MesRbFilePreserveDetailVO> pages = mesRbFilePreserveDetailService.selectMesRbFilePreserveDetailPage(Condition.getPage(query), mesRbFilePreserveDetail);
return R.data(pages);
}
/**
* 热表电子档案维护-明细 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入mesRbFilePreserveDetail")
public R save(@Valid @RequestBody MesRbFilePreserveDetailEntity mesRbFilePreserveDetail) {
return R.status(mesRbFilePreserveDetailService.save(mesRbFilePreserveDetail));
}
/**
* 热表电子档案维护-明细 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入mesRbFilePreserveDetail")
public R update(@Valid @RequestBody MesRbFilePreserveDetailEntity mesRbFilePreserveDetail) {
return R.status(mesRbFilePreserveDetailService.updateById(mesRbFilePreserveDetail));
}
/**
* 热表电子档案维护-明细 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入mesRbFilePreserveDetail")
public R submit(@Valid @RequestBody MesRbFilePreserveDetailEntity mesRbFilePreserveDetail) {
return R.status(mesRbFilePreserveDetailService.saveOrUpdate(mesRbFilePreserveDetail));
}
/**
* 热表电子档案维护-明细 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(mesRbFilePreserveDetailService.deleteLogic(Func.toLongList(ids)));
}
}

@ -0,0 +1,110 @@
package org.springblade.desk.produce.controller;
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.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
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.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO;
import org.springblade.desk.produce.service.IMesRbFilePreserveSlotService;
import org.springblade.desk.produce.wrapper.MesRbFilePreserveSlotWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 热表电子档案维护-槽子明细 控制器
*
* @author BladeX
* @since 2026-02-05
*/
@RestController
@AllArgsConstructor
@RequestMapping("/mesRbFilePreserveSlot")
@Tag(name = "热表电子档案维护-槽子明细", description = "热表电子档案维护-槽子明细接口")
public class MesRbFilePreserveSlotController extends BladeController {
private final IMesRbFilePreserveSlotService mesRbFilePreserveSlotService;
/**
* 热表电子档案维护-槽子明细 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入mesRbFilePreserveSlot")
public R<MesRbFilePreserveSlotVO> detail(MesRbFilePreserveSlotEntity mesRbFilePreserveSlot) {
MesRbFilePreserveSlotEntity detail = mesRbFilePreserveSlotService.getOne(Condition.getQueryWrapper(mesRbFilePreserveSlot));
return R.data(MesRbFilePreserveSlotWrapper.build().entityVO(detail));
}
/**
* 热表电子档案维护-槽子明细 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入mesRbFilePreserveSlot")
public R<IPage<MesRbFilePreserveSlotVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> mesRbFilePreserveSlot, Query query) {
IPage<MesRbFilePreserveSlotEntity> pages = mesRbFilePreserveSlotService.page(Condition.getPage(query), Condition.getQueryWrapper(mesRbFilePreserveSlot, MesRbFilePreserveSlotEntity.class));
return R.data(MesRbFilePreserveSlotWrapper.build().pageVO(pages));
}
/**
* 热表电子档案维护-槽子明细 自定义分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入mesRbFilePreserveSlot")
public R<IPage<MesRbFilePreserveSlotVO>> page(MesRbFilePreserveSlotVO mesRbFilePreserveSlot, Query query) {
IPage<MesRbFilePreserveSlotVO> pages = mesRbFilePreserveSlotService.selectMesRbFilePreserveSlotPage(Condition.getPage(query), mesRbFilePreserveSlot);
return R.data(pages);
}
/**
* 热表电子档案维护-槽子明细 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入mesRbFilePreserveSlot")
public R save(@Valid @RequestBody MesRbFilePreserveSlotEntity mesRbFilePreserveSlot) {
return R.status(mesRbFilePreserveSlotService.save(mesRbFilePreserveSlot));
}
/**
* 热表电子档案维护-槽子明细 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入mesRbFilePreserveSlot")
public R update(@Valid @RequestBody MesRbFilePreserveSlotEntity mesRbFilePreserveSlot) {
return R.status(mesRbFilePreserveSlotService.updateById(mesRbFilePreserveSlot));
}
/**
* 热表电子档案维护-槽子明细 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入mesRbFilePreserveSlot")
public R submit(@Valid @RequestBody MesRbFilePreserveSlotEntity mesRbFilePreserveSlot) {
return R.status(mesRbFilePreserveSlotService.saveOrUpdate(mesRbFilePreserveSlot));
}
/**
* 热表电子档案维护-槽子明细 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(mesRbFilePreserveSlotService.deleteLogic(Func.toLongList(ids)));
}
}

@ -67,4 +67,17 @@ public class PdaLoadController {
return R.data(pdaLoadService.loadProTestWorkPlan(cardNo));
}
@GetMapping(value = "/loadPrMacToolUseByMtnCode/{mtnCode}")
@ApiOperationSupport(order = 7)
@Operation(summary = "加载当前工序检验数据", description = "传入mtnCode")
public R loadPrMacToolUseByMtnCode(@PathVariable String mtnCode) {
return R.data(pdaLoadService.loadPrMacToolUseByMtnCode(mtnCode));
}
@GetMapping(value = "/deletedProduceRun/{mtnCode}")
@ApiOperationSupport(order = 8)
@Operation(summary = "根据同槽号删除信息", description = "传入mtnCode")
public R deletedProduceRun(@PathVariable String mtnCode) {
pdaLoadService.deletedProduceRun(mtnCode);
return R.success();
}
}

@ -8,14 +8,11 @@ import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
import org.springblade.desk.produce.pojo.dto.RetrospectDefendDTO;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IMakeRecService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.*;
/**
@ -44,10 +41,6 @@ public class PrMakeRecController extends BladeController {
makeRecService.saveMakeRec(makeRecDTO);
return R.success() ;
}
/**
* 加工记录
*/
@GetMapping("/queryMakeRec")
@ApiOperationSupport(order = 3)
@Operation(summary = "加工记录", description = "传入mesMakeRec")
@ -60,5 +53,17 @@ public class PrMakeRecController extends BladeController {
public R loadNotReceived(@PathVariable String cardNo) {
return R.data(makeRecService.loadNotReceived(cardNo));
}
@GetMapping(value = "/afterPlaReceive/{cardNo}")
@Operation(summary = "加载镀后接收数据", description = "传入cardNo")
public R afterPlaReceive(@PathVariable String cardNo) {
return R.data(makeRecService.afterPlaReceive(cardNo));
}
@Operation(summary = "手动维护生产追溯")
@PostMapping("/saveRetrospectDefend")
public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) {
makeRecService.saveRetrospectDefend(retrospectDefendDTO);
return R.success() ;
}
}

@ -0,0 +1,30 @@
package org.springblade.desk.produce.mapper;
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.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import java.util.List;
/**
* 热表电子档案维护-明细 Mapper 接口
*
* @author BladeX
* @since 2026-02-05
*/
public interface MesRbFilePreserveDetailMapper extends BaseMapper<MesRbFilePreserveDetailEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param mesRbFilePreserveDetail 查询参数
* @return List<MesRbFilePreserveDetailVO>
*/
List<MesRbFilePreserveDetailVO> selectMesRbFilePreserveDetailPage(IPage page, MesRbFilePreserveDetailVO mesRbFilePreserveDetail);
}

@ -0,0 +1,28 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO;
import java.util.List;
/**
* 热表电子档案维护-槽子明细 Mapper 接口
*
* @author BladeX
* @since 2026-02-05
*/
public interface MesRbFilePreserveSlotMapper extends BaseMapper<MesRbFilePreserveSlotEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param mesRbFilePreserveSlot 查询参数
* @return List<MesRbFilePreserveSlotVO>
*/
List<MesRbFilePreserveSlotVO> selectMesRbFilePreserveSlotPage(IPage page, MesRbFilePreserveSlotVO mesRbFilePreserveSlot);
}

@ -0,0 +1,30 @@
<?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.desk.produce.mapper.MesRbFilePreserveDetailMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesRbFilePreserveDetailResultMap" type="org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity">
<result column="ID" property="id"/>
<result column="RFPS_ID" property="rfpsId"/>
<result column="DETAIL_NAME" property="detailName"/>
<result column="DETAIL_INDEX" property="detailIndex"/>
<result column="ASK" property="ask"/>
<result column="RFPD_TIME" property="rfpdTime"/>
<result column="QUALIFIED" property="qualified"/>
<result column="PARAM_NAME" property="paramName"/>
<result column="PARAM_VALUE" property="paramValue"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
<select id="selectMesRbFilePreserveDetailPage" resultMap="mesRbFilePreserveDetailResultMap">
select * from MES_RB_FILE_PRESERVE_DETAIL where is_deleted = 0
</select>
</mapper>

@ -0,0 +1,29 @@
<?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.desk.produce.mapper.MesRbFilePreserveSlotMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesRbFilePreserveSlotResultMap" type="org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity">
<result column="ID" property="id"/>
<result column="RFP_ID" property="rfpId"/>
<result column="SLOT_NAME" property="slotName"/>
<result column="SLOT_INDEX" property="slotIndex"/>
<result column="INSERT_INDEX" property="insertIndex"/>
<result column="RFPS_TYPE" property="rfpsType"/>
<result column="KEEP_TIME" property="keepTime"/>
<result column="KEEP_MAN" property="keepMan"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
</resultMap>
<select id="selectMesRbFilePreserveSlotPage" resultMap="mesRbFilePreserveSlotResultMap">
select * from MES_RB_FILE_PRESERVE_SLOT where is_deleted = 0
</select>
</mapper>

@ -24,4 +24,5 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
IPage<WorkPlanVO> queryWorkPlan(IPage<WorkPlanVO> page, String cardNo, List<Long> tsIds);
List<String> loadPrMacToolUseByMtnCode(@Param("mtnCode") String mtnCode);
}

@ -53,4 +53,20 @@
select * from MES_WORK_PLAN where is_deleted = 0
</select>
<select id="loadPrMacToolUseByMtnCode" resultType="java.lang.String">
SELECT
c.card_no
FROM
PR_MAC_TOOL_USE a,
rb_pr_work_plan b,
pr_work_order c
<where>
a.wp_id = b.wp_id
AND b.wo_id = c.wo_id
<if test="mtnCode != null">
AND a.mtn_code = #{mtnCode}
</if>
</where>
</select>
</mapper>

@ -3,8 +3,10 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
import org.springblade.desk.produce.pojo.dto.RetrospectDefendDTO;
import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
@ -29,4 +31,11 @@ public interface IMakeRecService extends BaseService<MakeRec> {
IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec);
List<WorkPlanLoadVO> loadNotReceived(String cardNo);
List<WorkPlan> afterPlaReceive(String cardNo);
/**
* 手动维护生产追溯
* @param retrospectDefendDTO
*/
void saveRetrospectDefend(RetrospectDefendDTO retrospectDefendDTO);
}

@ -0,0 +1,24 @@
package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
/**
* 热表电子档案维护-明细 服务类
*
* @author BladeX
* @since 2026-02-05
*/
public interface IMesRbFilePreserveDetailService extends BaseService<MesRbFilePreserveDetailEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param mesRbFilePreserveDetail 查询参数
* @return IPage<MesRbFilePreserveDetailVO>
*/
IPage<MesRbFilePreserveDetailVO> selectMesRbFilePreserveDetailPage(IPage<MesRbFilePreserveDetailVO> page, MesRbFilePreserveDetailVO mesRbFilePreserveDetail);
}

@ -0,0 +1,27 @@
package org.springblade.desk.produce.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.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO;
import java.util.List;
/**
* 热表电子档案维护-槽子明细 服务类
*
* @author BladeX
* @since 2026-02-05
*/
public interface IMesRbFilePreserveSlotService extends BaseService<MesRbFilePreserveSlotEntity> {
/**
* 自定义分页
*
* @param page 分页参数
* @param mesRbFilePreserveSlot 查询参数
* @return IPage<MesRbFilePreserveSlotVO>
*/
IPage<MesRbFilePreserveSlotVO> selectMesRbFilePreserveSlotPage(IPage<MesRbFilePreserveSlotVO> page, MesRbFilePreserveSlotVO mesRbFilePreserveSlot);
}

@ -55,4 +55,8 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
LoadSubOrderVO loadSubOrder(String cardNo);
PdaProRelevantVO loadProTestWorkPlan(String cardNo);
List<String> loadPrMacToolUseByMtnCode(String mtnCode);
void deletedProduceRun(String mtnCode);
}

@ -25,6 +25,7 @@ import org.springblade.desk.produce.mapper.MakeRecMapper;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.MakeRecDTO;
import org.springblade.desk.produce.pojo.dto.RetrospectDefendDTO;
import org.springblade.desk.produce.pojo.dto.WorkPlanDto;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
@ -71,6 +72,9 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
private final IDsPartService partService;
private final IRelTeamSetUserService relTeamSetUserService;
private final IMesEquipmentCardService mesEquipmentCardService;
@Override
public WorkPlanDto loadCurrentWp(String cardNo) {
WorkOrder wo= workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
@ -297,4 +301,69 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
}).collect(Collectors.toList());
return wpLoadList;
}
@Override
public List<WorkPlan> afterPlaReceive(String cardNo) {
WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
List<WorkPlan> wpList= workPlanMapper.selectList(Wrappers.<WorkPlan>lambdaQuery()
.eq(WorkPlan::getWoId, wo.getId()));
return wpList;
}
@Override
public void saveRetrospectDefend(RetrospectDefendDTO retrospectDefendDTO) {
WorkPlan prWorkPlan = null;
MesEquipmentCardEntity equipmentCard = mesEquipmentCardService.getById(retrospectDefendDTO.getEcId());
MacToolUse prMacToolUse;
List<MesQcProduceRunEntity> produceRunList;
String code = macToolUseService.nextCode(2);
for (Long wpId : retrospectDefendDTO.getWpIdList()) {
prWorkPlan = workPlanMapper.selectById(wpId);
prWorkPlan.setPrintType((short) 1);
if (prWorkPlan.getStatus().equals(WorkPlan.STATUS_START)) {
throw new ServiceException("流程卡为 " + prWorkPlan.getCaId()+ " 的订单对应的工序不在加工中暂时不可再维护!");
}
// 查询自动生产追溯是否已经开始
List<String> mtnCodeList=macToolUseService.listObjs(Wrappers.<MacToolUse>lambdaQuery()
.eq(MacToolUse::getWpId, wpId).eq(MacToolUse::getMtuIndex,2).select(MacToolUse::getMtnCode));
produceRunList = mesQcProduceRunService.list(Wrappers.<MesQcProduceRunEntity>lambdaQuery()
.in(MesQcProduceRunEntity::getMtnCode,mtnCodeList).ne(MesQcProduceRunEntity::getWorkSlot, "烘箱"));
// 上线前 没有生产追溯数据
if (retrospectDefendDTO.getLine().equals(Boolean.TRUE)) {
if (produceRunList != null && produceRunList.size() > 0) {
throw new ServiceException("流程卡为 " + prWorkPlan.getCaId() + " 的订单对应的工序已经在已上线,不可再维护!");
}
} else if (retrospectDefendDTO.getLine().equals(Boolean.FALSE)) {
// 下线后 有自动生产追溯数据
if (produceRunList.size() == 0 || produceRunList == null) {
throw new ServiceException("流程卡为 " + prWorkPlan.getId() + " 的订单对应的工序还未下线,不可再维护!");
}
MacToolUse macToolUse = macToolUseService.getOne(Wrappers.<MacToolUse>lambdaQuery().eq(MacToolUse::getWpId, wpId)
.eq(MacToolUse::getMtuIndex,2));
if (macToolUse != null && macToolUse.getRfpId() != null && macToolUse.getFinished()!=1) {
macToolUse.setFinished(1);
String deviceCode = macToolUse.getEquipmentCard() != null ? macToolUse.getMtnCode() : "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:saveRetrospectDefend(),{}", deviceCode, macToolUse.getHangNum(), macToolUse.getMtnCode(), macToolUse.getFinished());
// 2025-07-23 线上迁移修改
macToolUseService.updateById(macToolUse);
}
}
}
// 创建一条绑定记录
prMacToolUse = new MacToolUse();
prMacToolUse.setWpId(prWorkPlan.getId());
prMacToolUse.setEquipmentCard(equipmentCard.getId());
prMacToolUse.setFinished(1);
prMacToolUse.setCreateTime(new Date());
prMacToolUse.setCreateMan(AuthUtil.getUserId());
prMacToolUse.setRfpId(retrospectDefendDTO.getRfpId().toString());
prMacToolUse.setMtnCode(code);
prMacToolUse.setMtuIndex(String.valueOf(retrospectDefendDTO.getLine() ? 1 : 3));
macToolUseService.save(prMacToolUse);
String deviceCode = prMacToolUse.getEquipmentCard() != null ? prMacToolUse.getMtnCode(): "";
log.info("修改设备绑定状态:设备编号:{},批次号:{},槽号:{},方法名:saveRetrospectDefend(),{}", deviceCode, prMacToolUse.getHangNum(), prMacToolUse.getMtnCode(), prMacToolUse.getFinished());
}
}

@ -0,0 +1,26 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.produce.mapper.MesRbFilePreserveDetailMapper;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import org.springblade.desk.produce.service.IMesRbFilePreserveDetailService;
import org.springframework.stereotype.Service;
/**
* 热表电子档案维护-明细 服务实现类
*
* @author BladeX
* @since 2026-02-05
*/
@Service
public class MesRbFilePreserveDetailServiceImpl extends BaseServiceImpl<MesRbFilePreserveDetailMapper, MesRbFilePreserveDetailEntity> implements IMesRbFilePreserveDetailService {
@Override
public IPage<MesRbFilePreserveDetailVO> selectMesRbFilePreserveDetailPage(IPage<MesRbFilePreserveDetailVO> page, MesRbFilePreserveDetailVO mesRbFilePreserveDetail) {
return page.setRecords(baseMapper.selectMesRbFilePreserveDetailPage(page, mesRbFilePreserveDetail));
}
}

@ -0,0 +1,29 @@
package org.springblade.desk.produce.service.impl;
import org.springblade.desk.produce.mapper.MesRbFilePreserveSlotMapper;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO;
import org.springblade.desk.produce.service.IMesRbFilePreserveSlotService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import java.util.List;
/**
* 热表电子档案维护-槽子明细 服务实现类
*
* @author BladeX
* @since 2026-02-05
*/
@Service
public class MesRbFilePreserveSlotServiceImpl extends BaseServiceImpl<MesRbFilePreserveSlotMapper, MesRbFilePreserveSlotEntity> implements IMesRbFilePreserveSlotService {
@Override
public IPage<MesRbFilePreserveSlotVO> selectMesRbFilePreserveSlotPage(IPage<MesRbFilePreserveSlotVO> page, MesRbFilePreserveSlotVO mesRbFilePreserveSlot) {
return page.setRecords(baseMapper.selectMesRbFilePreserveSlotPage(page, mesRbFilePreserveSlot));
}
}

@ -1,6 +1,7 @@
package org.springblade.desk.produce.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -89,6 +90,8 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IDsPartService partService;
private final IMesQcProduceRunService mesQcProduceRunService;
@Override
public WorkPlan loadBindData(BladeUser user, String cardNo) {
WorkPlan prWorkPlan = this.getCurrentWorkPlan(cardNo, user, false, false);
@ -165,6 +168,29 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
return jsonObj;
}
@Override
public List<String> loadPrMacToolUseByMtnCode(String mtnCode) {
return baseMapper.loadPrMacToolUseByMtnCode(mtnCode);
}
@Override
public void deletedProduceRun(String mtnCode) {
// 删除产生的记录数据
List<MesQcProduceRunEntity> qcProduceRunList = mesQcProduceRunService.list(Wrappers.lambdaQuery(MesQcProduceRunEntity.class)
.eq(MesQcProduceRunEntity::getMtnCode, mtnCode));
if (qcProduceRunList != null && qcProduceRunList.size() > 0) {
List< Long> qcProduceRunIds = qcProduceRunList.stream().map(MesQcProduceRunEntity::getId).collect(Collectors.toList());
mesQcProduceRunService.deleteLogic(qcProduceRunIds);
}
// 删除绑定记录
List<MacToolUse> prMacToolUseList = macToolUseService.list(Wrappers.lambdaQuery(MacToolUse.class)
.eq(MacToolUse::getMtnCode, mtnCode));
if (prMacToolUseList != null && prMacToolUseList.size() > 0) {
List<Long> prMacToolUseIds = prMacToolUseList.stream().map(MacToolUse::getId).collect(Collectors.toList());
macToolUseService.deleteLogic(prMacToolUseIds);
}
}
private WorkPlan getCurrentWorkPlan(String cardNo, BladeUser user, boolean checkCurrentProcess, boolean checkAfterPlating) {
//获取并验证车间订单
WorkOrder prWorkOrder = this.checkPrWorkOrder(cardNo);

@ -0,0 +1,35 @@
package org.springblade.desk.produce.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveDetailEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveDetailVO;
import java.util.Objects;
/**
* 热表电子档案维护-明细 包装类,返回视图层所需的字段
*
* @author BladeX
* @since 2026-02-05
*/
public class MesRbFilePreserveDetailWrapper extends BaseEntityWrapper<MesRbFilePreserveDetailEntity, MesRbFilePreserveDetailVO> {
public static MesRbFilePreserveDetailWrapper build() {
return new MesRbFilePreserveDetailWrapper();
}
@Override
public MesRbFilePreserveDetailVO entityVO(MesRbFilePreserveDetailEntity mesRbFilePreserveDetail) {
MesRbFilePreserveDetailVO mesRbFilePreserveDetailVO = Objects.requireNonNull(BeanUtil.copyProperties(mesRbFilePreserveDetail, MesRbFilePreserveDetailVO.class));
//User createUser = UserCache.getUser(mesRbFilePreserveDetail.getCreateUser());
//User updateUser = UserCache.getUser(mesRbFilePreserveDetail.getUpdateUser());
//mesRbFilePreserveDetailVO.setCreateUserName(createUser.getName());
//mesRbFilePreserveDetailVO.setUpdateUserName(updateUser.getName());
return mesRbFilePreserveDetailVO;
}
}

@ -0,0 +1,35 @@
package org.springblade.desk.produce.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.desk.produce.pojo.entity.MesRbFilePreserveSlotEntity;
import org.springblade.desk.produce.pojo.vo.MesRbFilePreserveSlotVO;
import java.util.Objects;
/**
* 热表电子档案维护-槽子明细 包装类,返回视图层所需的字段
*
* @author BladeX
* @since 2026-02-05
*/
public class MesRbFilePreserveSlotWrapper extends BaseEntityWrapper<MesRbFilePreserveSlotEntity, MesRbFilePreserveSlotVO> {
public static MesRbFilePreserveSlotWrapper build() {
return new MesRbFilePreserveSlotWrapper();
}
@Override
public MesRbFilePreserveSlotVO entityVO(MesRbFilePreserveSlotEntity mesRbFilePreserveSlot) {
MesRbFilePreserveSlotVO mesRbFilePreserveSlotVO = Objects.requireNonNull(BeanUtil.copyProperties(mesRbFilePreserveSlot, MesRbFilePreserveSlotVO.class));
//User createUser = UserCache.getUser(mesRbFilePreserveSlot.getCreateUser());
//User updateUser = UserCache.getUser(mesRbFilePreserveSlot.getUpdateUser());
//mesRbFilePreserveSlotVO.setCreateUserName(createUser.getName());
//mesRbFilePreserveSlotVO.setUpdateUserName(updateUser.getName());
return mesRbFilePreserveSlotVO;
}
}
Loading…
Cancel
Save