审理单回调接口修改

liweidong
李涛 1 week ago
parent 03d4f12b55
commit 21fc81f5a9
  1. 27
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/OemCraftAbilityEntity.java
  2. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrderRun.java
  3. 29
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/SaveProCheckDTO.java
  4. 156
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/InspectionTask.java
  5. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemVO.java
  6. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaLoadController.java
  7. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
  8. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  9. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
  10. 60
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java

@ -1,31 +1,5 @@
/**
* 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.basic.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -34,7 +8,6 @@ import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.List;
/**
* 工艺能力关联其他表 实体类

@ -25,6 +25,25 @@ public class WorkOrderRun extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
public WorkOrderRun(Long woId, String woCode, Short runType, Long outTeam, Long inTeam, Long outCustomer,
Long inCustomer, String memo, Long approvalMan, String systemData, String collaborate) {
this.woId = woId;
this.woCode = woCode;
this.runType = runType;
this.outTeam = outTeam;
this.inTeam = inTeam;
this.outCustomer = outCustomer;
this.inCustomer = inCustomer;
this.memo = memo;
this.approvalMan = approvalMan;
this.systemData = systemData;
this.collaborate = collaborate;
this.runStatus = RUN_STATUS_ISSUED;
}
public WorkOrderRun() {
}
/**
* 待外协
*/

@ -0,0 +1,29 @@
package org.springblade.desk.quality.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.vo.WorkPlanItemDetailVO;
import org.springblade.desk.quality.pojo.vo.WorkPlanItemVO;
import java.util.List;
/**
* 工序检验保存 数据传输对象实体类
*
* @author litao
* @since 2026年5月22日
*/
@Data
public class SaveProCheckDTO {
@Schema(description = "检验任务")
private InspectionTask inspectionTask;
@Schema(description = "检验项目")
private WorkPlanItemVO workPlanItemVO;
@Schema(description = "检验详情")
private List<WorkPlanItemDetailVO> wpItemDetailList;
}

