update 通过planDetailId和processId生成质检任务

master
yinq 2 days ago
parent 925694f554
commit 7f1b6f5843

@ -1,7 +1,10 @@
package org.dromara.pda.api;
import org.dromara.common.core.exception.base.BaseException;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.pda.api.model.BaseMaterial;
import org.dromara.pda.api.model.ProdQmsPlanDetail;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
import java.util.List;
import java.util.Map;
@ -15,4 +18,13 @@ public interface RemotePdaMesApiService {
* @throws UserException
*/
BaseMaterial remoteQueryByMaterialCode(String materialCode , String tenantId) throws UserException;
/**
*
* @param bo
* @return
* @throws BaseException
*/
ProdQmsPlanDetail remoteGetProductionPlanDetail(GenerateInspectionTaskBo bo) throws BaseException;
}

@ -0,0 +1,208 @@
package org.dromara.pda.api.model;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* prod_product_plan_detail
*
* @author Yinq
* @date 2025-03-05
*/
@Data
public class ProdQmsPlanDetail implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long planDetailId;
/**
*
*/
private String planDetailCode;
/**
* ID
*/
private Long planId;
/**
*
*/
private String planCode;
/**
* ID;,
*/
private String userId;
/**
* ;,
*/
private String userName;
/**
* ID
*/
private Long shiftId;
/**
* ID
*/
private Long classTeamId;
/**
*
*/
private BigDecimal completeAmount;
/**
* ID
*/
private Long unitId;
/**
*
*/
private String unitName;
/**
*
*/
private Date realBeginTime;
/**
*
*/
private Date realEndTime;
/**
*
*/
private String attachId;
/**
*
*/
private String materialBarcode;
/**
* ;
*/
private String returnBarcode;
/**
*
*/
private Long trainNumber;
/**
* ID;ID;ID
*/
private Long toolingId;
/**
* ID
*/
private Long capsuleId;
/**
* ID
*/
private Long shiftChangeId;
/**
* ID
*/
private Long sfpDetailId;
/**
* ID
*/
private Long formingDetailId;
/**
* ID
*/
private Long vulDetailId;
/**
* 1 2 3 9
*/
private String planDetailStatus;
/**
* 1 0
*/
private String firstFlag;
/**
* 1 0
*/
private String alarmFlag;
/**
* 1 0
*/
private String suppleFlag;
/**
*
*/
private String remark;
/**
*
*/
private BigDecimal remainingAmount;
/**
* 1 0
*/
private String delFlag;
/**
*
*/
private String toolingName;
private String shiftName;
private String teamName;
/**
* ID
*/
private Long materialId;
/**
*
*/
private String materialCode;
/**
*
*/
private String materialName;
/**
*
*/
private String processName;
/**
*
*/
private String releaseName;
}

@ -0,0 +1,12 @@
package org.dromara.pda.api.model.bo;
import lombok.Data;
import java.io.Serializable;
@Data
public class GenerateInspectionTaskBo implements Serializable {
private String tenantId;
private Long planDetailId;
private Long processId;
}

@ -0,0 +1,36 @@
package org.dromara.common.core.utils;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.boot.autoconfigure.thread.Threading;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/**
*
*
* @author Lion Li
*/
public final class ProcessWorkshopUtils {
/**
* IDID
* @param processId
* @return
*/
public static Long Conversion(Long processId) {
if (processId == null) {
return null;
}
if (processId == 17L) {
return 3L;
} else if (processId == 18L) {
return 4L;
} else {
return 2L;
}
}
}

@ -3,11 +3,24 @@ package org.dromara.mes.dubbo;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.exception.base.BaseException;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.ProcessWorkshopUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.mes.domain.ProdProductPlanDetail;
import org.dromara.mes.domain.bo.ProdPlanInfoBo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.mes.domain.vo.ProdProductPlanDetailVo;
import org.dromara.mes.mapper.BaseMaterialInfoMapper;
import org.dromara.mes.service.IProdPlanInfoService;
import org.dromara.mes.service.IProdProductPlanDetailService;
import org.dromara.pda.api.RemotePdaMesApiService;
import org.dromara.pda.api.model.BaseMaterial;
import org.dromara.pda.api.model.ProdQmsPlanDetail;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@ -20,6 +33,10 @@ public class RemoteQmsApiServiceImpl implements RemotePdaMesApiService {
private final BaseMaterialInfoMapper baseMaterialInfoMapper ;
private final IProdPlanInfoService prodPlanInfoService;
private final IProdProductPlanDetailService productPlanDetailService ;
@Override
@ -40,4 +57,32 @@ public class RemoteQmsApiServiceImpl implements RemotePdaMesApiService {
});
}
@Override
public ProdQmsPlanDetail remoteGetProductionPlanDetail(GenerateInspectionTaskBo bo) throws BaseException {
ProdQmsPlanDetail planDetail = new ProdQmsPlanDetail();
Long planDetailId = bo.getPlanDetailId();
Long processId = bo.getProcessId();
Long workshopId = ProcessWorkshopUtils.Conversion(processId);
ProdProductPlanDetailVo prodProductPlanDetailVo = productPlanDetailService.queryById(planDetailId, workshopId);
ProdProductPlanDetail detail = MapstructUtils.convert(prodProductPlanDetailVo, ProdProductPlanDetail.class);
if (StringUtils.isNull(detail)){
return planDetail;
}
BeanUtils.copyProperties(detail, planDetail);
ProdPlanInfoBo planInfoBo = new ProdPlanInfoBo();
planInfoBo.setPlanId(prodProductPlanDetailVo.getPlanId());
planInfoBo.setWorkshopId(workshopId);
List<ProdPlanInfoVo> prodPlanInfoVos = prodPlanInfoService.queryList(planInfoBo);
if (prodPlanInfoVos.isEmpty()){
return planDetail;
}
ProdPlanInfoVo prodPlanInfoVo = prodPlanInfoVos.get(0);
planDetail.setMaterialId(prodPlanInfoVo.getMaterialId());
planDetail.setMaterialCode(prodPlanInfoVo.getMaterialCode());
planDetail.setMaterialName(prodPlanInfoVo.getMaterialName());
planDetail.setProcessName(prodPlanInfoVo.getProcessName());
planDetail.setReleaseName(prodPlanInfoVo.getReleaseName());
return planDetail;
}
}

