质量模块。

develop-QA
Tom Li 3 months ago
parent 4100dfed1e
commit 9c0941f05d
  1. 48
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java
  2. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/ReviewSheet.java
  3. 9
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/WorkPlanItemDetail.java
  4. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/request/InspectionTaskSearch.java
  5. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java
  6. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetDutyBatchVO.java
  7. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetDutyPartVO.java
  8. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRelevantBatchVO.java
  9. 18
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/ReviewSheetRelevantPartVO.java
  10. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemDetailVO.java
  11. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/config/RoleConfig.java
  12. 315
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/RelTeamSetUserController.java
  13. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/InspectionTaskConst.java
  14. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/constant/ReviewSheetConst.java
  15. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  16. 110
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java
  17. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/WorkPlanItemDetailExcel.java
  18. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.java
  19. 83
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml
  20. 47
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.java
  21. 174
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml
  22. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemDetailMapper.xml
  23. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IInspectionTaskService.java
  24. 101
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  25. 65
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java
  26. 12
      blade-service/blade-desk/src/main/resources/application-dev.yml

@ -40,9 +40,9 @@ public class InspectionTask extends BaseEntity {
*/ */
public static final String COL_NAME = "NAME"; public static final String COL_NAME = "NAME";
/** /**
* []id * [车间订]id
*/ */
public static final String COL_WORK_ORDER_ID = "WORK_ORDER_ID"; public static final String COL_WO_ID = "WO_ID";
/** /**
* [制品]id * [制品]id
*/ */
@ -68,9 +68,9 @@ public class InspectionTask extends BaseEntity {
*/ */
public static final String COL_BATCH_NUMBER = "BATCH_NUMBER"; public static final String COL_BATCH_NUMBER = "BATCH_NUMBER";
/** /**
* []编码 * [车间订]编码
*/ */
public static final String COL_WORK_ORDER_CODE = "WORK_ORDER_CODE"; public static final String COL_WO_CODE = "WO_CODE";
/** /**
* [工序]编码 * [工序]编码
*/ */
@ -156,9 +156,17 @@ public class InspectionTask extends BaseEntity {
*/ */
public static final String COL_FROM_TYPE = "FROM_TYPE"; public static final String COL_FROM_TYPE = "FROM_TYPE";
/** /**
* 生产订单类型 * [生产订单]类型
*/ */
public static final String COL_YIELD_ORDER_TYPE = "YIELD_ORDER_TYPE"; public static final String COL_YIELD_ORDER_TYPE = "YIELD_ORDER_TYPE";
/**
* [生产订单]id
*/
public static final String COL_YIELD_ORDER_ID = "YIELD_ORDER_ID";
/**
* 接收日期
*/
public static final String COL_RECEIVE_DATE = "RECEIVE_DATE";
/** /**
* [检验任务]编码 * [检验任务]编码
@ -171,15 +179,15 @@ public class InspectionTask extends BaseEntity {
@Schema(description = "[检验任务]类型") @Schema(description = "[检验任务]类型")
private Long inspectionTaskType; private Long inspectionTaskType;
/** /**
* [检验任务] * [检验任务]名称
*/ */
@Schema(description = "[检验任务]") @Schema(description = "[检验任务]名称")
private String name; private String name;
/** /**
* []id * [车间订]id
*/ */
@Schema(description = "[单]id") @Schema(description = "[车间订单]id")
private Long workOrderId; private Long woId;
/** /**
* [制品]id * [制品]id
*/ */
@ -211,10 +219,10 @@ public class InspectionTask extends BaseEntity {
@Schema(description = "生产批次号") @Schema(description = "生产批次号")
private Long batchNumber; private Long batchNumber;
/** /**
* []编码 * [车间订]编码
*/ */
@Schema(description = "[单]编码") @Schema(description = "[车间订单]编码")
private String workOrderCode; private String woCode;
/** /**
* [工序]编码 * [工序]编码
*/ */
@ -321,8 +329,18 @@ public class InspectionTask extends BaseEntity {
@Schema(description = "来源类型") @Schema(description = "来源类型")
private Integer fromType; private Integer fromType;
/** /**
* 生产订单类型 * [生产订单]类型
*/ */
@Schema(description = "生产订单类型") @Schema(description = "[生产订单]类型")
private Integer yieldOrderType; private Integer yieldOrderType;
/**
* [生产订单]id
*/
@Schema(description = "[生产订单]id")
private Integer yieldOrderId;
/**
* 接收日期
*/
@Schema(description = "接收日期")
private LocalDateTime receiveDate;
} }

@ -19,6 +19,9 @@ import java.time.LocalDateTime;
* qc_review_sheet_internal QcReviewSheetInternal 热表内部审理记录表 * qc_review_sheet_internal QcReviewSheetInternal 热表内部审理记录表
* qc_review_sheet_internalredo QcReviewSheetInternalredo 热表内部审理记录表返修 * qc_review_sheet_internalredo QcReviewSheetInternalredo 热表内部审理记录表返修
* qc_review_sheet_internalsj QcReviewSheetInternalsj 热表内部审理记录表烧结 * qc_review_sheet_internalsj QcReviewSheetInternalsj 热表内部审理记录表烧结
* <p>
* <p>
* status 默认 -1
* *
* @author Tom Shuo * @author Tom Shuo
* @since 2026-01-06 * @since 2026-01-06
@ -129,7 +132,7 @@ public class ReviewSheet extends BaseEntity {
*/ */
public static final String COL_BIZ_TYPE = "BIZ_TYPE"; public static final String COL_BIZ_TYPE = "BIZ_TYPE";
/** /**
* 物料号 * 物料号/零件号
*/ */
public static final String COL_PART_CODE = "PART_CODE"; public static final String COL_PART_CODE = "PART_CODE";
/** /**
@ -306,9 +309,9 @@ public class ReviewSheet extends BaseEntity {
@Schema(description = "业务类型-[1]:内部审理返修;[2]:内部审理报废;[3]:ERP审理;") @Schema(description = "业务类型-[1]:内部审理返修;[2]:内部审理报废;[3]:ERP审理;")
private Integer bizType; private Integer bizType;
/** /**
* 物料号 * 物料号/零件号
*/ */
@Schema(description = "物料号") @Schema(description = "物料号/零件号")
private String partCode; private String partCode;
/** /**
* 批次号 * 批次号

@ -85,9 +85,9 @@ public class WorkPlanItemDetail extends BaseEntity {
@Schema(description = "[工序检验项]id") @Schema(description = "[工序检验项]id")
private Long workPlanItemId; private Long workPlanItemId;
/** /**
* 测量类型-[1]镀前;[2]:镀后; * 测量类型;
*/ */
@Schema(description = "测量类型-[1]镀前;[2]:镀后;") @Schema(description = "测量类型")
private String testType; private String testType;
/** /**
* 尺寸 * 尺寸
@ -144,4 +144,9 @@ public class WorkPlanItemDetail extends BaseEntity {
*/ */
@Schema(description = "[量具]id") @Schema(description = "[量具]id")
private Long mtId; private Long mtId;
/**
* 实际[量具]id
*/
@Schema(description = "实际[量具]id")
private Long actMtId;
} }

@ -25,12 +25,16 @@ public class InspectionTaskSearch extends InspectionTask {
private String prodIdent; private String prodIdent;
@Schema(description = "需求部门") @Schema(description = "需求部门")
private String needDeptName; private String needDeptName;
@Schema(description = "需求[部门]id")
private String needDeptId;
@Schema(description = "批次号") @Schema(description = "批次号")
private String batchNo; private String batchNo;
@Schema(description = "分批号") @Schema(description = "分批号")
private String poBatchNo; private String poBatchNo;
@Schema(description = "当前工序") @Schema(description = "当前工序")
private Long currentProcessId; private Long currentProcessId;
@Schema(description = "上个工序")
private Long frontProcessId;
@Schema(description = "下个工序") @Schema(description = "下个工序")
private Long nextProcessId; private Long nextProcessId;
@Schema(description = "生产数量") @Schema(description = "生产数量")

@ -72,7 +72,7 @@ public class InspectionTaskListVO extends InspectionTask {
@Schema(description = "生产数量") @Schema(description = "生产数量")
private Double poQty = 2002d; private Double poQty = 2002d;
@Schema(description = "接收时间") @Schema(description = "接收时间")
private LocalDateTime receiveDate = LocalDateTime.now(); private LocalDateTime receiveDate;
@Schema(description = "订单-产品号") @Schema(description = "订单-产品号")
@ -106,5 +106,5 @@ public class InspectionTaskListVO extends InspectionTask {
private String sameNo = "tank-1001"; private String sameNo = "tank-1001";
// todo: // todo:
@Schema(description = "材料") @Schema(description = "材料")
private String material = "铜"; private String material = "铜";
} }

@ -0,0 +1,18 @@
package org.springblade.desk.quality.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 责任批号
*/
@Data
@EqualsAndHashCode()
public class ReviewSheetDutyBatchVO {
private String dutyBatch;
public ReviewSheetDutyBatchVO(String dutyBatch) {
this.dutyBatch = dutyBatch;
}
}

@ -0,0 +1,18 @@
package org.springblade.desk.quality.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 责任零件
*/
@Data
@EqualsAndHashCode()
public class ReviewSheetDutyPartVO {
private String dutyPart;
public ReviewSheetDutyPartVO(String dutyPart) {
this.dutyPart = dutyPart;
}
}

@ -0,0 +1,18 @@
package org.springblade.desk.quality.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 相关批号
*/
@Data
@EqualsAndHashCode()
public class ReviewSheetRelevantBatchVO {
private String relevantBatch;
public ReviewSheetRelevantBatchVO(String relevantBatch) {
this.relevantBatch = relevantBatch;
}
}

@ -0,0 +1,18 @@
package org.springblade.desk.quality.pojo.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 相关零件
*/
@Data
@EqualsAndHashCode()
public class ReviewSheetRelevantPartVO {
private String relevantPart;
public ReviewSheetRelevantPartVO(String relevantPart) {
this.relevantPart = relevantPart;
}
}

@ -24,4 +24,7 @@ public class WorkPlanItemDetailVO extends WorkPlanItemDetail {
@Schema(description = "[量具]名称") @Schema(description = "[量具]名称")
private String mtName = "标尺1"; private String mtName = "标尺1";
@Schema(description = "实际[量具]名称")
private String actMtName = "游标卡尺QW";
} }

@ -10,12 +10,27 @@ import org.springframework.stereotype.Component;
public class RoleConfig { public class RoleConfig {
/** /**
* 工艺员角色id * 工艺员[角色]id
*/ */
private Long processEngineerId; private Long processEngineerId;
/** /**
* 工艺员角色alias * 工艺员[角色]alias
*/ */
private String processEngineerAlias; private String processEngineerAlias;
/**
* 热表检验员[角色]id
*/
private Long rbCheckerId;
/**
* 热表检验员[角色]alias
*/
private String rbCheckerAlias;
/**
* 烧结检验员[角色]id
*/
private Long sjCheckerId;
/**
* 烧结检验员[角色]alias
*/
private String sjCheckerAlias;
} }

@ -24,6 +24,7 @@ import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.RelTeamSetUserExcel; import org.springblade.desk.basic.excel.RelTeamSetUserExcel;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.vo.RelTeamSetUserVO; import org.springblade.desk.basic.pojo.vo.RelTeamSetUserVO;
@ -45,7 +46,7 @@ import java.util.stream.Collectors;
* @since 2026-01-13 * @since 2026-01-13
*/ */
@RestController @RestController
@RequestMapping("/RelTeamSetUser") @RequestMapping(BAModuleConst.CONTROLLER_PREFIX + "/RelTeamSetUser")
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -54,184 +55,184 @@ import java.util.stream.Collectors;
public class RelTeamSetUserController extends BladeController { public class RelTeamSetUserController extends BladeController {
@Resource @Resource
private IRelTeamSetUserService service; private IRelTeamSetUserService service;
/** /**
* [班组用户关联] 详情 * [班组用户关联] 详情
*/ */
@GetMapping("/detail") @GetMapping("/detail")
@ApiOperationSupport(order = 10) @ApiOperationSupport(order = 10)
@Operation(summary = "详情", description = "传入RelTeamSetUser Obj") @Operation(summary = "详情", description = "传入RelTeamSetUser Obj")
public R<RelTeamSetUserVO> detail(RelTeamSetUser relTeamSetUser) { public R<RelTeamSetUserVO> detail(RelTeamSetUser relTeamSetUser) {
QueryWrapper<RelTeamSetUser> qw = Condition.getQueryWrapper(relTeamSetUser); QueryWrapper<RelTeamSetUser> qw = Condition.getQueryWrapper(relTeamSetUser);
RelTeamSetUser detail = service.getOne(qw); RelTeamSetUser detail = service.getOne(qw);
RelTeamSetUserVO detailVO = RelTeamSetUserWrapper.build().entityVO(detail); RelTeamSetUserVO detailVO = RelTeamSetUserWrapper.build().entityVO(detail);
service.setVOValue(detailVO); service.setVOValue(detailVO);
return R.data(detailVO); return R.data(detailVO);
} }
/** /**
* [班组用户关联] list分页 * [班组用户关联] list分页
*/ */
@GetMapping("/list") @GetMapping("/list")
@ApiOperationSupport(order = 20) @ApiOperationSupport(order = 20)
@Operation(summary = "list分页", description = "传入RelTeamSetUser Obj") @Operation(summary = "list分页", description = "传入RelTeamSetUser Obj")
public R<IPage<RelTeamSetUserVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> relTeamSetUser, public R<IPage<RelTeamSetUserVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> relTeamSetUser,
Query query) { Query query) {
QueryWrapper<RelTeamSetUser> qw = Condition.getQueryWrapper(relTeamSetUser, RelTeamSetUser.class); QueryWrapper<RelTeamSetUser> qw = Condition.getQueryWrapper(relTeamSetUser, RelTeamSetUser.class);
IPage<RelTeamSetUser> pages = service.page(Condition.getPage(query), qw); IPage<RelTeamSetUser> pages = service.page(Condition.getPage(query), qw);
IPage<RelTeamSetUserVO> pagesVO = RelTeamSetUserWrapper.build().pageVO(pages); IPage<RelTeamSetUserVO> pagesVO = RelTeamSetUserWrapper.build().pageVO(pages);
pagesVO.getRecords() pagesVO.getRecords()
.stream() .stream()
.peek(service::setVOValue) .peek(service::setVOValue)
.collect(Collectors.toList()); .collect(Collectors.toList());
return R.data(pagesVO); return R.data(pagesVO);
} }
/** /**
* [班组用户关联] page分页 * [班组用户关联] page分页
*/ */
@GetMapping("/page") @GetMapping("/page")
@ApiOperationSupport(order = 21) @ApiOperationSupport(order = 21)
@Operation(summary = "page分页", description = "传入RelTeamSetUser Obj") @Operation(summary = "page分页", description = "传入RelTeamSetUser Obj")
public R<IPage<RelTeamSetUserVO>> page(RelTeamSetUserVO relTeamSetUser, Query query) { public R<IPage<RelTeamSetUserVO>> page(RelTeamSetUserVO relTeamSetUser, Query query) {
IPage<RelTeamSetUserVO> pagesVO = service.selectRelTeamSetUserPage( IPage<RelTeamSetUserVO> pagesVO = service.selectRelTeamSetUserPage(
Condition.getPage(query), relTeamSetUser Condition.getPage(query), relTeamSetUser
); );
return R.data(pagesVO); return R.data(pagesVO);
} }
/** /**
* [班组用户关联] list下拉选择 * [班组用户关联] list下拉选择
*/ */
@GetMapping("/listForSelect") @GetMapping("/listForSelect")
@ApiOperationSupport(order = 22) @ApiOperationSupport(order = 22)
@Operation(summary = "list下拉选择", description = "") @Operation(summary = "list下拉选择", description = "")
public R<List<RelTeamSetUserVO>> listForSelect() { public R<List<RelTeamSetUserVO>> listForSelect() {
List<RelTeamSetUser> list = service.list(); List<RelTeamSetUser> list = service.list();
List<RelTeamSetUserVO> listVO = RelTeamSetUserWrapper.build().listVO(list); List<RelTeamSetUserVO> listVO = RelTeamSetUserWrapper.build().listVO(list);
return R.data(listVO); return R.data(listVO);
}
/**
* [班组用户关联] 新增一条
*/
@PostMapping("/save")
@ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入RelTeamSetUser Obj")
public R save(@Valid @RequestBody RelTeamSetUser addOne) {
addOne.setId(null);
return R.status(service.save(addOne));
} }
/** /**
* [班组用户关联] 新增一条
*/
@PostMapping("/save")
@ApiOperationSupport(order = 30)
@Operation(summary = "新增一条", description = "传入RelTeamSetUser Obj")
public R save(@Valid @RequestBody RelTeamSetUser addOne) {
addOne.setId(null);
return R.status(service.save(addOne));
}
/**
* [班组用户关联] 新增批量 * [班组用户关联] 新增批量
*/ */
@PostMapping("/saveBat") @PostMapping("/saveBat")
@ApiOperationSupport(order = 31) @ApiOperationSupport(order = 31)
@Operation(summary = "新增批量", description = "传入RelTeamSetUser List") @Operation(summary = "新增批量", description = "传入RelTeamSetUser List")
public R saveBat(@Valid @RequestBody List<RelTeamSetUser> addList) { public R saveBat(@Valid @RequestBody List<RelTeamSetUser> addList) {
addList.forEach(one -> { addList.forEach(one -> {
one.setId(null); one.setId(null);
}); });
return R.status(service.saveBatch(addList)); return R.status(service.saveBatch(addList));
} }
/** /**
* [班组用户关联] 修改一条 * [班组用户关联] 修改一条
*/ */
@PostMapping("/update") @PostMapping("/update")
@ApiOperationSupport(order = 40) @ApiOperationSupport(order = 40)
@Operation(summary = "修改一条", description = "传入RelTeamSetUser Obj") @Operation(summary = "修改一条", description = "传入RelTeamSetUser Obj")
public R update(@Valid @RequestBody RelTeamSetUser updateOne) { public R update(@Valid @RequestBody RelTeamSetUser updateOne) {
return R.status(service.updateById(updateOne)); return R.status(service.updateById(updateOne));
} }
/** /**
* [班组用户关联] 修改批量 * [班组用户关联] 修改批量
*/ */
@PostMapping("/updateBat") @PostMapping("/updateBat")
@ApiOperationSupport(order = 41) @ApiOperationSupport(order = 41)
@Operation(summary = "修改批量", description = "传入RelTeamSetUser List") @Operation(summary = "修改批量", description = "传入RelTeamSetUser List")
public R updateBat(@Valid @RequestBody List<RelTeamSetUser> updateList) { public R updateBat(@Valid @RequestBody List<RelTeamSetUser> updateList) {
return R.status(service.updateBatchById(updateList)); return R.status(service.updateBatchById(updateList));
} }
/** /**
* [班组用户关联] 新增或修改一条 * [班组用户关联] 新增或修改一条
*/ */
@PostMapping("/submit") @PostMapping("/submit")
@ApiOperationSupport(order = 50) @ApiOperationSupport(order = 50)
@Operation(summary = "新增或修改一条", description = "传入RelTeamSetUser Obj") @Operation(summary = "新增或修改一条", description = "传入RelTeamSetUser Obj")
public R submit(@Valid @RequestBody RelTeamSetUser mergeOne) { public R submit(@Valid @RequestBody RelTeamSetUser mergeOne) {
return R.status(service.saveOrUpdate(mergeOne)); return R.status(service.saveOrUpdate(mergeOne));
} }
/** /**
* [班组用户关联] 新增或修改批量 * [班组用户关联] 新增或修改批量
*/ */
@PostMapping("/submitBat") @PostMapping("/submitBat")
@ApiOperationSupport(order = 51) @ApiOperationSupport(order = 51)
@Operation(summary = "新增或修改批量", description = "传入RelTeamSetUser List") @Operation(summary = "新增或修改批量", description = "传入RelTeamSetUser List")
public R submitBat(@Valid @RequestBody List<RelTeamSetUser> mergeList) { public R submitBat(@Valid @RequestBody List<RelTeamSetUser> mergeList) {
return R.status(service.saveOrUpdateBatch(mergeList)); return R.status(service.saveOrUpdateBatch(mergeList));
} }
/** /**
* [班组用户关联] 逻辑删除 * [班组用户关联] 逻辑删除
*/ */
@PostMapping("/remove") @PostMapping("/remove")
@ApiOperationSupport(order = 61) @ApiOperationSupport(order = 61)
@Operation(summary = "逻辑删除", description = "传入ids") @Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(service.deleteLogic(Func.toLongList(ids))); return R.status(service.deleteLogic(Func.toLongList(ids)));
} }
/** /**
* [班组用户关联] 导出Excel * [班组用户关联] 导出Excel
*/ */
@GetMapping("/exportExcel") @GetMapping("/exportExcel")
@ApiOperationSupport(order = 70) @ApiOperationSupport(order = 70)
@Operation(summary = "导出Excel", description = "传入RelTeamSetUser") @Operation(summary = "导出Excel", description = "传入RelTeamSetUser")
public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> relTeamSetUser, public void exportExcel(@Parameter(hidden = true) @RequestParam Map<String, Object> relTeamSetUser,
BladeUser bladeUser, HttpServletResponse response) { BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<RelTeamSetUser> qw = Condition.getQueryWrapper(relTeamSetUser, RelTeamSetUser.class); QueryWrapper<RelTeamSetUser> qw = Condition.getQueryWrapper(relTeamSetUser, RelTeamSetUser.class);
//if (!AuthUtil.isAdministrator()) { //if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(RelTeamSetUser::getTenantId, bladeUser.getTenantId()); // queryWrapper.lambda().eq(RelTeamSetUser::getTenantId, bladeUser.getTenantId());
//} //}
//queryWrapper.lambda().eq(RelTeamSetUserEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); //queryWrapper.lambda().eq(RelTeamSetUserEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<RelTeamSetUserExcel> list = service.exportRelTeamSetUser(qw); List<RelTeamSetUserExcel> list = service.exportRelTeamSetUser(qw);
ExcelUtil.export(response, "[班组用户关联]数据" + DateUtil.time(), ExcelUtil.export(response, "[班组用户关联]数据" + DateUtil.time(),
"[班组用户关联]数据表", list, RelTeamSetUserExcel.class); "[班组用户关联]数据表", list, RelTeamSetUserExcel.class);
} }
/** /**
* [班组用户关联] 下载Excel模板 * [班组用户关联] 下载Excel模板
*/ */
@GetMapping("/downloadExcelTemplate") @GetMapping("/downloadExcelTemplate")
@ApiOperationSupport(order = 71) @ApiOperationSupport(order = 71)
@Operation(summary = "下载Excel模板", description = "") @Operation(summary = "下载Excel模板", description = "")
public ResponseEntity<org.springframework.core.io.Resource> downloadExcelTemplate() { public ResponseEntity<org.springframework.core.io.Resource> downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate( return ExcelExtUtil.downloadXlsTemplate(
"Excel/QA/ImportTemplate-CycleTestItem.xls", "Excel/QA/ImportTemplate-CycleTestItem.xls",
"导入模版-周期试验项目.xls"); "导入模版-周期试验项目.xls");
} }
/** /**
* [班组用户关联] 导入Excel * [班组用户关联] 导入Excel
*/ */
@PostMapping("/importExcel") @PostMapping("/importExcel")
@ApiOperationSupport(order = 72) @ApiOperationSupport(order = 72)
@Operation(summary = "导入Excel", description = "MultipartFile") @Operation(summary = "导入Excel", description = "MultipartFile")
public R importExcel(@RequestParam("file") MultipartFile file) { public R importExcel(@RequestParam("file") MultipartFile file) {
R checkR = ExcelExtUtil.importExcelCheck(file); R checkR = ExcelExtUtil.importExcelCheck(file);
if (checkR != null) { if (checkR != null) {
return checkR; return checkR;
} }
List<RelTeamSetUser> importList = ExcelUtil.read( List<RelTeamSetUser> importList = ExcelUtil.read(
file, 0, 1, RelTeamSetUser.class file, 0, 1, RelTeamSetUser.class
); );
return R.status(service.saveBatch(importList)); return R.status(service.saveBatch(importList));
} }
} }