@ -1,6 +1,3 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.quality.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
@ -27,159 +24,6 @@ public class InspectionTask extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* [检验任务]编码
*/
public static final String COL_CODE = "CODE";
/**
* [检验任务]类型
*/
public static final String COL_INSPECTION_TASK_TYPE = "INSPECTION_TASK_TYPE";
/**
* [检验任务]
*/
public static final String COL_NAME = "NAME";
/**
* [车间订单]id
*/
public static final String COL_WO_ID = "WO_ID";
/**
* [制品]id
*/
public static final String COL_PRODUCT_ID = "PRODUCT_ID";
/**
* [工序]id
*/
public static final String COL_PROCESS_ID = "PROCESS_ID";
/**
* 质检员[用户]id
*/
public static final String COL_CHECK_USER_ID = "CHECK_USER_ID";
/**
* [制品]编码
*/
public static final String COL_PRODUCT_CODE = "PRODUCT_CODE";
/**
* [制品]序列号
*/
public static final String COL_PRODUCT_SN = "PRODUCT_SN";
/**
* 生产批次号
*/
public static final String COL_BATCH_NUMBER = "BATCH_NUMBER";
/**
* [车间订单]编码
*/
public static final String COL_WO_CODE = "WO_CODE";
/**
* [工序]编码
*/
public static final String COL_PROCESS_CODE = "PROCESS_CODE";
/**
* 备注
*/
public static final String COL_REMARK = "REMARK";
/**
* 计划开始时间
*/
public static final String COL_PLANNED_START_DATE = "PLANNED_START_DATE";
/**
* 计划结束时间
*/
public static final String COL_PLANNED_END_DATE = "PLANNED_END_DATE";
/**
* 实际开始时间
*/
public static final String COL_ACTUAL_START_DATE = "ACTUAL_START_DATE";
/**
* 实际结束时间
*/
public static final String COL_ACTUAL_END_DATE = "ACTUAL_END_DATE";
/**
* 检验样本数量
*/
public static final String COL_SIMPLE_COUNT = "SIMPLE_COUNT";
/**
* 检验结果-[0]:未检验;[1]:合格;[2]:不合格;[-1]:NA
*/
public static final String COL_CHECK_RESULT = "CHECK_RESULT";
/**
* 检验数量
*/
public static final String COL_CHECK_QTY = "CHECK_QTY";
/**
* 消耗数量
*/
public static final String COL_LOSS_QTY = "LOSS_QTY";
/**
* 合格数量
*/
public static final String COL_QUALIFIED_QTY = "QUALIFIED_QTY";
/**
* 报废数量
*/
public static final String COL_SCRAP_QTY = "SCRAP_QTY";
/**
* 不合格数量
*/
public static final String COL_UNQUALIFIED_QTY = "UNQUALIFIED_QTY";
/**
* 不良原因
*/
public static final String COL_POOR_REASON = "POOR_REASON";
/**
* 不良描述
*/
public static final String COL_POOR_MEMO = "POOR_MEMO";
/**
* 检验日期
*/
public static final String COL_CHECK_DATE = "CHECK_DATE";
/**
* 审理单状态
*/
public static final String COL_REVIEW_STATUS = "REVIEW_STATUS";
/**
* 检验备注
*/
public static final String COL_CHECK_MEMO = "CHECK_MEMO";
/**
* 返工数
*/
public static final String COL_REWORK_QTY = "REWORK_QTY";
/**
* [作业计划]id
*/
public static final String COL_WP_ID = "WP_ID";
/**
* 来源类型
*/
public static final String COL_FROM_TYPE = "FROM_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";
/**
* [工序]名称
*/
public static final String COL_PROCESS_NAME = "PROCESS_NAME";
/**
* 额定工时(分钟)
*/
public static final String COL_STANDARD_WORK_MINUTE = "STANDARD_WORK_MINUTE";
/**
* 准备工时(分钟)
*/
public static final String COL_PREPARE_WORK_MINUTE = "PREPARE_WORK_MINUTE";
/**
* 未检验
*/

@ -1,6 +1,3 @@
/**
* Author: Tom Shuo
*/
package org.springblade.desk.quality.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;

@ -7,16 +7,11 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.energy.pojo.entity.BsDosingRecEntity;
import org.springblade.desk.energy.pojo.entity.BsEpciuPatrolInspectionEntity;
import org.springblade.desk.oldv1.constant.Constant;
import org.springblade.desk.oldv1.pojo.ResultInfo;
import org.springblade.desk.produce.pojo.vo.BindModelVO;
import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import org.springblade.desk.produce.service.IPdaLoadService;
@ -101,8 +96,9 @@ public class PdaLoadController {
@PostMapping(value = "/saveProCheck")
@ApiOperationSupport(order = 9)
@Operation(summary = "工艺检验保存", description = "")
@Operation(summary = "工序检验保存")
public R saveProCheck(@RequestBody InspectionTask inspectionTask) {
// SaveProCheckDTO下次修改为SaveProCheckDTO实体类接收
return R.status(pdaLoadService.saveProCheck(inspectionTask));
}

@ -13,6 +13,7 @@ import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.BindModelVO;
import org.springblade.desk.produce.pojo.vo.LoadSubOrderVO;
import org.springblade.desk.produce.pojo.vo.PdaProRelevantVO;
import org.springblade.desk.quality.pojo.dto.SaveProCheckDTO;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import java.util.List;

@ -291,4 +291,9 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
Map<String, Object> getInspectionRecordHead(Long woId);
Map<String, Object> getInspectionRecord(Long woId);
/**
* 生产运行记录
*/
void addPrWorkOrderRun(WorkOrder workOrder);
}

