From fa1105ccf2ee6a6a7b2cfd5760a2f30a0ed99752 Mon Sep 17 00:00:00 2001 From: hongchao <3228015117@qq.com> Date: Sat, 6 Sep 2025 18:10:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E9=AA=8C=E6=8A=A5=E5=91=8A=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ma/controller/MachineController.java | 24 +++ .../com/bonus/material/ma/domain/Machine.java | 2 + .../material/ma/domain/vo/SampleSync.java | 8 + .../material/ma/mapper/MachineMapper.java | 13 ++ .../material/ma/service/IMachineService.java | 5 + .../ma/service/impl/MachineServiceImpl.java | 148 +++++++++++++++++- .../mapper/material/ma/MachineMapper.xml | 106 +++++++++++++ 7 files changed, 298 insertions(+), 8 deletions(-) diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MachineController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MachineController.java index 58f079f5..fa319793 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MachineController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/MachineController.java @@ -12,6 +12,7 @@ import com.bonus.common.biz.domain.lease.LeaseApplyInfo; import com.bonus.common.log.enums.OperaType; import com.bonus.material.basic.domain.BmQrcodeInfo; import com.bonus.material.common.annotation.PreventRepeatSubmit; +import com.bonus.material.ma.domain.MachineSynch; import com.bonus.material.ma.domain.Type; import com.bonus.material.ma.domain.vo.MachineVo; import com.bonus.material.ma.domain.vo.SampleSync; @@ -315,6 +316,29 @@ public class MachineController extends BaseController { return machineService.synchReport(machine); } + + /** + * 查询检验报告同步记录 + */ + @ApiOperation(value = "查询检验报告同步记录") + //@RequiresPermissions("ma:machine:list") + @GetMapping("/getSynchList") + public TableDataInfo getSynchList(MachineSynch machine) { + startPage(); + List list = machineService.selectSynchList(machine); + return getDataTable(list); + } + + + @ApiOperation(value = "查询检验报告同步记录") + //@RequiresPermissions("ma:machine:list") + @GetMapping("/getSynchDetailList") + public TableDataInfo getSynchDetailList(MachineSynch machine) { + startPage(); + List list = machineService.selectSynchDetailList(machine); + return getDataTable(list); + } + /** * 固定资产编号录入 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/Machine.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/Machine.java index 48ae5559..26744c15 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/Machine.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/Machine.java @@ -35,6 +35,8 @@ public class Machine extends BaseEntity { */ private Long maId; + private Long userId; + /** * 类型ID */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/SampleSync.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/SampleSync.java index ad096460..e5a45650 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/SampleSync.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/SampleSync.java @@ -44,4 +44,12 @@ public class SampleSync extends BaseEntity private String reportName; private String reportNum; + + private int maStatus; + + private int isSuccess; + + private String typeNameCode; + + private int parentId; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/MachineMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/MachineMapper.java index 7b3f28a7..874afaf9 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/MachineMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/MachineMapper.java @@ -7,6 +7,7 @@ import com.bonus.common.biz.domain.lease.LeaseOutDetails; import com.bonus.material.basic.domain.BmQrBoxInfo; import com.bonus.material.basic.domain.dto.BoxBindWarehouseDto; import com.bonus.material.ma.domain.Machine; +import com.bonus.material.ma.domain.MachineSynch; import com.bonus.material.ma.domain.Type; import com.bonus.material.ma.domain.vo.MachineVo; import com.bonus.material.ma.domain.vo.SampleSync; @@ -236,4 +237,16 @@ public interface MachineMapper * @return */ int getCountByMaCode(Machine machine); + + SampleSync getSampleList(SampleSync sampleSync); + + int batchInsertSynchDetails(@Param("list") List samples); + + List selectSynchList(MachineSynch machine); + + List getBigList(List samples); + + void insertInfo(Machine machine); + + List selectSynchDetailList(MachineSynch machine); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/IMachineService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/IMachineService.java index fff2e549..c04aa384 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/IMachineService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/IMachineService.java @@ -6,6 +6,7 @@ import com.bonus.common.biz.domain.lease.LeaseApplyInfo; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo; import com.bonus.material.ma.domain.Machine; +import com.bonus.material.ma.domain.MachineSynch; import com.bonus.material.ma.domain.Type; import com.bonus.material.ma.domain.vo.MachineVo; @@ -154,4 +155,8 @@ public interface IMachineService * @return 结果 */ AjaxResult addMaMachine(Machine machine); + + List selectSynchList(MachineSynch machine); + + List selectSynchDetailList(MachineSynch machine); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MachineServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MachineServiceImpl.java index 35d99f54..2e653722 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MachineServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/MachineServiceImpl.java @@ -1,10 +1,7 @@ package com.bonus.material.ma.service.impl; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import com.alibaba.nacos.common.utils.CollectionUtils; import com.bonus.common.biz.domain.lease.LeaseApplyInfo; @@ -12,10 +9,12 @@ import com.bonus.common.biz.enums.HttpCodeEnum; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo; import com.bonus.material.lease.domain.vo.LeaseOutVo; import com.bonus.material.lease.mapper.LeaseApplyDetailsMapper; import com.bonus.material.lease.mapper.LeaseApplyInfoMapper; +import com.bonus.material.ma.domain.MachineSynch; import com.bonus.material.ma.domain.Type; import com.bonus.material.ma.domain.vo.MachineVo; import com.bonus.material.ma.domain.vo.SampleSync; @@ -311,8 +310,17 @@ public class MachineServiceImpl implements IMachineService String nextCheckTime = machine.getNextCheckTimeSynch() + " 00:00:00"; String reportName = machine.getReportName(); String reportNum = machine.getReportNum(); + Long userId = SecurityUtils.getLoginUser().getUserid(); + machine.setUserId(userId); + //往主表插入 + Machine machineTemp = new Machine(); + machineTemp.setReportNum(machine.getReportNum()); + machineTemp.setUserId(userId); + machineMapper.insertInfo(machineTemp); + int newId = Math.toIntExact(machineTemp.getId()); List samples = machine.getSamples(); + if(samples != null && !samples.isEmpty()){ // 批量设置属性 for(SampleSync sample : samples){ @@ -321,15 +329,131 @@ public class MachineServiceImpl implements IMachineService sample.setPdf(pdfUrl); sample.setReportName(reportName); sample.setReportNum(reportNum); + sample.setTypeNameCode(sample.getSampleName() + "-" + sample.getSelfCode()); + sample.setParentId(newId); } + //找出大类ma_code + List bigList = machineMapper.getBigList(samples); + + //丢失、报废、不存在的编号都为异常,不合格 + //1.初始化分类列表 + List lostList = new ArrayList<>(); + List scrapList = new ArrayList<>(); + List notExistList = new ArrayList<>(); + List successList = new ArrayList<>(); // 原sueecssList修正拼写 + List exceptionList = new ArrayList<>(); // 新增异常列表 + + //2.构建bigList的typeNameCode映射表(优化查询效率) + Map> typeNameCodeMap = new HashMap<>(); + for (SampleSync bigItem : bigList) { + String key = bigItem.getTypeNameCode(); + typeNameCodeMap.computeIfAbsent(key, k -> new ArrayList<>()).add(bigItem); + } + + //3.遍历samples进行分类 + for (SampleSync sample : samples) { + String sampleTypeNameCode = sample.getTypeNameCode(); + List matchedBigItems = typeNameCodeMap.getOrDefault(sampleTypeNameCode, Collections.emptyList()); + + if (matchedBigItems.isEmpty()) { + //无匹配项 + sample.setResult("未发现该机具"); + sample.setIsSuccess(0); + notExistList.add(sample); + } else if (matchedBigItems.size() > 1) { + //匹配超过1个,存入异常列表 + sample.setResult("该机具编码重复"); + sample.setIsSuccess(0); + exceptionList.add(sample); + } else { + //仅匹配1个,检查maStatus + SampleSync matchedItem = matchedBigItems.get(0); + Integer maStatus = matchedItem.getMaStatus(); + + if (maStatus != null) { + // 根据现有业务逻辑,6/7/8/10代表"报废",18代表"丢失" + if (maStatus == 6 || maStatus == 7 || maStatus == 8 || maStatus == 10) { + sample.setResult("该机具已报废"); + sample.setIsSuccess(0); + scrapList.add(sample); + } else if (maStatus == 18) { + sample.setResult("该机具已丢失"); + sample.setIsSuccess(0); + lostList.add(sample); + } else { + sample.setIsSuccess(1); + // 非报废/丢失状态,暂存入成功列表(可根据实际业务调整) + successList.add(sample); + } + } else { + // maStatus为空,视为未匹配 + notExistList.add(sample); + } + } + } + + + + + + + + + +// //丢失、报废、不存在的编号都为异常,不合格 +// //1.查询过滤出来报废的机具编码 +// List lostList = new ArrayList<>(); +// List scrapList = new ArrayList<>(); +// List notExistList = new ArrayList<>(); +// List sueecssList = new ArrayList<>(); +// SampleSync sampleOne = new SampleSync(); +// for (int i = 0; i < samples.size(); i++) { +// sampleOne = machineMapper.getSampleList(samples.get(i)); +// if(sampleOne != null && (sampleOne.getMaStatus() == 6 || sampleOne.getMaStatus() == 7 || sampleOne.getMaStatus() == 8 || sampleOne.getMaStatus() == 10)){ +// samples.get(i).setResult("该机具已报废"); +// samples.get(i).setIsSuccess(0); +// scrapList.add(samples.get(i)); +// }else if(sampleOne != null && sampleOne.getMaStatus() == 18){ +// samples.get(i).setResult("该机具已报废"); +// samples.get(i).setIsSuccess(0); +// scrapList.add(samples.get(i)); +// }else if(sampleOne != null){ +// samples.get(i).setIsSuccess(1); +// sueecssList.add(samples.get(i)); +// }else{ +// samples.get(i).setResult("未发现该机具"); +// samples.get(i).setIsSuccess(0); +// notExistList.add(samples.get(i)); +// } +// } + //对数据进行汇总 + List allList = new ArrayList<>(); + allList.addAll(lostList); + allList.addAll(scrapList); + allList.addAll(notExistList); + allList.addAll(successList); + allList.addAll(exceptionList); + + // 使用批量更新 - int numAll = machineMapper.batchUpdateSynchReport(samples); - if(numAll > 0){ - return success("同步成功,更新了 " + numAll + " 条记录"); + if(successList != null && !successList.isEmpty()){ + int numAll = machineMapper.batchUpdateSynchReport(successList); + //异常和合格的都插入到记录表 + int num = machineMapper.batchInsertSynchDetails(allList); + if(numAll > 0){ + return success("同步成功,更新了 " + numAll + " 条记录"); + }else{ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return error("同步失败,暂无相关的机具编码"); + } }else{ - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + //异常和合格的都插入到记录表 + int num = machineMapper.batchInsertSynchDetails(allList); return error("同步失败,暂无相关的机具编码"); } + + + } TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return error("同步失败,暂无相关的机具编码"); @@ -634,5 +758,13 @@ public class MachineServiceImpl implements IMachineService return machineMapper.getInfoByTypeId(machine); } + @Override + public List selectSynchList(MachineSynch machine) { + return machineMapper.selectSynchList(machine); + } + @Override + public List selectSynchDetailList(MachineSynch machine) { + return machineMapper.selectSynchDetailList(machine); + } } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/MachineMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/MachineMapper.xml index d7714534..c21365f1 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/MachineMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/MachineMapper.xml @@ -1064,4 +1064,110 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE ma_code = #{maCode} and type_id = #{typeId} + + + + + + + + + INSERT INTO ma_check_details ( + parent_id, + ma_code, + check_man, + this_check_time, + next_check_time, + is_success, + reason, + ex_code, + type_name + ) + VALUES + + ( + #{item.parentId}, + #{item.selfCode}, + #{item.tester}, + #{item.checkTimeSynch}, + #{item.nextCheckTimeSynch}, + #{item.isSuccess}, + #{item.result}, + #{item.reportNum}, + #{item.sampleName} + ) + + + + insert into ma_check_info( + ex_code, + create_by, + create_time + ) + values( + #{reportNum}, + #{userId}, + NOW() + ) + +