@ -5,12 +5,12 @@ public interface InspectionTaskConst {
/** /**
* 热表 * 热表
*/ */
Integer TYPE_RB = 1; Integer FROM_TYPE_RB = 1;
/** /**
* 烧结 * 烧结
*/ */
Integer TYPE_SJ = 2; Integer FROM_TYPE_SJ = 2;
/** /**
* 未检验 * 未检验

@ -5,11 +5,6 @@ package org.springblade.desk.quality.constant;
*/ */
public interface ReviewSheetConst { public interface ReviewSheetConst {
/**
* 初始化
*/
Integer S_INIT = 0;
interface BizType { interface BizType {
/** /**
* [1]:内部审理返修 * [1]:内部审理返修
@ -26,10 +21,14 @@ public interface ReviewSheetConst {
} }
interface STATUS { interface STATUS {
/**
* 初始化
*/
Integer S_INIT = -1;
/** /**
* 新建 内部 ERP 都用 * 新建 内部 ERP 都用
*/ */
Integer S_NEW = 1; Integer S_NEW = -1;
/** /**
* 待审理 内部用 ERP不用 * 待审理 内部用 ERP不用
*/ */
@ -56,7 +55,7 @@ public interface ReviewSheetConst {
/** /**
* 初始化 * 初始化
*/ */
Integer REVIEW_STATUS_0 = 0; Integer REVIEW_STATUS_INIT = -1;
/** /**
* 让步接收 * 让步接收
*/ */
@ -87,6 +86,8 @@ public interface ReviewSheetConst {
Integer REVIEW_STATUS_15 = 15; Integer REVIEW_STATUS_15 = 15;
} }
// 一期状态 整合
// interface SELF { // interface SELF {
// /** // /**
// * 编制中 // * 编制中

@ -14,17 +14,24 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.config.RoleConfig;
import org.springblade.desk.basic.constant.BaseCol;
import org.springblade.desk.basic.pojo.vo.UrlVO; import org.springblade.desk.basic.pojo.vo.UrlVO;
import org.springblade.desk.quality.constant.CycleTestTaskConst;
import org.springblade.desk.quality.constant.InspectionTaskConst;
import org.springblade.desk.quality.constant.QAModuleConst; import org.springblade.desk.quality.constant.QAModuleConst;
import org.springblade.desk.quality.excel.InspectionTaskExcel; import org.springblade.desk.quality.excel.InspectionTaskExcel;
import org.springblade.desk.quality.pojo.entity.CycleTestTask;
import org.springblade.desk.quality.pojo.entity.InspectionTask; import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.request.InspectionTaskSearch; import org.springblade.desk.quality.pojo.request.InspectionTaskSearch;
import org.springblade.desk.quality.pojo.request.InspectionTaskStartNew; import org.springblade.desk.quality.pojo.request.InspectionTaskStartNew;
@ -49,6 +56,7 @@ import java.util.Map;
* @author Tom Shuo * @author Tom Shuo
* @since 2025-11-14 * @since 2025-11-14
*/ */
@Slf4j
@RestController @RestController
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -60,6 +68,8 @@ public class InspectionTaskController extends BladeController {
private IInspectionTaskService service; private IInspectionTaskService service;
@Resource @Resource
private InspectionTaskService2 service2; private InspectionTaskService2 service2;
@Resource
private RoleConfig roleConfig;
/** /**
* [检验任务] 详情 * [检验任务] 详情
@ -82,6 +92,18 @@ public class InspectionTaskController extends BladeController {
@Operation(summary = "分页", description = "传入inspectionTask") @Operation(summary = "分页", description = "传入inspectionTask")
public R<IPage<InspectionTaskListVO>> listSearch( public R<IPage<InspectionTaskListVO>> listSearch(
@Parameter(hidden = true) @RequestParam(required = false) InspectionTaskSearch search, Query query) { @Parameter(hidden = true) @RequestParam(required = false) InspectionTaskSearch search, Query query) {
log.info("getUserRole = {}", AuthUtil.getUserRole());
// 热表 烧结 检验员 数据区分。
if (AuthUtil.getUserRole().contains(roleConfig.getRbCheckerAlias())) {
search.setFromType(InspectionTaskConst.FROM_TYPE_RB);
}
if (AuthUtil.getUserRole().contains(roleConfig.getSjCheckerAlias())) {
search.setFromType(InspectionTaskConst.FROM_TYPE_SJ);
}
if (AuthUtil.getUserRole().contains(roleConfig.getRbCheckerAlias()) &&
AuthUtil.getUserRole().contains(roleConfig.getSjCheckerAlias())) {
search.setFromType(null);
}
IPage<InspectionTaskListVO> pagesVO = service.listSearch(Condition.getPage(query), search); IPage<InspectionTaskListVO> pagesVO = service.listSearch(Condition.getPage(query), search);
return R.data(pagesVO); return R.data(pagesVO);
} }

@ -117,7 +117,7 @@ public class ReviewSheetController extends BladeController {
public R<IPage<ReviewSheetInitVO>> listInit(@Parameter() @RequestBody public R<IPage<ReviewSheetInitVO>> listInit(@Parameter() @RequestBody
ReviewSheetInitSearch search, Query query) { ReviewSheetInitSearch search, Query query) {
Map demo = new HashMap(); Map demo = new HashMap();
demo.put(BaseRequest.STATUS, ReviewSheetConst.S_INIT); demo.put(BaseRequest.STATUS, ReviewSheetConst.STATUS.S_INIT);
QueryWrapper<ReviewSheet> qw = Condition.getQueryWrapper(demo, ReviewSheet.class); QueryWrapper<ReviewSheet> qw = Condition.getQueryWrapper(demo, ReviewSheet.class);
IPage<ReviewSheet> pages = service.page(Condition.getPage(query), qw); IPage<ReviewSheet> pages = service.page(Condition.getPage(query), qw);
IPage<ReviewSheetInitVO> pagesVO = ReviewSheetInitWrapper.build().pageVO(pages); IPage<ReviewSheetInitVO> pagesVO = ReviewSheetInitWrapper.build().pageVO(pages);
@ -146,7 +146,11 @@ public class ReviewSheetController extends BladeController {
Map demo = new HashMap(); Map demo = new HashMap();
QueryWrapper<ReviewSheet> qw = Condition.getQueryWrapper(demo, ReviewSheet.class); QueryWrapper<ReviewSheet> qw = Condition.getQueryWrapper(demo, ReviewSheet.class);
Integer bizType = search.getBizType(); Integer bizType = search.getBizType();
qw.eq((bizType != null && bizType != 0), ReviewSheet.COL_BIZ_TYPE, search.getBizType()); if (bizType != null && bizType != 0) {
qw.eq(ReviewSheet.COL_BIZ_TYPE, search.getBizType());
} else {
qw.ne(ReviewSheet.COL_BIZ_TYPE, ReviewSheetConst.BizType.T_ERP);
}
// qw.eq(ReviewSheet.COL_REVIEW_STATUS, ReviewSheetConst.SELF.S_JUDGE); // qw.eq(ReviewSheet.COL_REVIEW_STATUS, ReviewSheetConst.SELF.S_JUDGE);
IPage<ReviewSheet> pages = service.page(Condition.getPage(query), qw); IPage<ReviewSheet> pages = service.page(Condition.getPage(query), qw);
IPage<ReviewSheetRedoScrapVO> pagesVO = ReviewSheetRedoScrapWrapper.build().pageVO(pages); IPage<ReviewSheetRedoScrapVO> pagesVO = ReviewSheetRedoScrapWrapper.build().pageVO(pages);
@ -160,22 +164,22 @@ public class ReviewSheetController extends BladeController {
/** /**
* [生产处置单] list分页 * [生产处置单] list分页
*/ */
@PostMapping("/listSelf") // @PostMapping("/listSelf")
@ApiOperationSupport(order = 20) // @ApiOperationSupport(order = 20)
@Operation(summary = "内部list分页", description = "传入ReviewSheet Obj") // @Operation(summary = "内部list分页", description = "传入ReviewSheet Obj")
public R<IPage<ReviewSheetSelfVO>> listSelf(@Parameter() @RequestBody // public R<IPage<ReviewSheetSelfVO>> listSelf(@Parameter() @RequestBody
ReviewSheetSelfSearch search, Query query) { // ReviewSheetSelfSearch search, Query query) {
Map demo = new HashMap(); // Map demo = new HashMap();
QueryWrapper<ReviewSheet> qw = Condition.getQueryWrapper(demo, ReviewSheet.class); // QueryWrapper<ReviewSheet> qw = Condition.getQueryWrapper(demo, ReviewSheet.class);
qw.in(ReviewSheet.COL_BIZ_TYPE, ReviewSheetConst.BizType.T_SELF_REDO, ReviewSheetConst.BizType.T_SELF_SCRAP); // qw.in(ReviewSheet.COL_BIZ_TYPE, ReviewSheetConst.BizType.T_SELF_REDO, ReviewSheetConst.BizType.T_SELF_SCRAP);
IPage<ReviewSheet> pages = service.page(Condition.getPage(query), qw); // IPage<ReviewSheet> pages = service.page(Condition.getPage(query), qw);
IPage<ReviewSheetSelfVO> pagesVO = ReviewSheetSelfWrapper.build().pageVO(pages); // IPage<ReviewSheetSelfVO> pagesVO = ReviewSheetSelfWrapper.build().pageVO(pages);
pagesVO.getRecords() // pagesVO.getRecords()
.stream() // .stream()
.peek(service::setSelfVOValue) // .peek(service::setSelfVOValue)
.collect(Collectors.toList()); // .collect(Collectors.toList());
return R.data(pagesVO); // return R.data(pagesVO);
} // }
/** /**
* [生产处置单] list分页 * [生产处置单] list分页
@ -232,8 +236,6 @@ public class ReviewSheetController extends BladeController {
@Operation(summary = "copy相同数据到from车间订单id", description = "传入 [车间订单]id") @Operation(summary = "copy相同数据到from车间订单id", description = "传入 [车间订单]id")
public R sameCopyFromHiWO(@Parameter(description = "列表id") @RequestParam Long id, public R sameCopyFromHiWO(@Parameter(description = "列表id") @RequestParam Long id,
@Parameter(description = "车间订单Id") @RequestParam Long woId) { @Parameter(description = "车间订单Id") @RequestParam Long woId) {
// todo:
// 找到的历史审理单
return service.sameCopyFromHiWO(id, woId); return service.sameCopyFromHiWO(id, woId);
} }
@ -431,4 +433,72 @@ public class ReviewSheetController extends BladeController {
public R fill(@Valid @RequestBody ReviewSheetDetailVO vo) { public R fill(@Valid @RequestBody ReviewSheetDetailVO vo) {
return service.fill(vo); return service.fill(vo);
} }
@GetMapping("/getRSDutyPartList")
@ApiOperationSupport(order = 51)
@Operation(summary = "责任零件list", description = "")
public R getRSDutyPartList(@Parameter(description = "id") @RequestParam Long id) {
ReviewSheetDutyPartVO vo1 = new ReviewSheetDutyPartVO("21E8-571-3000-K5");
ReviewSheetDutyPartVO vo2 = new ReviewSheetDutyPartVO("21E8-003-11234-K5");
ReviewSheetDutyPartVO vo3 = new ReviewSheetDutyPartVO("21E8-001-1625-H8-N");
ReviewSheetDutyPartVO vo4 = new ReviewSheetDutyPartVO("21E8-570-3238-K8");
ReviewSheetDutyPartVO vo5 = new ReviewSheetDutyPartVO("21E8-570-1066-K5");
List<ReviewSheetDutyPartVO> list = new ArrayList<>();
list.add(vo1);
list.add(vo2);
list.add(vo3);
list.add(vo4);
list.add(vo5);
return R.data(list);
}
@GetMapping("/getRSDutyBatchList")
@ApiOperationSupport(order = 52)
@Operation(summary = "责任批号list", description = "")
public R getRSDutyBatchList(@Parameter(description = "id") @RequestParam Long id) {
ReviewSheetDutyBatchVO vo1 = new ReviewSheetDutyBatchVO("L1022312073");
ReviewSheetDutyBatchVO vo2 = new ReviewSheetDutyBatchVO("Y0572401499");
ReviewSheetDutyBatchVO vo3 = new ReviewSheetDutyBatchVO("Y7952401087");
ReviewSheetDutyBatchVO vo4 = new ReviewSheetDutyBatchVO("Y5432403515");
ReviewSheetDutyBatchVO vo5 = new ReviewSheetDutyBatchVO("2402-XC-6566-JII-W664");
List<ReviewSheetDutyBatchVO> list = new ArrayList<>();
list.add(vo1);
list.add(vo2);
list.add(vo3);
list.add(vo4);
list.add(vo5);
return R.data(list);
}
@GetMapping("/getRSRelevantPartList")
@ApiOperationSupport(order = 51)
@Operation(summary = "相关零件list", description = "")
public R getRSRelevantPartList(@Parameter(description = "id") @RequestParam Long id) {
ReviewSheetRelevantPartVO vo1 = new ReviewSheetRelevantPartVO("21E8-571-3000-K5");
ReviewSheetRelevantPartVO vo2 = new ReviewSheetRelevantPartVO("21E8-003-11234-K5");
ReviewSheetRelevantPartVO vo3 = new ReviewSheetRelevantPartVO("21E8-001-1625-H8-N");
ReviewSheetRelevantPartVO vo4 = new ReviewSheetRelevantPartVO("21E8-570-3238-K8");
ReviewSheetRelevantPartVO vo5 = new ReviewSheetRelevantPartVO("21E8-570-1066-K5");
List<ReviewSheetRelevantPartVO> list = new ArrayList<>();
list.add(vo1);
list.add(vo2);
list.add(vo3);
list.add(vo4);
list.add(vo5);
return R.data(list);
}
@GetMapping("/getRSRelevantBatchList")
@ApiOperationSupport(order = 51)
@Operation(summary = "相关批号list", description = "")
public R getRSRelevantBatchList(@Parameter(description = "id") @RequestParam Long id) {
ReviewSheetRelevantBatchVO vo1 = new ReviewSheetRelevantBatchVO("24022001");
ReviewSheetRelevantBatchVO vo2 = new ReviewSheetRelevantBatchVO("23122001");
ReviewSheetRelevantBatchVO vo3 = new ReviewSheetRelevantBatchVO("2401200101");
List<ReviewSheetRelevantBatchVO> list = new ArrayList<>();
list.add(vo1);
list.add(vo2);
list.add(vo3);
return R.data(list);
}
} }

@ -35,7 +35,7 @@ public class WorkPlanItemDetailExcel implements Serializable {
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("[工序检验项]id") @ExcelProperty("[工序检验项]id")
private BigDecimal workPlanItemId; private Long workPlanItemId;
/** /**
* 测量类型-[1]镀前;[2]:镀后; * 测量类型-[1]镀前;[2]:镀后;
*/ */
@ -107,5 +107,5 @@ public class WorkPlanItemDetailExcel implements Serializable {
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("[量具]id") @ExcelProperty("[量具]id")
private BigDecimal mtId; private Long mtId;
} }

@ -41,5 +41,4 @@ public interface InspectionTaskMapper extends BaseMapper<InspectionTask> {
List<InspectionTaskExcel> exportInspectionTask(@Param("ew") Wrapper<InspectionTask> queryWrapper); List<InspectionTaskExcel> exportInspectionTask(@Param("ew") Wrapper<InspectionTask> queryWrapper);
List<InspectionTaskListVO> listSearch(IPage<InspectionTaskListVO> page, @Param("q") InspectionTaskSearch search); List<InspectionTaskListVO> listSearch(IPage<InspectionTaskListVO> page, @Param("q") InspectionTaskSearch search);
} }

@ -10,14 +10,14 @@
<result column="INSPECTION_TASK_TYPE" property="inspectionTaskType"/> <result column="INSPECTION_TASK_TYPE" property="inspectionTaskType"/>
<result column="STATUS" property="status"/> <result column="STATUS" property="status"/>
<result column="NAME" property="name"/> <result column="NAME" property="name"/>
<result column="WORK_ORDER_ID" property="workOrderId"/> <result column="WO_ID" property="woId"/>
<result column="PRODUCT_ID" property="productId"/> <result column="PRODUCT_ID" property="productId"/>
<result column="PROCESS_ID" property="processId"/> <result column="PROCESS_ID" property="processId"/>
<result column="CHECK_USER_ID" property="checkUserId"/> <result column="CHECK_USER_ID" property="checkUserId"/>
<result column="PRODUCT_CODE" property="productCode"/> <result column="PRODUCT_CODE" property="productCode"/>
<result column="PRODUCT_SN" property="productSn"/> <result column="PRODUCT_SN" property="productSn"/>
<result column="BATCH_NUMBER" property="batchNumber"/> <result column="BATCH_NUMBER" property="batchNumber"/>
<result column="WORK_ORDER_CODE" property="workOrderCode"/> <result column="WO_CODE" property="woCode"/>
<result column="PROCESS_CODE" property="processCode"/> <result column="PROCESS_CODE" property="processCode"/>
<result column="CREATE_USER" property="createUser"/> <result column="CREATE_USER" property="createUser"/>
<result column="CREATE_TIME" property="createTime"/> <result column="CREATE_TIME" property="createTime"/>
@ -46,6 +46,8 @@
<result column="WP_ID" property="wpId"/> <result column="WP_ID" property="wpId"/>
<result column="FROM_TYPE" property="fromType"/> <result column="FROM_TYPE" property="fromType"/>
<result column="YIELD_ORDER_TYPE" property="yieldOrderType"/> <result column="YIELD_ORDER_TYPE" property="yieldOrderType"/>
<result column="YIELD_ORDER_ID" property="yieldOrderId"/>
<result column="RECEIVE_DATE" property="receiveDate"/>
</resultMap> </resultMap>
<select id="selectInspectionTaskPage" resultMap="inspectionTaskResultMap"> <select id="selectInspectionTaskPage" resultMap="inspectionTaskResultMap">
@ -62,34 +64,83 @@
<select id="listSearch" <select id="listSearch"
resultType="org.springblade.desk.quality.pojo.vo.InspectionTaskListVO"> resultType="org.springblade.desk.quality.pojo.vo.InspectionTaskListVO">
SELECT task.* SELECT t.*
FROM QA_INSPECTION_TASK task FROM QA_INSPECTION_TASK t
-- 车间作业计划 wp -- 车间作业计划 wp
-- LEFT JOIN RB_PR_WORK_PLAN wp ON task.WP_ID = wp.ID LEFT JOIN MES_WORK_PLAN wp ON t.WP_ID = wp.ID
-- 车间订单 wo -- 车间订单 wo
-- LEFT JOIN PR_WORK_ORDER wo ON wp.WO_ID = wo.ID LEFT JOIN MES_WORK_ORDER wo ON wp.WO_ID = wo.ID
-- 生产订单 yo
LEFT JOIN MES_YIELD_ORDER yo ON wo.YO_ID = yo.ID
-- 工序
LEFT JOIN DS_PROCESS ps ON wp.ORDERS = ps.PROCESS_CODE
-- 外协厂商 oem
LEFT JOIN BA_OEM oem ON wp.OC_ID = oem.ID
-- 班组 ts -- 班组 ts
-- LEFT JOIN BA_TEAM_SET ts ON wp.MAKE_TEAM = ts.ID -- LEFT JOIN BA_TEAM_SET ts ON wp.MAKE_TEAM = ts.ID
-- 外协厂商 oem -- 部门
-- LEFT JOIN BA_OEM oem ON wp.OC_ID = oem.ID LEFT JOIN BLADE_DEPT bl_dept on t.CREATE_DEPT = bl_dept.ID
-- 工序
-- LEFT JOIN BS_PROCEDURE_SET ON wp.
-- LEFT JOIN BLADE_DEPT bl_dept on task.CREATE_DEPT = bl_dept.ID
WHERE ( WHERE (
task.IS_DELETED = 0 t.IS_DELETED = 0
-- AND wp.IS_DELETED = 0 -- AND wp.IS_DELETED = 0
-- AND wo.IS_DELETED = 0 -- AND wo.IS_DELETED = 0
-- AND ps.IS_DELETED = 0
-- AND oem.IS_DELETED = 0
-- AND bl_dept.IS_DELETED = 0 -- AND bl_dept.IS_DELETED = 0
) )
<if test="q.wpId != null"> <if test="q.wpId != null">
AND task.WP_ID = #{q.wpId} AND t.WP_ID = #{q.wpId}
</if> </if>
<if test="q.status != null"> <if test="q.status != null">
AND task.STATUS = #{q.status} AND t.STATUS = #{q.status}
</if> </if>
<if test="q.fromType != null"> <if test="q.fromType != null">
AND task.FROM_TYPE = #{q.fromType} AND t.FROM_TYPE = #{q.fromType}
</if>
<if test="q.receiveDateStart != null">
AND rs.RECEIVE_DATE &gt;= #{q.receiveDateStart}
</if>
<if test="q.receiveDateStart != null">
AND rs.RECEIVE_DATE &lt;= #{q.receiveDateEnd}
</if>
-- wp
<if test="q.teamSetId != null">
AND wo.MAKE_TEAM = #{q.teamSetId}
</if>
<if test="q.oemId != null">
AND wp.OC_ID = #{q.oemId}
</if>
<if test="q.frontProcessId != null">
AND wp.FRONT_WP_ID = #{q.frontProcessId}
</if>
<if test="q.nextProcessId != null">
AND wp.NEXT_WP_ID = #{q.nextProcessId}
</if>
-- wo
<if test="q.cardNo != null and q.cardNo != ''">
AND wo.CARD_NO = #{q.cardNo}
</if>
<if test="q.woCode != null">
AND wo.WO_ID = #{q.woCode}
</if>
<if test="q.partCode != null and q.partCode != ''">
AND wo.PART_CODE = #{q.partCode}
</if>
<if test="q.batchNo != null and q.batchNo != ''">
AND wo.BATCH_NO = #{q.batchNo}
</if>
<if test="q.poQty != null">
AND wo.MAKE_QTY = #{q.poQty}
</if>
-- yo
<if test="q.prodIdent != null and q.prodIdent != ''">
AND yo.PRODUCT_IDENT = #{q.prodIdent}
</if>
-- ps
<if test="q.currentProcessId != null">
AND ps.ID = #{q.currentProcessId}
</if> </if>
ORDER BY task.ID DESC -- oem
ORDER BY t.ID DESC
</select> </select>
</mapper> </mapper>

@ -9,7 +9,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springblade.desk.quality.excel.ReviewSheetExcel; import org.springblade.desk.quality.excel.ReviewSheetExcel;
import org.springblade.desk.quality.pojo.entity.ReviewSheet; import org.springblade.desk.quality.pojo.entity.ReviewSheet;
import org.springblade.desk.quality.pojo.vo.ReviewSheetDetailVO; import org.springblade.desk.quality.pojo.request.InspectionTaskSearch;
import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch;
import org.springblade.desk.quality.pojo.request.ReviewSheetInitSearch;
import org.springblade.desk.quality.pojo.request.ReviewSheetRedoScrapSearch;
import org.springblade.desk.quality.pojo.vo.*;
import java.util.List; import java.util.List;
@ -21,20 +25,29 @@ import java.util.List;
*/ */
public interface ReviewSheetMapper extends BaseMapper<ReviewSheet> { public interface ReviewSheetMapper extends BaseMapper<ReviewSheet> {
/** /**
* 自定义分页 * 自定义分页
* *
* @param page 分页参数 * @param page 分页参数
* @param reviewSheet 查询参数 * @param reviewSheet 查询参数
* @return List<ReviewSheetVO> * @return List<ReviewSheetVO>
*/ */
List<ReviewSheetDetailVO> selectReviewSheetPage(IPage page, ReviewSheetDetailVO reviewSheet); List<ReviewSheetDetailVO> selectReviewSheetPage(IPage page, ReviewSheetDetailVO reviewSheet);
/** /**
* 获取导出数据 * 获取导出数据
* *
* @param queryWrapper 查询条件 * @param queryWrapper 查询条件
* @return List<ReviewSheetExcel> * @return List<ReviewSheetExcel>
*/ */
List<ReviewSheetExcel> exportReviewSheet(@Param("ew") Wrapper<ReviewSheet> queryWrapper); List<ReviewSheetExcel> exportReviewSheet(@Param("ew") Wrapper<ReviewSheet> queryWrapper);
List<ReviewSheetInitVO> listInit(IPage<ReviewSheetInitVO> page,
@Param("q") ReviewSheetInitSearch search);
List<ReviewSheetRedoScrapVO> listReviewRedoScrap(IPage<ReviewSheetRedoScrapVO> page,
@Param("q") ReviewSheetRedoScrapSearch search);
List<ReviewSheetErpVO> listErp(IPage<ReviewSheetRedoScrapVO> page,
@Param("q") ReviewSheetErpSearch search);
} }

@ -62,4 +62,178 @@
SELECT * SELECT *
FROM QA_REVIEW_SHEET ${ew.customSqlSegment} FROM QA_REVIEW_SHEET ${ew.customSqlSegment}
</select> </select>
<select id="listInit"
resultType="org.springblade.desk.quality.pojo.vo.ReviewSheetInitVO">
SELECT rs.*
FROM QA_REVIEW_SHEET rs
-- 车间作业计划 wp
LEFT JOIN MES_WORK_PLAN wp ON rs.WP_ID = wp.ID
-- 车间订单 wo
LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID
-- 外协厂商 oem
LEFT JOIN BA_OEM oem ON wp.OC_ID = oem.ID
WHERE (
rs.IS_DELETED = 0
AND wp.IS_DELETED = 0
AND wo.IS_DELETED = 0
AND oem.IS_DELETED = 0
)
<if test="q.status != null">
AND rs.STATUS = #{q.status}
</if>
<if test="q.bizType != null">
AND rs.BIZ_TYPE = #{q.bizType}
</if>
<if test="q.reviewOrderMode != null">
AND rs.REVIEW_ORDER_MODE = #{q.reviewOrderMode}
</if>
<if test="q.upCode != null">
AND rs.UP_CODE = #{q.upCode}
</if>
<if test="q.rsCode != null">
AND rs.RS_CODE = #{q.rsCode}
</if>
<if test="q.prodCode != null and q.prodCode != ''">
AND wo.XXXX = #{q.prodCode}
</if>
<if test="q.prodName != null and q.prodName != ''">
AND wo.XXXX = #{q.prodName}
</if>
<if test="q.prodTypeName != null and q.prodTypeName != ''">
AND wo.XXXX = #{q.prodTypeName}
</if>
<if test="q.prodIdent != null and q.prodIdent != ''">
AND wo.XXXX = #{q.prodIdent}
</if>
<if test="q.batchNo != null">
AND rs.BATCH_NO = #{q.batchNo}
</if>
<if test="q.cardNo != null">
AND wo.CARD_NO = #{q.cardNo}
</if>
<if test="q.createTimeStart != null">
AND rs.CREATE_TIME &gt;= #{q.createTimeStart}
</if>
<if test="q.createTimeEnd != null">
AND rs.CREATE_TIME &lt;= #{q.createTimeEnd}
</if>
<if test="q.reviewTimeStart != null">
AND rs.REVIEW_DATE &gt;= #{q.reviewTimeStart}
</if>
<if test="q.reviewTimeEnd != null">
AND rs.REVIEW_DATE &lt;= #{q.reviewTimeEnd}
</if>
<if test="q.rsCode != null and q.rsCode != ''">
AND rs.RS_CODE = #{q.rsCode}
</if>
<if test="q.woCode != null and q.woCode != ''">
AND rs.WO_CODE = #{q.woCode}
</if>
<if test="q.partCode != null and q.partCode != ''">
AND rs.PART_CODE = #{q.partCode}
</if>
<if test="q.oemName!= null and q.oemName != ''">
AND oem.ABBREVIATION = '%' || #{q.oemName} || '%'
</if>
ORDER BY task.ID DESC
</select>
<select id="listReviewRedoScrap"
resultType="org.springblade.desk.quality.pojo.vo.ReviewSheetRedoScrapVO">
SELECT rs.*
FROM QA_REVIEW_SHEET rs
-- 车间作业计划 wp
LEFT JOIN MES_WORK_PLAN wp ON rs.WP_ID = wp.ID
-- 车间订单 wo
LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID
-- 外协厂商 oem
LEFT JOIN BA_OEM oem ON wp.OC_ID = oem.ID
WHERE (
rs.IS_DELETED = 0
AND wp.IS_DELETED = 0
AND wo.IS_DELETED = 0
AND oem.IS_DELETED = 0
)
<if test="q.status != null">
AND rs.STATUS = #{q.status}
</if>
<if test="q.bizType != null">
AND rs.BIZ_TYPE IN (1, 2)
</if>
<if test="q.createTimeStart != null">
AND rs.CREATE_TIME &gt;= #{q.createTimeStart}
</if>
<if test="q.createTimeEnd != null">
AND rs.CREATE_TIME &lt;= #{q.createTimeEnd}
</if>
<if test="q.reviewTimeStart != null">
AND rs.REVIEW_DATE &gt;= #{q.reviewTimeStart}
</if>
<if test="q.reviewTimeEnd != null">
AND rs.REVIEW_DATE &lt;= #{q.reviewTimeEnd}
</if>
<if test="q.rsCode != null and q.rsCode != ''">
AND rs.RS_CODE = #{q.rsCode}
</if>
<if test="q.woCode != null and q.woCode != ''">
AND rs.WO_CODE = #{q.woCode}
</if>
<if test="q.partCode != null and q.partCode != ''">
AND rs.PART_CODE = #{q.partCode}
</if>
<if test="q.oemName!= null and q.oemName != ''">
AND oem.ABBREVIATION = '%' || #{q.oemName} || '%'
</if>
ORDER BY task.ID DESC
</select>
<select id="listErp"
resultType="org.springblade.desk.quality.pojo.vo.ReviewSheetErpVO">
SELECT rs.*
FROM QA_REVIEW_SHEET rs
-- 车间作业计划 wp
LEFT JOIN MES_WORK_PLAN wp ON rs.WP_ID = wp.ID
-- 车间订单 wo
LEFT JOIN MES_WORK_ORDER wo ON rs.WO_ID = wo.ID
-- 外协厂商 oem
LEFT JOIN BA_OEM oem ON wp.OC_ID = oem.ID
WHERE (
rs.IS_DELETED = 0
AND wp.IS_DELETED = 0
AND wo.IS_DELETED = 0
AND oem.IS_DELETED = 0
)
<if test="q.status != null">
AND rs.STATUS = #{q.status}
</if>
<if test="q.bizType != null">
AND rs.BIZ_TYPE = 3
</if>
<if test="q.createTimeStart != null">
AND rs.CREATE_TIME &gt;= #{q.createTimeStart}
</if>
<if test="q.createTimeEnd != null">
AND rs.CREATE_TIME &lt;= #{q.createTimeEnd}
</if>
<if test="q.reviewTimeStart != null">
AND rs.REVIEW_DATE &gt;= #{q.reviewTimeStart}
</if>
<if test="q.reviewTimeEnd != null">
AND rs.REVIEW_DATE &lt;= #{q.reviewTimeEnd}
</if>
<if test="q.rsCode != null and q.rsCode != ''">
AND rs.RS_CODE = #{q.rsCode}
</if>
<if test="q.woCode != null and q.woCode != ''">
AND rs.WO_CODE = #{q.woCode}
</if>
<if test="q.partCode != null and q.partCode != ''">
AND rs.PART_CODE = #{q.partCode}
</if>
<if test="q.batchNo != null and q.batchNo != ''">
AND rs.PART_CODE = #{q.batchNo}
</if>
ORDER BY task.ID DESC
</select>
</mapper> </mapper>

@ -19,6 +19,7 @@
<result column="GAUGE_VALUE7" property="gaugeValue7"/> <result column="GAUGE_VALUE7" property="gaugeValue7"/>
<result column="GAUGE_VALUE8" property="gaugeValue8"/> <result column="GAUGE_VALUE8" property="gaugeValue8"/>
<result column="MT_ID" property="mtId"/> <result column="MT_ID" property="mtId"/>
<result column="ACT_MT_ID" property="actMtId"/>
</resultMap> </resultMap>
<select id="selectWorkPlanItemDetailPage" resultMap="workPlanItemDetailResultMap"> <select id="selectWorkPlanItemDetailPage" resultMap="workPlanItemDetailResultMap">

@ -105,7 +105,7 @@ public interface IInspectionTaskService extends BaseService<InspectionTask> {
* @param start * @param start
* @return * @return
*/ */
public R<InspectionTask> startNew(InspectionTaskStartNew start); public R startNew(InspectionTaskStartNew start);
public R fill(InspectionTaskDetailVO detailVO); public R fill(InspectionTaskDetailVO detailVO);
@ -115,5 +115,5 @@ public interface IInspectionTaskService extends BaseService<InspectionTask> {
R sameResultCopy(Long sourceId, Long targetId); R sameResultCopy(Long sourceId, Long targetId);
Integer refreshStatusAndQty(Long id); InspectionTask refreshStatusAndQty(Long id);
} }

@ -94,7 +94,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
vo.setOrderInfo(taskListVO); vo.setOrderInfo(taskListVO);
// todo: // todo:
RemindMsg msg1 = new RemindMsg(); RemindMsg msg1 = new RemindMsg();
msg1.setRemindContent("提醒信息-AAAA"); msg1.setRemindContent("提醒信息-" + System.currentTimeMillis());
List<RemindMsg> msgList = new ArrayList<>(); List<RemindMsg> msgList = new ArrayList<>();
msgList.add(msg1); msgList.add(msg1);
vo.setRemindMsgList(msgList); vo.setRemindMsgList(msgList);
@ -153,16 +153,32 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
* @return * @return
*/ */
@Transactional @Transactional
public R<InspectionTask> startNew(InspectionTaskStartNew start) { public R startNew(InspectionTaskStartNew start) {
// todo:check工单有效性 // todo:check工单有效性
// todo:check工序有效性 // todo:check工序有效性
// todo:check制品有效性 // todo:check制品有效性
addTask(InspectionTaskConst.FROM_TYPE_RB);
addTask(InspectionTaskConst.FROM_TYPE_SJ);
// 最终返回R
return R.success("成功生成检测任务!");
}
public void addTask(Integer fromType) {
// 新建 InspectionTask // 新建 InspectionTask
InspectionTask task = new InspectionTask(); InspectionTask task = new InspectionTask();
task.setId(null); task.setId(null);
task.setStatus(InspectionTaskConst.CHECK_RESULT_TODO); task.setStatus(InspectionTaskConst.CHECK_RESULT_TODO);
// todo: fake data
task.setWoId(2002227460172464129L);
// todo: fake data
task.setWoCode("WO-N251233302-R001");
// todo: fake data
task.setWpId(2002227460206018562L);
// 接收时间为空
task.setReceiveDate(null);
task.setFromType(fromType);
// 新插入 Task // 新插入 Task
save(task); save(task);
// 查询工序用到的,所有启用的检验项目。 // 查询工序用到的,所有启用的检验项目。
@ -176,7 +192,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
); );
} }
if (itemList == null || itemList.isEmpty()) { if (itemList == null || itemList.isEmpty()) {
return R.fail("没有关联的检测项目!"); // return R.fail("没有关联的检测项目!");
} }
// 创建关联的 WorkPlanItem 集合。 // 创建关联的 WorkPlanItem 集合。
for (InspectionItem iItem : itemList) { for (InspectionItem iItem : itemList) {
@ -207,10 +223,6 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
} }
} }
} }
// 最终返回R
R<InspectionTask> rFinal = R.success("成功生成检测任务!");
rFinal.setData(task);
return rFinal;
} }
@Override @Override
@ -218,23 +230,26 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 更新 Task // 更新 Task
updateById(detailVO); updateById(detailVO);
for (WorkPlanItemVO wpItemVO : detailVO.getWpItemList()) { for (WorkPlanItemVO wpItemVO : detailVO.getWpItemList()) {
WorkPlanItem wpItem = new WorkPlanItem(); WorkPlanItem wpItemDB = wpItemService.getById(wpItemVO.getId());
BeanUtil.copyProperties(wpItemVO, wpItem); if (InspectionTaskConst.CHECK_RESULT_TODO.equals(wpItemDB.getCheckResult()) &&
if (!InspectionTaskConst.CHECK_RESULT_TODO.equals(wpItem.getCheckResult())) { !InspectionTaskConst.CHECK_RESULT_TODO.equals(wpItemVO.getCheckResult())) { // 数据库中是待检测的,新传入数据不是待检测的。
// copy from VO
BeanUtil.copyProperties(wpItemVO, wpItemDB);
BladeUser bu = AuthUtil.getUser(); BladeUser bu = AuthUtil.getUser();
if (bu != null) { if (bu != null) {
log.info("bu = {}", bu); // 赋值 质检员
wpItem.setCheckUserId(bu.getUserId()); wpItemDB.setCheckUserId(bu.getUserId());
} }
wpItem.setCheckDate(LocalDateTime.now()); // 赋值 质检时间
wpItemDB.setCheckDate(LocalDateTime.now());
} }
// 更新 WorkPlanItem // 更新 WorkPlanItem
wpItemService.updateById(wpItem); wpItemService.updateById(wpItemDB);
// //
for (WorkPlanItemDetailVO wpItemDetailVO : wpItemVO.getWpItemDetailList()) { for (WorkPlanItemDetailVO wpItemDetailVO : wpItemVO.getWpItemDetailList()) {
WorkPlanItemDetail wpItemDetail = new WorkPlanItemDetail(); WorkPlanItemDetail wpItemDetail = new WorkPlanItemDetail();
BeanUtil.copyProperties(wpItemDetailVO, wpItemDetail); BeanUtil.copyProperties(wpItemDetailVO, wpItemDetail);
wpItemDetail.setWorkPlanItemId(wpItem.getId()); wpItemDetail.setWorkPlanItemId(wpItemDB.getId());
if (IdUtil.isValid(wpItemDetail.getId())) { if (IdUtil.isValid(wpItemDetail.getId())) {
// 更新 WorkPlanItemDetail // 更新 WorkPlanItemDetail
wpItemDetailService.updateById(wpItemDetail); wpItemDetailService.updateById(wpItemDetail);
@ -252,9 +267,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
@Override @Override
public IPage<InspectionTaskListVO> listSearch(IPage<InspectionTaskListVO> page, InspectionTaskSearch search) { public IPage<InspectionTaskListVO> listSearch(IPage<InspectionTaskListVO> page, InspectionTaskSearch search) {
List<InspectionTaskListVO> listVO = baseMapper.listSearch(page, search); List<InspectionTaskListVO> listVO = baseMapper.listSearch(page, search);
//
for (InspectionTaskListVO oneVO : listVO) { for (InspectionTaskListVO oneVO : listVO) {
refreshStatusAndQty(oneVO.getId());
setListVOValue(oneVO); setListVOValue(oneVO);
} }
return page.setRecords(listVO); return page.setRecords(listVO);
@ -265,10 +278,21 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// LambdaQueryWrapper<InspectionTask> qw = Wrappers.lambdaQuery(); // LambdaQueryWrapper<InspectionTask> qw = Wrappers.lambdaQuery();
// todo: 需要生产支持 // todo: 需要生产支持
// qw.eq(InspectionTask::getId, 2010909559614988290L); // qw.eq(InspectionTask::getId, 2010909559614988290L);
List<InspectionTask> list = baseMapper.selectList(null).subList(0, 2);
List<InspectionTaskListVO> listVO = InspectionTaskListWrapper.build().listVO(list); LambdaQueryWrapper<InspectionTask> qw = Wrappers.lambdaQuery(InspectionTask.class)
for (InspectionTaskListVO one : listVO) { .orderByAsc(InspectionTask::getId);
setListVOValue(one); List<InspectionTask> listAll = baseMapper.selectList(qw);
List<InspectionTask> list = null;
// todo:fake
if (listAll.size() >= 2) {
list = listAll.subList(0, 2);
}
List<InspectionTaskListVO> listVO = null;
if (list != null && !list.isEmpty()) {
listVO = InspectionTaskListWrapper.build().listVO(list);
for (InspectionTaskListVO one : listVO) {
setListVOValue(one);
}
} }
return R.data(listVO); return R.data(listVO);
} }
@ -321,8 +345,14 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return R.data(count); return R.data(count);
} }
/**
* 刷新状态和数量
*
* @param id
* @return
*/
@Override @Override
public Integer refreshStatusAndQty(Long id) { public InspectionTask refreshStatusAndQty(Long id) {
InspectionTask task = getById(id); InspectionTask task = getById(id);
if (null == task) { if (null == task) {
throw new IllegalArgumentException("error id!"); throw new IllegalArgumentException("error id!");
@ -340,8 +370,12 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
log.info("countOK = {}", countOK); log.info("countOK = {}", countOK);
log.info("countNO = {}", countNO); log.info("countNO = {}", countNO);
log.info("countNA = {}", countNA); log.info("countNA = {}", countNA);
if (countOK != 0 || countNO != 0 || countNA != 0) {
// 设置接收时间
task.setReceiveDate(LocalDateTime.now());
}
// checkResult 处理 // checkResult 处理
int checkResult = InspectionTaskConst.CHECK_RESULT_TODO; // 默认TODO int checkResult = InspectionTaskConst.CHECK_RESULT_TODO; // 默认 数据库
if (countToDo == 0) { // 未检验为0 if (countToDo == 0) { // 未检验为0
if (countOK == itemList.size()) { // 全部item 合格 if (countOK == itemList.size()) { // 全部item 合格
checkResult = InspectionTaskConst.CHECK_RESULT_OK; checkResult = InspectionTaskConst.CHECK_RESULT_OK;
@ -351,18 +385,31 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
checkResult = InspectionTaskConst.CHECK_RESULT_NG; checkResult = InspectionTaskConst.CHECK_RESULT_NG;
} }
} }
// 最新状态
task.setCheckResult(checkResult); task.setCheckResult(checkResult);
// 保存最新状态 task.setStatus(checkResult);
// 更新
updateById(task); updateById(task);
// // 如果检验任务结果不合格,创建 生产处置单
if (checkResult == InspectionTaskConst.CHECK_RESULT_NG) {
addRsSheet(id);
}
return task;
}
public void addRsSheet(Long id) {
InspectionTask task = getById(id);
if (InspectionTaskConst.CHECK_RESULT_NG.equals(task.getCheckResult())) { if (InspectionTaskConst.CHECK_RESULT_NG.equals(task.getCheckResult())) {
if (!rsSubService.existTaskId(id)) { if (!rsSubService.existTaskId(id)) {
ReviewSheet rs = new ReviewSheet(); ReviewSheet rs = new ReviewSheet();
rs.setStatus(ReviewSheetConst.S_INIT); // rs.setRsCode("RS" + System.currentTimeMillis());
rs.setStatus(ReviewSheetConst.STATUS.S_INIT);
rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
rs.setTaskId(id); rs.setTaskId(id);
rsSubService.save(rs); rsSubService.save(rs);
rs.setRsCode("RS" + rs.getId()); // todo:fake data
rsSubService.updateById(rs);
} }
} }
return checkResult;
} }
} }

@ -16,9 +16,13 @@ import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springblade.common.exception.BusinessException; import org.springblade.common.exception.BusinessException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BaseRequest; import org.springblade.desk.basic.constant.BaseRequest;
import org.springblade.desk.basic.constant.BaseValue;
import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl; import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl;
import org.springblade.desk.basic.util.IdUtil; import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.quality.constant.InspectionTaskConst; import org.springblade.desk.quality.constant.InspectionTaskConst;
@ -36,6 +40,7 @@ import org.springblade.desk.quality.service.IReviewFaultService;
import org.springblade.desk.quality.service.IReviewSheetService; import org.springblade.desk.quality.service.IReviewSheetService;
import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.IUserClient; import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -89,13 +94,25 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
@Override @Override
public void setRedoScrapVOValue(ReviewSheetRedoScrapVO vo) { public void setRedoScrapVOValue(ReviewSheetRedoScrapVO vo) {
vo.setRsCode("" + vo.getId()); // todo:临时显示
vo.setWoCode("" + vo.getId()); // vo.setRsCode("" + vo.getId());
// vo.setWoCode("" + vo.getId());
if (IdUtil.isValid(vo.getReviewUserId())) {
R<UserInfo> uiR = userClient.userInfo(vo.getReviewUserId());
if (uiR != null && uiR.isSuccess() && uiR.getData() != null) {
vo.setReviewUserRealName(uiR.getData().getUser().getRealName());
}
}
} }
@Override @Override
public void setErpVOValue(ReviewSheetErpVO vo) { public void setErpVOValue(ReviewSheetErpVO vo) {
if (IdUtil.isValid(vo.getReviewUserId())) {
R<UserInfo> uiR = userClient.userInfo(vo.getReviewUserId());
if (uiR != null && uiR.isSuccess() && uiR.getData() != null) {
vo.setReviewUserRealName(uiR.getData().getUser().getRealName());
}
}
} }
@Override @Override
@ -197,6 +214,7 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
@Override @Override
public R fill(ReviewSheetDetailVO vo) { public R fill(ReviewSheetDetailVO vo) {
log.info("ReviewSheetDetailVO vo = {}", vo.toString());
// 关联rsId // 关联rsId
for (ReviewFaultVO voF : vo.getFaultList()) { for (ReviewFaultVO voF : vo.getFaultList()) {
voF.setReviewSheetId(vo.getId()); voF.setReviewSheetId(vo.getId());
@ -224,28 +242,40 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
// 提交类型 // 提交类型
Integer submitType = vo.getSubmitType(); Integer submitType = vo.getSubmitType();
// 内部 // 内部
Integer bizType = vo.getBizType();
// biz类型
rs.setBizType(bizType);
if ( if (
ReviewSheetConst.BizType.T_SELF_REDO.equals(rs.getBizType()) || ReviewSheetConst.BizType.T_SELF_REDO.equals(rs.getBizType()) ||
ReviewSheetConst.BizType.T_SELF_SCRAP.equals(rs.getBizType()) ReviewSheetConst.BizType.T_SELF_SCRAP.equals(rs.getBizType())
) { ) {
if (ReviewSheetConst.SUBMIT_TYPE.T_SELF.equals(submitType)) { // 提交 if (ReviewSheetConst.SUBMIT_TYPE.T_SELF.equals(submitType)) { // 内部提交
// 当前状态
rs.setStatus(ReviewSheetConst.STATUS.S_JUDGE); rs.setStatus(ReviewSheetConst.STATUS.S_JUDGE);
} else if (ReviewSheetConst.SUBMIT_TYPE.T_SELF_TEMP.equals(submitType)) { // 暂存 // 审核状态 内部用不到
rs.setStatus(ReviewSheetConst.STATUS.S_NEW); rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
} }
} }
// ERP // ERP
if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) { if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) {
if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_TEMP.equals(submitType)) { // 暂存 if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_TEMP.equals(submitType)) { // 暂存
// 当前状态
rs.setStatus(ReviewSheetConst.STATUS.S_NEW); rs.setStatus(ReviewSheetConst.STATUS.S_NEW);
// 审核状态
rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
} }
if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_QA.equals(submitType) || if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_QA.equals(submitType) ||
ReviewSheetConst.SUBMIT_TYPE.T_ERP_CRAFT.equals(submitType) || ReviewSheetConst.SUBMIT_TYPE.T_ERP_CRAFT.equals(submitType) ||
ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES.equals(submitType) || ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES.equals(submitType) ||
ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES_CHANGE.equals(submitType)) { // 外部提交 ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES_CHANGE.equals(submitType)) { // 外部提交
// 当前状态
rs.setStatus(ReviewSheetConst.STATUS.S_HEAR); rs.setStatus(ReviewSheetConst.STATUS.S_HEAR);
// 审核状态
rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
} }
} }
// 保存标记位
rs.setHasSaved(BaseValue.YES);
// 处置单 // 处置单
saveOrUpdate(rs); saveOrUpdate(rs);
return R.success("成功"); return R.success("成功");
@ -261,7 +291,15 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
ReviewSheet rs = getById(id); ReviewSheet rs = getById(id);
rs.setSelfReviewFlag(selfReviewFlag); rs.setSelfReviewFlag(selfReviewFlag);
rs.setMemo(memo); rs.setMemo(memo);
rs.setReviewStatus(ReviewSheetConst.STATUS.S_COMPLETE); // 修改状态, 内部审理没有审理状态概念。
rs.setStatus(ReviewSheetConst.STATUS.S_COMPLETE);
BladeUser bu = AuthUtil.getUser();
if (bu != null) {
// 赋值 审理[用户]id
rs.setReviewUserId(bu.getUserId());
}
// 审理时间
rs.setReviewDate(LocalDateTime.now());
updateById(rs); updateById(rs);
Integer bizType = rs.getBizType(); Integer bizType = rs.getBizType();
if (ReviewSheetConst.BizType.T_SELF_REDO.equals(bizType)) { // 返工 todo if (ReviewSheetConst.BizType.T_SELF_REDO.equals(bizType)) { // 返工 todo
@ -275,10 +313,15 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
@Override @Override
public R sameCopyFromHiWO(Long id, Long woId) { public R sameCopyFromHiWO(Long id, Long woId) {
// todo: // todo:
// todo:
// 找到的历史审理单
ReviewSheet rsS = getOneByWoId(woId); ReviewSheet rsS = getOneByWoId(woId);
if (rsS == null) {
return R.fail("找不到对应历史数据!");
}
// 目标 // 目标
ReviewSheet rsT = getById(id); ReviewSheet rsT = getById(id);
if (rsS == null || rsT == null) { if (rsT == null) {
return R.fail(""); return R.fail("");
} }
// //
@ -302,11 +345,11 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
BeanUtil.copyProperties(rsS, rsT, BaseRequest.ID); BeanUtil.copyProperties(rsS, rsT, BaseRequest.ID);
// 目标生产处置单 字段处理 // 目标生产处置单 字段处理
// 当前状态 // 当前状态
rsT.setStatus(ReviewSheetConst.S_INIT); rsT.setStatus(ReviewSheetConst.STATUS.S_NEW);
rsT.setWoCode(""); rsT.setWoCode("");
rsT.setWoId(null); rsT.setWoId(null);
// 审理状态 // 审理状态
rsT.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_0); rsT.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
// 引用的 车间订单id // 引用的 车间订单id
rsT.setRefWoId(woId); rsT.setRefWoId(woId);
return R.status(updateById(rsT)); return R.status(updateById(rsT));
@ -316,6 +359,7 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
public ReviewSheet getOneByWoId(Long woId) { public ReviewSheet getOneByWoId(Long woId) {
LambdaQueryWrapper<ReviewSheet> qw = Wrappers.lambdaQuery(); LambdaQueryWrapper<ReviewSheet> qw = Wrappers.lambdaQuery();
qw.eq(ReviewSheet::getWoId, woId); qw.eq(ReviewSheet::getWoId, woId);
qw.eq(ReviewSheet::getIsDeleted, BladeConstant.DB_NOT_DELETED);
return baseMapper.selectOne(qw); return baseMapper.selectOne(qw);
} }
@ -323,6 +367,7 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
public ReviewSheet getByRsCode(String rsCode) { public ReviewSheet getByRsCode(String rsCode) {
LambdaQueryWrapper<ReviewSheet> qw = Wrappers.lambdaQuery(); LambdaQueryWrapper<ReviewSheet> qw = Wrappers.lambdaQuery();
qw.eq(ReviewSheet::getRsCode, rsCode); qw.eq(ReviewSheet::getRsCode, rsCode);
qw.eq(ReviewSheet::getIsDeleted, BladeConstant.DB_NOT_DELETED);
qw.orderByDesc(ReviewSheet::getId); qw.orderByDesc(ReviewSheet::getId);
return baseMapper.selectOne(qw); return baseMapper.selectOne(qw);
} }

@ -23,12 +23,20 @@ business:
#角色配置 #角色配置
role-config: role-config:
#工艺员角色id #工艺员[角色]id
process-engineer-id: "1993624442365915137" process-engineer-id: "1993624442365915137"
# 49 tencent cloud # 49 tencent cloud
#process-engineer-id: "2004331529923555330" #process-engineer-id: "2004331529923555330"
#工艺员角色alias #工艺员[角色]alias
process-engineer-alias: "process_engineer" process-engineer-alias: "process_engineer"
#热表检验员[角色]id
rb-checker-id: "2011703987044114434"
#热表检验员[角色]alias
rb-checker-alias: "sj_checker"
#烧结检验员[角色]id
sj-checker-id: "2011704109077389313"
#烧结检验员[角色]alias
sj-checker-alias: "rb_checker"
request: request:
measuringTool: measuringTool:

Loading…
Cancel
Save