@ -1,6 +1,5 @@
package org.springblade.desk.produce.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -22,8 +21,6 @@ import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.energy.pojo.entity.BsEpciuPatrolInspectionEntity;
import org.springblade.desk.energy.pojo.entity.BsSafeInspectionPointEntity;
import org.springblade.desk.energy.pojo.entity.BsSafePatrolInspectionEntity;
import org.springblade.desk.energy.service.IBsDosingRecService;
import org.springblade.desk.energy.service.IBsEpciuPatrolInspectionService;
@ -42,9 +39,8 @@ import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.service.IInspectionTaskService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
@ -97,10 +93,10 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IBsEpciuPatrolInspectionService bsEpciuPatrolInspectionService;
private final IBsSafePatrolInspectionService inspectionService;
private final IUserClient userClient;
private final IBsSafeInspectionPointService bsSafeInspectionPointService;
private final IBsDosingRecService bsDosingRecService;
private final IWorkPlanItemService workPlanItemService;
// @Value("${request.device.prefixId}")
private String prefixId;
@ -370,13 +366,21 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveProCheck(InspectionTask inspectionTask) {
// InspectionTask inspectionTask = saveProCheckDTO.getInspectionTask();
inspectionTask.setReviewStatus((short) 0);
if (inspectionTask.getId() == null) {
inspectionTask.setCheckUserId(AuthUtil.getUserId());
inspectionTask.setCheckDate(LocalDateTime.now());
}
return inspectionTaskService.saveOrUpdate(inspectionTask);
boolean save = inspectionTaskService.save(inspectionTask);
// 保存镀后检验数据
// if (save) {
// WorkPlanItemVO workPlanItemVO = saveProCheckDTO.getWorkPlanItemVO();
// WorkPlanItem wpItemDB = workPlanItemService.getById(workPlanItemVO.getId());
// }
return save;
}
@Override

