From 03fef7af495a0eafc85bad5bbe6434a7c5a52a1f Mon Sep 17 00:00:00 2001 From: piaobo <1913856125@qq.com> Date: Tue, 28 Oct 2025 21:16:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=BB=E7=96=97=E8=AE=B0=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E8=AE=B8=E9=87=8D=E5=A4=8D=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/zhyc/SheepApplication.java | 3 +- .../module/Exception/BusinessException.java | 8 ++ .../domain/SwMedicineUsageDetails.java | 2 +- .../module/biosafety/domain/Treatment.java | 12 +- .../service/impl/TreatmentServiceImpl.java | 132 ++++++++++++------ .../biosafety/SwMedicineUsageMapper.xml | 26 ++-- 6 files changed, 126 insertions(+), 57 deletions(-) create mode 100644 zhyc-module/src/main/java/com/zhyc/module/Exception/BusinessException.java diff --git a/zhyc-admin/src/main/java/com/zhyc/SheepApplication.java b/zhyc-admin/src/main/java/com/zhyc/SheepApplication.java index ec34567..0635451 100644 --- a/zhyc-admin/src/main/java/com/zhyc/SheepApplication.java +++ b/zhyc-admin/src/main/java/com/zhyc/SheepApplication.java @@ -10,8 +10,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; * @author ruoyi */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) -public class SheepApplication -{ +public class SheepApplication { public static void main(String[] args) { // System.setProperty("spring.devtools.restart.enabled", "false"); diff --git a/zhyc-module/src/main/java/com/zhyc/module/Exception/BusinessException.java b/zhyc-module/src/main/java/com/zhyc/module/Exception/BusinessException.java new file mode 100644 index 0000000..68deb51 --- /dev/null +++ b/zhyc-module/src/main/java/com/zhyc/module/Exception/BusinessException.java @@ -0,0 +1,8 @@ +package com.zhyc.module.Exception; + +// 业务异常 +public class BusinessException extends RuntimeException { + public BusinessException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsageDetails.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsageDetails.java index 94ba417..1ccd0b3 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsageDetails.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/SwMedicineUsageDetails.java @@ -50,7 +50,7 @@ public class SwMedicineUsageDetails extends BaseEntity private String usageId; /** 使用时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") // @Excel(name = "使用时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date usetime; diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java index 657abba..2fc778f 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/domain/Treatment.java @@ -107,8 +107,16 @@ public class Treatment extends BaseEntity @Excel(name = "备注") private String comment; public void setGender(String gender) { - this.gender = gender; - this.genderName = Gender.getDescByCode(Integer.valueOf(gender)); + this.gender = gender; // 保留原始字符串 + this.genderName = null; // 先清空 + if (gender != null && !gender.trim().isEmpty()) { + try { + this.genderName = Gender.getDescByCode(Integer.valueOf(gender.trim())); + } catch (NumberFormatException ex) { + // 可选:记录日志、或抛业务异常 + this.genderName = "未知"; + } + } } // 排序查询 diff --git a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java index abb7d57..da29233 100644 --- a/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java +++ b/zhyc-module/src/main/java/com/zhyc/module/biosafety/service/impl/TreatmentServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import com.zhyc.common.utils.DateUtils; import com.zhyc.common.utils.SecurityUtils; import com.zhyc.common.utils.bean.BeanUtils; +import com.zhyc.module.Exception.BusinessException; import com.zhyc.module.base.domain.SheepFile; import com.zhyc.module.base.mapper.SheepFileMapper; import com.zhyc.module.biosafety.domain.Diagnosis; @@ -71,16 +72,16 @@ public class TreatmentServiceImpl implements ITreatmentService /** * 新增治疗记录 - * + * * @param treatment 治疗记录 * @return 结果 */ @Override @Transactional - public int insertTreatment(Treatment treatment) - { + public int insertTreatment(Treatment treatment) { String username = SecurityUtils.getLoginUser().getUser().getNickName(); -// 使用记录的文件 + + // 药品使用记录公共字段 SwMedicineUsage medicineUsage = new SwMedicineUsage(); medicineUsage.setSwMedicineUsageDetailsList(treatment.getUsageDetails()); medicineUsage.setName("羊只治疗"); @@ -88,52 +89,97 @@ public class TreatmentServiceImpl implements ITreatmentService medicineUsage.setDatetime(treatment.getDatetime()); medicineUsage.setCreateBy(username); medicineUsage.setCreateTime(DateUtils.getNowDate()); -// 新增单挑数据 - if (treatment.getSheepId()!=null){ - medicineUsage.setSheepId(Math.toIntExact(treatment.getSheepId())); -// 药品使用记录 - Integer id=medicineUsageService.insertSwMedicineUsage(medicineUsage); -// 药品使用记录id - treatment.setUsageId(id); - treatment.setCreateTime(DateUtils.getNowDate()); - return treatmentMapper.insertTreatment(treatment); -// 批量新增 - }else { + /* ---------------- 单只插入 ---------------- */ + if (treatment.getSheepId() != null) { + // 1. 重复校验 + Treatment query = new Treatment(); + query.setDiseaseId(treatment.getDiseaseId()); + query.setDiseasePid(treatment.getDiseasePid()); + query.setSheepId(treatment.getSheepId()); + query.setStatus("0"); - List treatments = new ArrayList<>(); - treatment.setCreateTime(DateUtils.getNowDate()); - for (String sheepId : treatment.getSheepIds()) { - SheepFile sheepFile = sheepFileMapper.selectSheepFileById(Long.valueOf(sheepId)); - Treatment treat = new Treatment(); - BeanUtils.copyProperties(treatment, treat); - treat.setSheepId(Long.valueOf(sheepId)); - treat.setVariety(sheepFile.getVariety()); - treat.setSheepType(sheepFile.getName()); - treat.setMonthAge(sheepFile.getMonthAge()); - treat.setGender(String.valueOf(sheepFile.getGender())); - treat.setBreed(sheepFile.getBreed()); - treat.setParity(sheepFile.getParity()); - treat.setLactDay(sheepFile.getLactationDay()); - treat.setGestDay(sheepFile.getGestationDay()); - medicineUsage.setSheepId(Integer.valueOf(sheepId)); -// 获取药品使用记录的id - Integer usageId = medicineUsageService.insertSwMedicineUsage(medicineUsage); - System.out.println(medicineUsage); - System.out.println(usageId); - treat.setUsageId(usageId); - treatments.add(treat); + + // 2. 羊只档案信息 + SheepFile sheepFile = sheepFileMapper.selectSheepFileById(treatment.getSheepId()); + + if (!treatmentMapper.selectTreatmentList(query).isEmpty()) { + throw new BusinessException("该羊只已存在相同疾病的治疗记录,不能重复添加"); } -// 药品使用记录 - medicineUsage.setSwMedicineUsageDetailsList(treatment.getUsageDetails()); + // 3. 保存药品使用记录 + medicineUsage.setSheepId(Math.toIntExact(treatment.getSheepId())); + Integer usageId = medicineUsageService.insertSwMedicineUsage(medicineUsage); + // 4. 组装治疗记录 + treatment.setUsageId(usageId); + treatment.setCreateTime(DateUtils.getNowDate()); + treatment.setVariety(sheepFile.getVariety()); + treatment.setSheepType(sheepFile.getName()); + treatment.setMonthAge(sheepFile.getMonthAge()); + treatment.setGender(String.valueOf(sheepFile.getGender())); + treatment.setBreed(sheepFile.getBreed()); + treatment.setParity(sheepFile.getParity()); + treatment.setLactDay(sheepFile.getLactationDay()); + treatment.setGestDay(sheepFile.getGestationDay()); - return treatmentMapper.insertTreatmentList(treatments); + // 5. 插入 + return treatmentMapper.insertTreatment(treatment); } - } + /* ---------------- 批量插入 ---------------- */ + // 1. 收集所有重复耳号 + List duplicateSheepIds = new ArrayList<>(); + for (String sheepId : treatment.getSheepIds()) { + Treatment query = new Treatment(); + query.setDiseaseId(treatment.getDiseaseId()); + query.setDiseasePid(treatment.getDiseasePid()); + query.setSheepId(Long.valueOf(sheepId)); + query.setStatus("0"); + if (!treatmentMapper.selectTreatmentList(query).isEmpty()) { + String bsManageTags = sheepFileMapper.selectSheepFileById(Long.valueOf(sheepId)).getBsManageTags(); + duplicateSheepIds.add(bsManageTags); + } + } + + // 2. 存在重复则一次性提示 + if (!duplicateSheepIds.isEmpty()) { + + throw new BusinessException("以下耳号已存在相同疾病记录,无法添加:" + String.join("、", duplicateSheepIds)); + } + + // 3. 全部合法,开始批量组装 + List treatments = new ArrayList<>(); + treatment.setCreateTime(DateUtils.getNowDate()); + + for (String sheepId : treatment.getSheepIds()) { + SheepFile sheepFile = sheepFileMapper.selectSheepFileById(Long.valueOf(sheepId)); + + Treatment treat = new Treatment(); + BeanUtils.copyProperties(treatment, treat); + + treat.setSheepId(Long.valueOf(sheepId)); + treat.setVariety(sheepFile.getVariety()); + treat.setSheepType(sheepFile.getName()); + treat.setMonthAge(sheepFile.getMonthAge()); + treat.setGender(String.valueOf(sheepFile.getGender())); + treat.setBreed(sheepFile.getBreed()); + treat.setParity(sheepFile.getParity()); + treat.setLactDay(sheepFile.getLactationDay()); + treat.setGestDay(sheepFile.getGestationDay()); + + // 药品使用记录 + medicineUsage.setSheepId(Integer.valueOf(sheepId)); + Integer usageId = medicineUsageService.insertSwMedicineUsage(medicineUsage); + treat.setUsageId(usageId); + + treatments.add(treat); + } + + // 4. 批量插入 + return treatmentMapper.insertTreatmentList(treatments); + } /** * 修改治疗记录 * @@ -153,7 +199,9 @@ public class TreatmentServiceImpl implements ITreatmentService swMedicineUsage.setId(treatment.getUsageId()); swMedicineUsage.setUpdateBy(username); medicineUsageMapper.updateSwMedicineUsage(swMedicineUsage); - medicineUsageMapper.batchSwMedicineUsageDetails(treatment.getUsageDetails()); + if (!treatment.getUsageDetails().isEmpty() || treatment.getUsageDetails().size() != 0){ + medicineUsageMapper.batchSwMedicineUsageDetails(treatment.getUsageDetails()); + } treatment.setUpdateBy(username); treatment.setUpdateTime(DateUtils.getNowDate()); return treatmentMapper.updateTreatment(treatment); diff --git a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml index dac1a70..4089456 100644 --- a/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml +++ b/zhyc-module/src/main/resources/mapper/biosafety/SwMedicineUsageMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -96,7 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY smu.datetime DESC - +