From 3ec7c28263728ee3db79ebdb505666e394874564 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Mon, 18 May 2026 14:15:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=A4=84=E7=BD=AE=E5=8D=95?= =?UTF-8?q?=E6=8E=A8=E9=80=81ERP=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/quality/pojo/dto/ReviewDutyDTO.java | 17 + .../desk/quality/pojo/dto/ReviewFaultDTO.java | 19 +- .../desk/quality/pojo/dto/ReviewSheetDTO.java | 44 ++- .../controller/ReviewSheetController.java | 4 +- .../quality/service/IReviewSheetService.java | 3 +- .../impl/InspectionTaskServiceImpl.java | 5 +- .../service/impl/ReviewSheetServiceImpl.java | 307 ++++++++++++++---- 7 files changed, 322 insertions(+), 77 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java index 4d4c58799..75632cb30 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java @@ -58,4 +58,21 @@ public class ReviewDutyDTO { * 单位 */ private String unit; + + public ReviewDutyDTO(){ + + } + + public ReviewDutyDTO(String trialId, String trialSeq, String mdsItemCode, String batchNo, String corrMdsItemCode, + String corrBatchNo, String note, Short reqQty, String unit) { + this.trialId = trialId; + this.trialSeq = trialSeq; + this.mdsItemCode = mdsItemCode; + this.batchNo = batchNo; + this.corrMdsItemCode = corrMdsItemCode; + this.corrBatchNo = corrBatchNo; + this.note = note; + this.reqQty = reqQty; + this.unit = unit; + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java index fd977236a..d243395e3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java @@ -42,16 +42,31 @@ public class ReviewFaultDTO { /** * 比例 */ - private Double proportion; + private String proportion; /** * 数量 */ - private Long faultQty; + private Integer faultQty; /** * 描述 */ private String describe; + public ReviewFaultDTO(){ + + } + + public ReviewFaultDTO(String trialId, String trialSeq, String faultType, String questClass, String questSubclass, + String proportion, Integer faultQty, String describe) { + this.trialId = trialId; + this.trialSeq = trialSeq; + this.faultType = faultType; + this.questClass = questClass; + this.questSubclass = questSubclass; + this.proportion = proportion; + this.faultQty = faultQty; + this.describe = describe; + } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java index 216fa936c..2f4e608fc 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java @@ -66,15 +66,15 @@ public class ReviewSheetDTO{ */ private String preCode; - /** - * 比例 - */ - private Double proporTion; + /** + * 比例 + */ + private String proporTion; - /** - * 不合格数量 - */ - private Double subQty; + /** + * 不合格数量 + */ + private Integer subQty; /** * 简单原因 @@ -108,4 +108,32 @@ public class ReviewSheetDTO{ */ private String checkDate; + + public ReviewSheetDTO() { + + } + + public ReviewSheetDTO(String batchNo, String businessNo, String checkUserCode, String easyReason, String levels, + String mdsItemCode, String mdsItemName, Double needQty, String preCode, String proporTion, + Boolean qualityquestion, Integer subQty, String trialType, String seqNo, String seqName, String findUserCode, String hearDis) { //, String checkDate + this.batchNo = batchNo; + this.businessNo = businessNo; + this.checkUserCode = checkUserCode; + this.easyReason = easyReason; + this.findWorkShop = "3400"; + this.levels = levels; + this.mdsItemCode = mdsItemCode; + this.mdsItemName = mdsItemName; + this.needQty = needQty; + this.preCode = preCode; + this.proporTion = proporTion; + this.qualityquestion = qualityquestion; + this.subQty = subQty; + this.trialType = trialType; + this.hearDis = hearDis; + this.seqNo = seqNo; + this.seqName = seqName; + this.findUserCode = findUserCode; +// this.checkDate = checkDate; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java index c4eb8affb..8920b06ba 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java @@ -492,8 +492,8 @@ public class ReviewSheetController extends BladeController { @PostMapping("/fill") @ApiOperationSupport(order = 40) @Operation(summary = "填报[生产处置单]", description = "ReviewSheetVO Obj") - public R fill(@Valid @RequestBody ReviewSheetDetailVO vo) { - return service.fill(vo); + public R fill(@Valid @RequestBody ReviewSheetDetailVO vo, BladeUser bladeUser) { + return service.fill(vo, bladeUser); } @GetMapping("/getRSDutyPartList") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java index 1b0c5dd99..39717cfa0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java @@ -6,6 +6,7 @@ package org.springblade.desk.quality.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; import org.springblade.desk.basic.service.en.EnBaseService; import org.springblade.desk.quality.excel.ReviewSheetExcel; @@ -134,7 +135,7 @@ public interface IReviewSheetService extends EnBaseService { */ void deleteReviewOrder(String trialId) throws Exception; - R fill(ReviewSheetDetailVO vo); + R fill(ReviewSheetDetailVO vo, BladeUser bladeUser); R reviewSelf(Long id, Integer selfReviewFlag, String memo); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java index 0fa2d2f67..dafd38140 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java @@ -2116,8 +2116,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl selectReviewSheetPage(IPage page, ReviewSheetDetailVO reviewSheet) { return page.setRecords(baseMapper.selectReviewSheetPage(page, reviewSheet)); @@ -477,8 +482,158 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl listF = null; +// +// if (null != vo.getFaultList() && !vo.getFaultList().isEmpty()) { +// // 关联rsId +// for (ReviewFaultVO voF : vo.getFaultList()) { +// voF.setReviewSheetId(vo.getId()); +// } +// listF = BeanUtil.copyToList(vo.getFaultList(), ReviewFault.class); +// // 保存 或 更新 +// faultService.saveOrUpdateBatch(listF); +// } +// +// // 删除 +// if (StringUtils.isNotBlank(vo.getDutyDeleteIds())) { +// dutyService.deleteLogic(Func.toLongList(vo.getDutyDeleteIds())); +// } +// +// List listD = null; +// if (null != vo.getDutyList() && !vo.getDutyList().isEmpty()) { +// // 关联rsId +// for (ReviewDutyVO voD : vo.getDutyList()) { +// voD.setReviewSheetId(vo.getId()); +// } +// listD = BeanUtil.copyToList(vo.getDutyList(), ReviewDuty.class); +// // 保存 或 更新 +// dutyService.saveOrUpdateBatch(listD); +// } +// +// // 审理单 +// ReviewSheet rs = getById(vo.getId()); // 从数据库中查到 +// log.info("ReviewSheet rs = {}", rs); +// log.info("ReviewSheet vo = {}", vo); +// BeanUtil.copyProperties(vo, rs, BaseRequest.ID); // 拷贝id之外的属性。 +// // 提交类型 +// Integer submitType = vo.getSubmitType(); +// // 内部 +// Integer bizType = vo.getBizType(); +// // biz类型 +// rs.setBizType(bizType); +// if (ReviewSheetConst.BizType.T_SELF_REDO.equals(rs.getBizType()) || ReviewSheetConst.BizType.T_SELF_SCRAP.equals(rs.getBizType())) { +// if (ReviewSheetConst.SUBMIT_TYPE.T_SELF.equals(submitType)) { // 内部提交 +// // 当前状态 +// rs.setStatus(ReviewSheetConst.STATUS.S_JUDGE); +// // 审核状态 内部用不到 +// rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT); +// } +// } +// // ERP +// if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) { +// if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_TEMP.equals(submitType)) { // 暂存 +// // 当前状态 +// rs.setStatus(ReviewSheetConst.STATUS.S_NEW); +// // 审核状态 +// rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT); +// } +// if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_QA.equals(submitType) || +// ReviewSheetConst.SUBMIT_TYPE.T_ERP_CRAFT.equals(submitType) || +// ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES.equals(submitType) || +// ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES_CHANGE.equals(submitType)) { // 外部提交 +// // 当前状态 +// rs.setStatus(ReviewSheetConst.STATUS.S_HEAR); +// // 审核状态 +// rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT); +// } +// } +// rs.setToReviewDate(rs.getToReviewDate() == null ? LocalDateTime.now() : rs.getToReviewDate()); +// rs.setToReviewUserId(rs.getToReviewUserId() == null ? AuthUtil.getUserId() : rs.getToReviewUserId()); +// rs.setToReviewUserName(rs.getToReviewUserName() == null ? AuthUtil.getUser().getNickName() : rs.getToReviewUserName()); +// // 保存标记位 +// rs.setHasSaved(BaseValue.YES); +// // 处置单 +// saveOrUpdate(rs); +// if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) { +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_JSON); +// +// ReviewSheetDTO dto = new ReviewSheetDTO(); +// dto.setBusinessNo(rs.getWoCode()); +// dto.setMdsItemCode(dto.getPreCode()); +// dto.setTrialStatus(rs.getReviewStatus().toString()); +// dto.setHearDis(rs.getSubmitType().toString()); +// dto.setTrialType(rs.getReviewOrderMode() + ""); +// dto.setPreCode(rs.getUpCode()); +// dto.setProporTion(rs.getScale()); +// dto.setSubQty(rs.getUnqualifiedQty()); +// +// List vods = new ArrayList<>(); +// +// if (null != listD && listD.size() > 0) { +// for (ReviewDuty vod : listD) { +// ReviewDutyDTO vodDTO = new ReviewDutyDTO(); +// vodDTO.setTrialId(vod.getReviewSheetId() + ""); +// vodDTO.setReqQty(vod.getQty()); +// vodDTO.setUnit(vod.getUnit()); +// vodDTO.setCorrBatchNo(vod.getRelevantBatch()); +// vods.add(vodDTO); +// } +// } +// +// List vofs = new ArrayList<>(); +// if (null != listF && listF.size() > 0) { +// for (ReviewFault vof : listF) { +// ReviewFaultDTO vofDTO = new ReviewFaultDTO(); +// vofDTO.setTrialId(vof.getReviewSheetId() + ""); +// vofDTO.setFaultType(vof.getNgType2Id() + ""); +// vofDTO.setQuestClass(vof.getNgType3Id() + ""); +// vofDTO.setQuestSubclass(vof.getNgType4Id() + ""); +// vofDTO.setProportion(vof.getScale()); +// vofDTO.setFaultQty(vof.getQty()); +// vofDTO.setDescribe(vof.getMemo()); +// vofs.add(vofDTO); +// } +// } +// +// JSONObject obj = new JSONObject(); +// obj.put("qmsRepairApplyDTO", dto); +// obj.put("qmsRepairPartList", vods); +// obj.put("qmsRepairMalfList", vofs); +// HttpEntity entity = new HttpEntity<>(obj, headers); +// ResponseEntity responseEntity; +// JSONObject responseBody; +// try { +// responseEntity = httpClientTemplate.postForEntity(newErpUrl + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); +// JSONObject result = responseEntity.getBody(); +// if (result == null || !result.getString("retCode").equals("200")) { +// throw new ServiceException("审理单接口调用失败,原因:" + result.getString("errorDesc")); +// } +// responseBody = result.getJSONObject("responseBody"); +// if (responseBody == null) { +// throw new ServiceException("审理单,接口返回值null"); +// } +// } catch (Exception e) { +// throw new ServiceException("审理单调用异常,原因:" + e.getMessage()); +// } +// rs.setErpId(responseBody.getString("trialId")); +// rs.setRsCode(responseBody.getString("trialNo")); +// this.updateById(rs); +// } +// return R.success("成功"); +// } + @Override - public R fill(ReviewSheetDetailVO vo) { + public R fill(ReviewSheetDetailVO vo, BladeUser bladeUser) { log.info("ReviewSheetDetailVO vo = {}", vo.toString()); // 删除 @@ -559,74 +714,102 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl vods = new ArrayList<>(); - - if (null != listD && listD.size() > 0) { - for (ReviewDuty vod : listD) { - ReviewDutyDTO vodDTO = new ReviewDutyDTO(); - vodDTO.setTrialId(vod.getReviewSheetId() + ""); - vodDTO.setReqQty(vod.getQty()); - vodDTO.setUnit(vod.getUnit()); - vodDTO.setCorrBatchNo(vod.getRelevantBatch()); - vods.add(vodDTO); - } - } - - List vofs = new ArrayList<>(); - if (null != listF && listF.size() > 0) { - for (ReviewFault vof : listF) { - ReviewFaultDTO vofDTO = new ReviewFaultDTO(); - vofDTO.setTrialId(vof.getReviewSheetId() + ""); - vofDTO.setFaultType(vof.getNgType2Id() + ""); - vofDTO.setQuestClass(vof.getNgType3Id() + ""); - vofDTO.setQuestSubclass(vof.getNgType4Id() + ""); - vofDTO.setProportion(vof.getScale()); - vofDTO.setFaultQty(vof.getQty()); - vofDTO.setDescribe(vof.getMemo()); - vofs.add(vofDTO); - } - } - - JSONObject obj = new JSONObject(); - obj.put("qmsRepairApplyDTO", dto); - obj.put("qmsRepairPartList", vods); - obj.put("qmsRepairMalfList", vofs); - HttpEntity entity = new HttpEntity<>(obj, headers); - ResponseEntity responseEntity; - JSONObject responseBody; try { - responseEntity = httpClientTemplate.postForEntity(newErpUrl + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); - JSONObject result = responseEntity.getBody(); - if (result == null || !result.getString("retCode").equals("200")) { - throw new ServiceException("审理单接口调用失败,原因:" + result.getString("errorDesc")); - } - responseBody = result.getJSONObject("responseBody"); - if (responseBody == null) { - throw new ServiceException("审理单,接口返回值null"); - } + JSONObject responseBody = saveReviewData(rs, listD, listF, bladeUser); + rs.setErpId(responseBody.getString("trialId")); + rs.setRsCode(responseBody.getString("trialNo")); + this.updateById(rs); } catch (Exception e) { - throw new ServiceException("审理单调用异常,原因:" + e.getMessage()); + return R.fail(e.getMessage()); } - rs.setErpId(responseBody.getString("trialId")); - rs.setRsCode(responseBody.getString("trialNo")); - this.updateById(rs); } return R.success("成功"); } + private JSONObject saveReviewData(ReviewSheet rs, List rdList, List rfList, BladeUser bladeUser) throws Exception { + InspectionTask wc = inspectionTaskService.getById(rs.getTaskId()); + if (wc == null) { + throw new BusinessException("检验任务信息不存在!"); + } + WorkPlan wp = workPlanService.getById(wc.getWpId()); + if (wp == null) { + throw new BusinessException("车间作业计划信息不存在!"); + } + WorkOrder wo = workOrderService.getById(wp.getWoId()); + if (wo == null) { + throw new BusinessException("车间订单信息不存在!"); + } + YieldOrder yo = yieldOrderMapper.selectById(wo.getYoId()); + if (yo == null) { + throw new BusinessException("生产订单信息不存在!"); + } + BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId()); + if (processSet == null) { + throw new BusinessException("工序信息不存在!"); + } + String findUserCode = null; + String checkUserCode = bladeUser.getAccount(); + if (wc.getCheckUserId() != null) { + R findUserR = userClient.userInfo(wc.getCheckUserId()); + if (findUserR.isSuccess()) { + UserInfo findUserInfo = findUserR.getData(); + findUserCode = findUserInfo.getUser().getAccount(); + } + } + boolean qualityProblem = false; + if (rs.getIsQualityProblem() == 1L) { + qualityProblem = true; + } + ReviewSheetDTO dto = new ReviewSheetDTO(wo.getBatchNo(), wo.getWoCode(), checkUserCode, + wc.getPoorReason(), yo.getProductIdent(), yo.getPartCode(), yo.getPartName(), wo.getMakeQty(), rs.getUpCode(), + rs.getScale() == null ? "" : rs.getScale().toString(), qualityProblem, rs.getUnqualifiedQty() == null ? 0 : rs.getUnqualifiedQty().intValue(), rs.getReviewOrderMode() == null ? "" : rs.getReviewOrderMode().toString(), + wp.getOrders(), processSet.getName(), + findUserCode, rs.getSubmitType() == null ? "" : rs.getSubmitType().toString()); //checkDate + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + List vods = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(rdList)) { + int index = 1; + for (ReviewDuty rd : rdList) { + vods.add(new ReviewDutyDTO(null, index + "", + rd.getDutyPart(), rd.getDutyBatch(), rd.getRelevantPart(), + rd.getRelevantBatch(), rd.getMemo(), rd.getQty(), rd.getUnit())); + index++; + } + } + List vofs = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(rfList)) { + int index = 1; + for (ReviewFault rf : rfList) { + vofs.add(new ReviewFaultDTO(null, index + "", rf.getNgType2Id() == null ? "" : rf.getNgType2Id().toString(), rf.getNgType3Id() == null ? "" : rf.getNgType3Id().toString(), + rf.getNgType4Id() == null ? "" : rf.getNgType4Id().toString(), rf.getScale() == null ? "" : rf.getScale().toString(), rf.getQty() == null ? 0 :rf.getQty().intValue(), rf.getMemo())); + index++; + } + } + JSONObject obj = new JSONObject(); + obj.put("qmsRepairApplyDTO", dto); + obj.put("qmsRepairPartList", vods); + obj.put("qmsRepairMalfList", vofs); + HttpEntity entity = new HttpEntity<>(obj, headers); + ResponseEntity responseEntity; + JSONObject responseBody; + try { + responseEntity = httpClientTemplate.postForEntity(newErpUrl + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); + JSONObject result = responseEntity.getBody(); + if (result == null || !result.getString("retCode").equals("200")) { + throw new ServiceException("审理单接口调用失败,原因:" + result.getString("errorDesc")); + } + responseBody = result.getJSONObject("responseBody"); + if (responseBody == null) { + throw new ServiceException("审理单,接口返回值null"); + } + } catch (Exception e) { + throw new ServiceException("审理单调用异常,原因:" + e.getMessage()); + } + return responseBody; + } + @Override public R reviewSelf(Long id, Integer selfReviewFlag, String memo) { // 参数校验