@ -24,10 +24,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.FlowConst;
import org.springblade.desk.basic.pojo.entity.BsAssignEntity;
import org.springblade.desk.basic.pojo.entity.CenterTeam;
import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.entity.*;
import org.springblade.desk.basic.service.*;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.DsProcessProjectVO;
@ -404,7 +401,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrderRunService.save(workOrderRun);
wo.setApprovalStatus(WorkOrder.APPROVAL_STATUS_UNDER);
wo.setWorId(workOrderRun.getId());
this.updateById(wo);
Boolean frontHandle = null;
@ -413,9 +409,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//当前序选中,上序不允许不选
if (frontHandle != null && !frontHandle && item.getHandle()) {
if (WorkOrderRun.RUN_TYPE_1.equals(workOrderRun.getRunType())) {
throw new ServiceException("product.frontHandle");
throw new ServiceException("上序必须一起外协!");
} else if (WorkOrderRun.RUN_TYPE_2.equals(workOrderRun.getRunType())) {
throw new ServiceException("product.nextHandle");
throw new ServiceException("下序必须一起回收!");
}
}
item.setWorId(workOrderRun.getId());
@ -1238,7 +1234,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
@Override
public void maintainOrder(WorkOrder workOrder, Long planner, Long dispatcher, WorkOrderRun workOrderRun, Boolean oem) throws Exception {
public void maintainOrder(WorkOrder workOrder, Long planner, Long dispatcher, WorkOrderRun workOrderRun, Boolean oem) {
YieldOrder pjYieldOrder = yieldOrderMapper.selectById(workOrder.getYoId());
int days = 5;
// 旧MES有个烧结配置,从配置里读取信息。改为通过枚举方式读取
@ -2813,7 +2809,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<WorkPlanItemDetail> planItemDetails = workPlanItemDetailService.listByWoId(woId);
Map<Long, List<WorkPlanItemDetail>> itemDetailMap = planItemDetails.stream()
.collect(Collectors.groupingBy(WorkPlanItemDetail::getWorkPlanItemId));
for (WorkPlanItemVO planItem : planItemLst) {
for (WorkPlanItemVO planItem : planItemLst) {
List<WorkPlanItemDetail> itemDetails = itemDetailMap.get(planItem.getId());
String checkManByNewErp = null;
try {
@ -2821,8 +2817,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} catch (Exception e) {
// DB Link 等异常降级,避免阻塞 PDF 生成
}
if(CollectionUtils.isNotEmpty(itemDetails)){
for(WorkPlanItemDetail itemDetail : itemDetails){
if (CollectionUtils.isNotEmpty(itemDetails)) {
for (WorkPlanItemDetail itemDetail : itemDetails) {
Map<String, Object> map = new HashMap<>(12);
map.put("projectNo", planItem.getItemCode());
map.put("equipmentName", itemDetail.getTools());
@ -2872,9 +2868,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
map.put("testQty", planItem.getTestQty());
map.put("checkQty", planItem.getCheckQty());
map.put("checkResult", planItem.getCheckResult() == -1 ? "未检验" : planItem.getCheckResult() == 1 ? "合格" :
planItem.getCheckResult() == 2 ? "不合格" : planItem.getCheckResult() == 3 ? "NA" : "");
planItem.getCheckResult() == 2 ? "不合格" : planItem.getCheckResult() == 3 ? "NA" : "");
map.put("inspectorName", checkManByNewErp);
if(planItem.getCheckDate() != null){
if (planItem.getCheckDate() != null) {
map.put("checkDate", planItem.getCheckDate().toLocalDate().toString());
}
list.add(map);
@ -2891,9 +2887,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
map.put("testQty", planItem.getTestQty());
map.put("checkQty", planItem.getCheckQty());
map.put("checkResult", planItem.getCheckResult() == -1 ? "未检验" : planItem.getCheckResult() == 1 ? "合格" :
planItem.getCheckResult() == 2 ? "不合格" : planItem.getCheckResult() == 3 ? "NA" : "");
planItem.getCheckResult() == 2 ? "不合格" : planItem.getCheckResult() == 3 ? "NA" : "");
map.put("inspectorName", checkManByNewErp);
if(planItem.getCheckDate() != null){
if (planItem.getCheckDate() != null) {
map.put("checkDate", planItem.getCheckDate().toLocalDate().toString());
}
list.add(map);
@ -2903,6 +2899,40 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return data;
}
@Override
public void addPrWorkOrderRun(WorkOrder workOrder) {
WorkPlan prWorkPlan = workPlanService.getById(workOrder.getWpId());
if (prWorkPlan.getOcId() != null) {
//产生外协生产进度记录信息
WorkOrderRun wr = new WorkOrderRun(workOrder.getId(), workOrder.getWoCode(), WorkOrderRun.RUN_TYPE_1,
null, null, null, prWorkPlan.getOcId(), "分派默认(厂外)",
null, "1", workOrder.getCollaborate());
workOrderRunService.save(wr);
//更改订单调度员和计划员
OemCraftAbilityEntity oa = oemCraftAbilityService.findBsOemAbility(prWorkPlan.getOcId(), prWorkPlan.getCaId());
if (oa != null) {
this.maintainOrder(workOrder, oa.getPlanner(), oa.getDispatcher(), wr, true);
} else {
throw new ServiceException("请核实外协商[" + prWorkPlan.getOcId() + "]的工艺能力是否有误!!!!");
}
} else {
//产生车间运行记录信息
WorkOrderRun wr = new WorkOrderRun(workOrder.getId(), workOrder.getWoCode(), WorkOrderRun.RUN_TYPE_2,
null, prWorkPlan.getMakeTeam(), null, null, "分派默认(厂内)",
null, "1", workOrder.getCollaborate());
workOrderRunService.save(wr);
//更改订单调度员和计划员
BsTeamSetEntity teamSet = teamSetService.getById(prWorkPlan.getMakeTeam());
// 2025-07-23 线上迁移修改 增加if判断
if (prWorkPlan.getMakeTeam() != null) {
this.maintainOrder(workOrder, teamSet.getPlanner(), teamSet.getDispatcher(), wr, false);
} else {
throw new ServiceException("未找到合适的班组或厂家");
}
}
}
@Override
public void launchTest(Map<String, Object> data, BladeUser user) throws Exception {
// 提取参数

Loading…
Cancel
Save