From 8a971128bc027b82d6f734bedf494cfa32de607d Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Thu, 5 Mar 2026 11:52:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A7=BD=E6=B6=B2=E5=AF=BC=E5=85=A5=E5=88=86?= =?UTF-8?q?=E6=9E=90=E5=91=A8=E6=9C=9F=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=A4=84=E7=90=86=EF=BC=8C=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LiquidTankController.java | 66 ++----- .../desk/quality/excel/LiquidTankExcel.java | 10 +- .../quality/service/ILiquidTankService.java | 2 + .../service/impl/LiquidTankServiceImpl.java | 161 ++++++++++++++++++ .../desk/quality/util/FullMergeExcelUtil.java | 3 +- 5 files changed, 181 insertions(+), 61 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java index 8d7a33ec..b5c64cd1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java @@ -43,9 +43,13 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -285,61 +289,11 @@ public class LiquidTankController extends BladeController { public R importExcel(@RequestParam("file") MultipartFile file) { List noticeList = new ArrayList<>(); List list = ExcelUtil.read(file, LiquidTankExcel.class); - list.forEach(noticeExcel -> { - - LiquidTank notice = BeanUtil.copy(noticeExcel, LiquidTank.class); - //工作中心 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("WC_NAME",noticeExcel.getWorkCenterName()); - List centers = centerService.list(queryWrapper); - if(null != centers && centers.size() > 0){ - notice.setWorkCenterId(centers.get(0).getId()); - } - //作业槽 - QueryWrapper queryWrappertank = new QueryWrapper<>(); - queryWrappertank.eq("NAME",noticeExcel.getWorkTankName()); - List tanks = tankService.list(queryWrappertank); - if(null != tanks && tanks.size() > 0){ - notice.setWorkTankId(tanks.get(0).getId()); - } - //加药量计算公式 - QueryWrapper queryWrapperformulaadd = new QueryWrapper<>(); - queryWrapperformulaadd.eq("NAME",noticeExcel.getAddDrugFormulaName()); - queryWrapperformulaadd.eq("FORMULA_TYPE","1"); - List adds = formulaService.list(queryWrapperformulaadd); - if(null != adds && adds.size() > 0){ - notice.setAddDrugFormulaId(adds.get(0).getId()); - } + R result = service.importExcel(list); + return result; + - //添加后理论值计算公式 - QueryWrapper queryWrapperformulaafter = new QueryWrapper<>(); - queryWrapperformulaafter.eq("NAME",noticeExcel.getAfterTheoryFormulaName()); - queryWrapperformulaafter.eq("FORMULA_TYPE","2"); - List afters = formulaService.list(queryWrapperformulaafter); - if(null != afters && afters.size() > 0){ - notice.setAfterTheoryFormulaId(afters.get(0).getId()); - } - //化验人 - List tests = iUserClient.listByNameNolike(noticeExcel.getTestUserName()); - if(null != tests && tests.size() > 0){ - notice.setTestUserId(tests.get(0).getId()); - } - //工艺主管 - List process = iUserClient.listByNameNolike(noticeExcel.getProcessUserName()); - if(null != process && process.size() > 0){ - notice.setProcessUserId(process.get(0).getId()); - } - //班组 - QueryWrapper queryWrapperteam = new QueryWrapper<>(); - queryWrapperteam.eq("TS_NAME",noticeExcel.getTeamName()); - List teams = teamService.list(queryWrapperteam); - if(null != teams && teams.size() > 0){ - notice.setTeamId(teams.get(0).getId()); - } - noticeList.add(notice); - }); - return R.status(service.saveBatch(noticeList)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java index b3e0b1c3..c55ad04d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java @@ -342,25 +342,27 @@ public class LiquidTankExcel implements Serializable { * 生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON */ @ColumnWidth(20) - @ExcelProperty("生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON") +// @ExcelProperty("生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON") + @ExcelProperty("生成周期类型:[1]:每周;[2]:每月;[3]:每年;") private Long jobType; +// private String jobTypeName; /** * 定时WEEK值 */ @ColumnWidth(20) - @ExcelProperty("定时WEEK值") + @ExcelProperty("每周") private String jobTypeWeekValue; /** * 定时MONTH值 */ @ColumnWidth(20) - @ExcelProperty("定时MONTH值") + @ExcelProperty("每月") private String jobTypeMonthValue; /** * 定时YEAR值 */ @ColumnWidth(20) - @ExcelProperty("定时YEAR值") + @ExcelProperty("每年") private String jobTypeYearValue; /** * 生成任务 json config diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankService.java index a593ba7d..59c5f561 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankService.java @@ -21,6 +21,8 @@ import java.util.List; */ public interface ILiquidTankService extends BaseService { + R importExcel(List list); + /** * 自定义分页 * diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java index 1d0c988a..86e44fb5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java @@ -4,6 +4,7 @@ package org.springblade.desk.quality.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; import lombok.AllArgsConstructor; @@ -12,6 +13,7 @@ import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.pojo.entity.Formula; import org.springblade.desk.basic.pojo.entity.TeamSet; @@ -28,9 +30,12 @@ import org.springblade.desk.quality.pojo.vo.LiquidTankVO; import org.springblade.desk.quality.service.ILiquidTankService; import org.springblade.desk.basic.util.IdUtil; import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; import org.springblade.system.pojo.entity.UserInfo; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -58,6 +63,162 @@ public class LiquidTankServiceImpl extends BaseServiceImpl list) { + List noticeList = new ArrayList<>(); + + for(LiquidTankExcel excel:list) { + + Long jobType = excel.getJobType(); + String jobTypeWeekValue = excel.getJobTypeWeekValue(); + String jobTypeMonthValue = excel.getJobTypeMonthValue(); + String jobTypeYearValue = excel.getJobTypeYearValue(); + int count = 0; + if (jobTypeWeekValue != null && !jobTypeWeekValue.trim().isEmpty()) { + count++; + } + if (jobTypeMonthValue != null && !jobTypeMonthValue.trim().isEmpty()) { + count++; + } + + if (jobTypeYearValue != null && !jobTypeYearValue.trim().isEmpty()) { + count++; + } + if(count > 1){ + return R.fail("只能输入一个周期类型值"); + } + + if(jobType == 1){ + if (jobTypeWeekValue == null || jobTypeWeekValue.trim().isEmpty()) { + return R.fail("当前周期类型是周,请填写每周数据"); + } + List weekList = Func.toStrList(jobTypeWeekValue); + for(String week:weekList){ + try { + Integer.parseInt(week); + } catch (Exception e) { + return R.fail("周期为周的每周数据格式不正确"); + } + if (week.matches("[1-7]")) { + } else { + return R.fail("周期为周的每周数据格式不正确"); + } + } + } + + + if(jobType == 2){ + if (jobTypeMonthValue == null || jobTypeMonthValue.trim().isEmpty()) { + return R.fail("当前周期类型是月,请填写每月数据"); + } + List monthList = Func.toStrList(jobTypeMonthValue); + for(String month:monthList){ + try { + Integer.parseInt(month); + } catch (Exception e) { + return R.fail("周期为月的每月数据格式不正确"); + } + if (Integer.parseInt(month)>=1 && Integer.parseInt(month)<=12) { + } else { + return R.fail("周期为月的每月数据格式不正确"); + } + } + } + + if(jobType == 3){ + if (jobTypeYearValue == null || jobTypeYearValue.trim().isEmpty()) { + return R.fail("当前周期类型是年,请填写每年数据"); + } + + List yearList = Func.toStrList(jobTypeYearValue); + + + + for (String date : yearList) { + List< String> dates = Arrays.asList(date.split("/")); + + String month = dates.get(0); + String day = dates.get(1); + + try { + Integer.parseInt(month); + Integer.parseInt(day); + } catch (Exception e) { + return R.fail("周期为年的每年数据格式不正确"); + } + if (Integer.parseInt(month)>=1 && Integer.parseInt(month)<=12) { + if(Integer.parseInt(day)>=1 && Integer.parseInt(day)<=31){ + }else{ + return R.fail("周期为年的每年数据格式不正确"); + } + } else { + return R.fail("周期为年的每年数据格式不正确"); + } + + } + } + } + + + list.forEach(noticeExcel -> { + + LiquidTank notice = BeanUtil.copy(noticeExcel, LiquidTank.class); + //工作中心 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("WC_NAME",noticeExcel.getWorkCenterName()); + List centers = workCenterService.list(queryWrapper); + if(null != centers && centers.size() > 0){ + notice.setWorkCenterId(centers.get(0).getId()); + } + + //作业槽 + QueryWrapper queryWrappertank = new QueryWrapper<>(); + queryWrappertank.eq("NAME",noticeExcel.getWorkTankName()); + List tanks = workTankService.list(queryWrappertank); + if(null != tanks && tanks.size() > 0){ + notice.setWorkTankId(tanks.get(0).getId()); + } + //加药量计算公式 + QueryWrapper queryWrapperformulaadd = new QueryWrapper<>(); + queryWrapperformulaadd.eq("NAME",noticeExcel.getAddDrugFormulaName()); + queryWrapperformulaadd.eq("FORMULA_TYPE","1"); + List adds = formulaService.list(queryWrapperformulaadd); + if(null != adds && adds.size() > 0){ + notice.setAddDrugFormulaId(adds.get(0).getId()); + } + + //添加后理论值计算公式 + QueryWrapper queryWrapperformulaafter = new QueryWrapper<>(); + queryWrapperformulaafter.eq("NAME",noticeExcel.getAfterTheoryFormulaName()); + queryWrapperformulaafter.eq("FORMULA_TYPE","2"); + List afters = formulaService.list(queryWrapperformulaafter); + if(null != afters && afters.size() > 0){ + notice.setAfterTheoryFormulaId(afters.get(0).getId()); + } + //化验人 + List tests = userClient.listByNameNolike(noticeExcel.getTestUserName()); + if(null != tests && tests.size() > 0){ + notice.setTestUserId(tests.get(0).getId()); + } + //工艺主管 + List process = userClient.listByNameNolike(noticeExcel.getProcessUserName()); + if(null != process && process.size() > 0){ + notice.setProcessUserId(process.get(0).getId()); + } + //班组 + QueryWrapper queryWrapperteam = new QueryWrapper<>(); + queryWrapperteam.eq("TS_NAME",noticeExcel.getTeamName()); + List teams = teamSetService.list(queryWrapperteam); + if(null != teams && teams.size() > 0){ + notice.setTeamId(teams.get(0).getId()); + } + + + noticeList.add(notice); + }); + return R.data(this.saveBatch(noticeList)); + } + @Override public IPage selectLiquidTankPage(IPage page, LiquidTankVO liquidTank) { return page.setRecords(baseMapper.selectLiquidTankPage(page, liquidTank)); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/FullMergeExcelUtil.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/FullMergeExcelUtil.java index 3bfa563c..77ed2cc4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/FullMergeExcelUtil.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/FullMergeExcelUtil.java @@ -54,7 +54,8 @@ public class FullMergeExcelUtil { Cell cell = columnTitleRow.createCell(i); cell.setCellValue(columnTitles[i]); cell.setCellStyle(columnTitleStyle); - sheet.autoSizeColumn(i); + sheet.setColumnWidth(i, 12 * 256); +// sheet.autoSizeColumn(i); } // -------------------------- 第三步:填充User实体数据 --------------------------