槽液导入分析周期业务逻辑处理,数据校验

liweidong
pangyang 1 month ago
parent 56bd1853c9
commit 8a971128bc
  1. 66
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankController.java
  2. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java
  3. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankService.java
  4. 161
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankServiceImpl.java
  5. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/util/FullMergeExcelUtil.java

@ -43,9 +43,13 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList; import java.text.SimpleDateFormat;
import java.util.List; import java.time.LocalDate;
import java.util.Map; 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; import java.util.stream.Collectors;
/** /**
@ -285,61 +289,11 @@ public class LiquidTankController extends BladeController {
public R importExcel(@RequestParam("file") MultipartFile file) { public R importExcel(@RequestParam("file") MultipartFile file) {
List<LiquidTank> noticeList = new ArrayList<>(); List<LiquidTank> noticeList = new ArrayList<>();
List<LiquidTankExcel> list = ExcelUtil.read(file, LiquidTankExcel.class); List<LiquidTankExcel> list = ExcelUtil.read(file, LiquidTankExcel.class);
list.forEach(noticeExcel -> {
LiquidTank notice = BeanUtil.copy(noticeExcel, LiquidTank.class);
//工作中心
QueryWrapper<WorkCenter> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("WC_NAME",noticeExcel.getWorkCenterName());
List<WorkCenter> centers = centerService.list(queryWrapper);
if(null != centers && centers.size() > 0){
notice.setWorkCenterId(centers.get(0).getId());
}
//作业槽 R result = service.importExcel(list);
QueryWrapper<WorkTank> queryWrappertank = new QueryWrapper<>(); return result;
queryWrappertank.eq("NAME",noticeExcel.getWorkTankName());
List<WorkTank> tanks = tankService.list(queryWrappertank);
if(null != tanks && tanks.size() > 0){
notice.setWorkTankId(tanks.get(0).getId());
}
//加药量计算公式
QueryWrapper<Formula> queryWrapperformulaadd = new QueryWrapper<>();
queryWrapperformulaadd.eq("NAME",noticeExcel.getAddDrugFormulaName());
queryWrapperformulaadd.eq("FORMULA_TYPE","1");
List<Formula> adds = formulaService.list(queryWrapperformulaadd);
if(null != adds && adds.size() > 0){
notice.setAddDrugFormulaId(adds.get(0).getId());
}
//添加后理论值计算公式
QueryWrapper<Formula> queryWrapperformulaafter = new QueryWrapper<>();
queryWrapperformulaafter.eq("NAME",noticeExcel.getAfterTheoryFormulaName());
queryWrapperformulaafter.eq("FORMULA_TYPE","2");
List<Formula> afters = formulaService.list(queryWrapperformulaafter);
if(null != afters && afters.size() > 0){
notice.setAfterTheoryFormulaId(afters.get(0).getId());
}
//化验人
List<User> tests = iUserClient.listByNameNolike(noticeExcel.getTestUserName());
if(null != tests && tests.size() > 0){
notice.setTestUserId(tests.get(0).getId());
}
//工艺主管
List<User> process = iUserClient.listByNameNolike(noticeExcel.getProcessUserName());
if(null != process && process.size() > 0){
notice.setProcessUserId(process.get(0).getId());
}
//班组
QueryWrapper<TeamSet> queryWrapperteam = new QueryWrapper<>();
queryWrapperteam.eq("TS_NAME",noticeExcel.getTeamName());
List<TeamSet> 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));
} }

@ -342,25 +342,27 @@ public class LiquidTankExcel implements Serializable {
* 生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON * 生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON") // @ExcelProperty("生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON")
@ExcelProperty("生成周期类型:[1]:每周;[2]:每月;[3]:每年;")
private Long jobType; private Long jobType;
// private String jobTypeName;
/** /**
* 定时WEEK值 * 定时WEEK值
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("定时WEEK值") @ExcelProperty("每周")
private String jobTypeWeekValue; private String jobTypeWeekValue;
/** /**
* 定时MONTH值 * 定时MONTH值
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("定时MONTH值") @ExcelProperty("每月")
private String jobTypeMonthValue; private String jobTypeMonthValue;
/** /**
* 定时YEAR值 * 定时YEAR值
*/ */
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("定时YEAR值") @ExcelProperty("每年")
private String jobTypeYearValue; private String jobTypeYearValue;
/** /**
* 生成任务 json config * 生成任务 json config

@ -21,6 +21,8 @@ import java.util.List;
*/ */
public interface ILiquidTankService extends BaseService<LiquidTank> { public interface ILiquidTankService extends BaseService<LiquidTank> {
R importExcel(List<LiquidTankExcel> list);
/** /**
* 自定义分页 * 自定义分页
* *

@ -4,6 +4,7 @@
package org.springblade.desk.quality.service.impl; package org.springblade.desk.quality.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -12,6 +13,7 @@ import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.pojo.entity.Formula; import org.springblade.desk.basic.pojo.entity.Formula;
import org.springblade.desk.basic.pojo.entity.TeamSet; 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.quality.service.ILiquidTankService;
import org.springblade.desk.basic.util.IdUtil; import org.springblade.desk.basic.util.IdUtil;
import org.springblade.system.feign.IUserClient; import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springblade.system.pojo.entity.UserInfo; import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -58,6 +63,162 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq
@Resource @Resource
private ITeamSetService teamSetService; private ITeamSetService teamSetService;
@Override
public R importExcel(List<LiquidTankExcel> list) {
List<LiquidTank> 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<String> 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<String> 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<String> 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<WorkCenter> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("WC_NAME",noticeExcel.getWorkCenterName());
List<WorkCenter> centers = workCenterService.list(queryWrapper);
if(null != centers && centers.size() > 0){
notice.setWorkCenterId(centers.get(0).getId());
}
//作业槽
QueryWrapper<WorkTank> queryWrappertank = new QueryWrapper<>();
queryWrappertank.eq("NAME",noticeExcel.getWorkTankName());
List<WorkTank> tanks = workTankService.list(queryWrappertank);
if(null != tanks && tanks.size() > 0){
notice.setWorkTankId(tanks.get(0).getId());
}
//加药量计算公式
QueryWrapper<Formula> queryWrapperformulaadd = new QueryWrapper<>();
queryWrapperformulaadd.eq("NAME",noticeExcel.getAddDrugFormulaName());
queryWrapperformulaadd.eq("FORMULA_TYPE","1");
List<Formula> adds = formulaService.list(queryWrapperformulaadd);
if(null != adds && adds.size() > 0){
notice.setAddDrugFormulaId(adds.get(0).getId());
}
//添加后理论值计算公式
QueryWrapper<Formula> queryWrapperformulaafter = new QueryWrapper<>();
queryWrapperformulaafter.eq("NAME",noticeExcel.getAfterTheoryFormulaName());
queryWrapperformulaafter.eq("FORMULA_TYPE","2");
List<Formula> afters = formulaService.list(queryWrapperformulaafter);
if(null != afters && afters.size() > 0){
notice.setAfterTheoryFormulaId(afters.get(0).getId());
}
//化验人
List<User> tests = userClient.listByNameNolike(noticeExcel.getTestUserName());
if(null != tests && tests.size() > 0){
notice.setTestUserId(tests.get(0).getId());
}
//工艺主管
List<User> process = userClient.listByNameNolike(noticeExcel.getProcessUserName());
if(null != process && process.size() > 0){
notice.setProcessUserId(process.get(0).getId());
}
//班组
QueryWrapper<TeamSet> queryWrapperteam = new QueryWrapper<>();
queryWrapperteam.eq("TS_NAME",noticeExcel.getTeamName());
List<TeamSet> 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 @Override
public IPage<LiquidTankVO> selectLiquidTankPage(IPage<LiquidTankVO> page, LiquidTankVO liquidTank) { public IPage<LiquidTankVO> selectLiquidTankPage(IPage<LiquidTankVO> page, LiquidTankVO liquidTank) {
return page.setRecords(baseMapper.selectLiquidTankPage(page, liquidTank)); return page.setRecords(baseMapper.selectLiquidTankPage(page, liquidTank));

@ -54,7 +54,8 @@ public class FullMergeExcelUtil {
Cell cell = columnTitleRow.createCell(i); Cell cell = columnTitleRow.createCell(i);
cell.setCellValue(columnTitles[i]); cell.setCellValue(columnTitles[i]);
cell.setCellStyle(columnTitleStyle); cell.setCellStyle(columnTitleStyle);
sheet.autoSizeColumn(i); sheet.setColumnWidth(i, 12 * 256);
// sheet.autoSizeColumn(i);
} }
// -------------------------- 第三步:填充User实体数据 -------------------------- // -------------------------- 第三步:填充User实体数据 --------------------------

Loading…
Cancel
Save