@ -4,6 +4,7 @@ package org.dromara.qms.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
import org.dromara.qms.service.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -50,7 +51,8 @@ public class QcPDAController {
//不合格品评审记录
private final IQcUnqualifiedRecordService qcUnqualifiedRecordService;
//PDA业务Service
private final IQcPDAService qcPDAService;
/**
* PDA
@ -77,5 +79,18 @@ public class QcPDAController {
"3".equals(reviewResult); // 流转
}
/**
* planDetailIdprocessId
* @param bo
* @return
*/
@PostMapping("/generateInspectionTask")
public R<Boolean> generateInspectionTask(@RequestBody @Valid GenerateInspectionTaskBo bo) {
Boolean result = qcPDAService.generateInspectionTask(bo);
if (result != null && result) {
return R.ok(true);
} else {
return R.fail("生成质检任务失败");
}
}
}

@ -0,0 +1,20 @@
package org.dromara.qms.service;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
/**
* PDAService
*
* @author YinQ
* @date 2025-07-24
*/
public interface IQcPDAService {
/**
* planDetailIdprocessId
*/
Boolean generateInspectionTask(GenerateInspectionTaskBo bo);
}

@ -0,0 +1,93 @@
package org.dromara.qms.service.impl;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.pda.api.RemotePdaMesApiService;
import org.dromara.pda.api.model.ProdQmsPlanDetail;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
import org.dromara.qms.domain.bo.QcInspectionTemplateBo;
import org.dromara.qms.domain.vo.QcInspectionTemplateVo;
import org.dromara.qms.service.IQcInspectionTemplateService;
import org.dromara.qms.service.IQcPDAService;
import org.dromara.qms.service.IQcTemplateItemService;
import org.dromara.system.api.RemoteCodeRuleService;
import org.springframework.stereotype.Service;
import org.dromara.qms.service.IQcInspectionMainService;
import org.dromara.qms.domain.bo.QcInspectionMainBo;
import org.dromara.common.core.domain.R;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* PDAService
*
* @author YinQ
* @date 2025-07-24
*/
@RequiredArgsConstructor
@Service
@DubboService
public class QcPDAServiceImpl implements IQcPDAService {
private final IQcInspectionMainService qcInspectionMainService;
private final IQcInspectionTemplateService qcInspectionTemplateService;
private final IQcTemplateItemService qcTemplateItemService;
@DubboReference
private final RemotePdaMesApiService remotePdaMesApiService;
@DubboReference
private final RemoteCodeRuleService remoteCodeRuleService;
/**
* planDetailIdprocessId
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean generateInspectionTask(GenerateInspectionTaskBo bo) {
ProdQmsPlanDetail planDetail = remotePdaMesApiService.remoteGetProductionPlanDetail(bo);
if (StringUtils.isNull(planDetail)) {
throw new ServiceException("获取生产计划失败");
}
String inspectionNo = remoteCodeRuleService.selectCodeRuleCode("3");
if (StringUtils.isNull(inspectionNo)) {
throw new ServiceException("获取质检编号失败");
}
String materialCode = planDetail.getMaterialCode();
QcInspectionTemplateBo templateBo = new QcInspectionTemplateBo();
templateBo.setMaterialCode(materialCode);
List<QcInspectionTemplateVo> templateVos = qcInspectionTemplateService.queryList(templateBo);
if (templateVos.size() != 1) {
throw new ServiceException("此物料无可用检测模板!");
}
QcInspectionTemplateVo templateVo = templateVos.get(0);
QcInspectionMainBo inspectionBo = new QcInspectionMainBo();
inspectionBo.setInspectionNo(inspectionNo);
inspectionBo.setPlanDetailId(planDetail.getPlanDetailId());
inspectionBo.setTemplateId(templateVo.getTemplateId());
inspectionBo.setTemplateName(templateVo.getTemplateName());
inspectionBo.setInspectionType(templateVo.getQcInspectionType());
inspectionBo.setMaterialCode(planDetail.getMaterialCode());
inspectionBo.setMaterialName(planDetail.getMaterialName());
inspectionBo.setProcessName(planDetail.getProcessName());
inspectionBo.setStationName(planDetail.getReleaseName());
inspectionBo.setInspectionQty(planDetail.getCompleteAmount());
inspectionBo.setShift(planDetail.getShiftName());
inspectionBo.setTeam(planDetail.getTeamName());
inspectionBo.setProductionOrder(planDetail.getPlanCode());
inspectionBo.setBarcode(planDetail.getReturnBarcode());
inspectionBo.setStatus(0L);
qcInspectionMainService.insertByBo(inspectionBo);
return true;
}
}
Loading…
Cancel
Save