|
|
|
|
@ -3,6 +3,8 @@ |
|
|
|
|
*/ |
|
|
|
|
package org.springblade.desk.quality.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
@ -32,11 +34,16 @@ 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.springblade.wms.feign.StRealtimeStockClient; |
|
|
|
|
import org.springblade.wms.pojo.entity.StGoods; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Arrays; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* [槽液] 服务实现类 |
|
|
|
|
@ -62,12 +69,159 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq |
|
|
|
|
private IWorkTankService workTankService; |
|
|
|
|
@Resource |
|
|
|
|
private ITeamSetService teamSetService; |
|
|
|
|
@Resource |
|
|
|
|
StRealtimeStockClient stRealtimeStockClient; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public R importExcel(List<LiquidTankExcel> list) { |
|
|
|
|
List<LiquidTank> noticeList = new ArrayList<>(); |
|
|
|
|
R r = check(list); |
|
|
|
|
if (cn.hutool.core.bean.BeanUtil.isNotEmpty(r)){ |
|
|
|
|
return r; |
|
|
|
|
} |
|
|
|
|
R<List<StGoods>> stGoods = stRealtimeStockClient.getStGoods(); |
|
|
|
|
if (!stGoods.isSuccess() || CollUtil.isEmpty(stGoods.getData())){ |
|
|
|
|
return R.fail("获取药品物料信息失败"); |
|
|
|
|
} |
|
|
|
|
List<StGoods> stGoodsList = stGoods.getData(); |
|
|
|
|
Map<String, Long> stGoodsMap = stGoodsList.stream().collect(Collectors.toMap(StGoods::getGoodsCode, StGoods::getId)); |
|
|
|
|
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()); |
|
|
|
|
} |
|
|
|
|
//化验人
|
|
|
|
|
if(noticeExcel.getTestUserName() != null && !noticeExcel.getTestUserName().trim().isEmpty()){ |
|
|
|
|
List<User> tests = userClient.listByNameNolike(noticeExcel.getTestUserName()); |
|
|
|
|
if(null != tests && tests.size() > 0){ |
|
|
|
|
notice.setTestUserId(tests.get(0).getId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//工艺主管
|
|
|
|
|
if(noticeExcel.getProcessUserName() != null && !noticeExcel.getProcessUserName().trim().isEmpty()){ |
|
|
|
|
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()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
notice.setDrugMaterialId(stGoodsMap.getOrDefault(noticeExcel.getDrugMaterialCode(),null)); |
|
|
|
|
//温度 、 ph值
|
|
|
|
|
setTemperatureAndPh(noticeExcel,notice); |
|
|
|
|
|
|
|
|
|
noticeList.add(notice); |
|
|
|
|
}); |
|
|
|
|
return R.data(this.saveBatch(noticeList)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setTemperatureAndPh(LiquidTankExcel noticeExcel, LiquidTank notice) { |
|
|
|
|
// 2026-05-29
|
|
|
|
|
notice.setTemperatureType(LiquidTank.TemperatureTypeEnum.NONE.getCode()); |
|
|
|
|
notice.setPhType(LiquidTank.PhTypeEnum.NONE.getCode()); |
|
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(noticeExcel.getTemperatureTypeStr())) { |
|
|
|
|
LiquidTank.TemperatureTypeEnum byMessage = LiquidTank.TemperatureTypeEnum.getByMessage(noticeExcel.getTemperatureTypeStr()); |
|
|
|
|
if (cn.hutool.core.bean.BeanUtil.isEmpty(byMessage)) { |
|
|
|
|
throw new RuntimeException("温度类型错误"); |
|
|
|
|
} |
|
|
|
|
notice.setTemperatureType(byMessage.getCode()); |
|
|
|
|
if (byMessage.getCode().equals(LiquidTank.TemperatureTypeEnum.TEMPERATURE_RANGE.getCode())) { |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
|
|
List<String> dates = Arrays.asList(noticeExcel.getTemperatureValue().split("-")); |
|
|
|
|
|
|
|
|
|
String l = dates.get(0); |
|
|
|
|
String r = dates.get(1); |
|
|
|
|
|
|
|
|
|
double dL = Double.parseDouble(l); |
|
|
|
|
double dR = Double.parseDouble(r); |
|
|
|
|
notice.setTemperatureRangeLeft(BigDecimal.valueOf(dL)); |
|
|
|
|
notice.setTemperatureRangeRight(BigDecimal.valueOf(dR)); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
throw new RuntimeException("周期为温度范围的温度数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (byMessage.getCode().equals(LiquidTank.TemperatureTypeEnum.INDOOR_TEMPERATURE.getCode())) { |
|
|
|
|
try { |
|
|
|
|
Double.parseDouble(noticeExcel.getTemperatureValue()); |
|
|
|
|
notice.setTemperatureInRoom(BigDecimal.valueOf(Double.parseDouble(noticeExcel.getTemperatureValue()))); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
throw new RuntimeException("周期为室内温度的室内温度数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for(LiquidTankExcel excel:list) { |
|
|
|
|
if (byMessage.getCode().equals(LiquidTank.TemperatureTypeEnum.ENVIRONMENT_TEMPERATURE.getCode())) { |
|
|
|
|
try { |
|
|
|
|
Double.parseDouble(noticeExcel.getTemperatureValue()); |
|
|
|
|
notice.setTemperatureEnv(BigDecimal.valueOf(Double.parseDouble(noticeExcel.getTemperatureValue()))); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
throw new RuntimeException("周期为环境温度的室内温度数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(noticeExcel.getPhValue())) { |
|
|
|
|
notice.setPhType(LiquidTank.PhTypeEnum.PH_VALUE_RANGE.getCode()); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
List<String> dates = Arrays.asList(noticeExcel.getPhValue().split("-")); |
|
|
|
|
String l = dates.get(0); |
|
|
|
|
String r = dates.get(1); |
|
|
|
|
|
|
|
|
|
double dL = Double.parseDouble(l); |
|
|
|
|
double dR = Double.parseDouble(r); |
|
|
|
|
notice.setPhRangeLeft(BigDecimal.valueOf(dL)); |
|
|
|
|
notice.setPhRangeRight(BigDecimal.valueOf(dR)); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
throw new RuntimeException("ph值范围数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private R check(List<LiquidTankExcel> noticeList) { |
|
|
|
|
for(LiquidTankExcel excel:noticeList) { |
|
|
|
|
|
|
|
|
|
Integer jobType = excel.getJobType(); |
|
|
|
|
String jobTypeWeekValue = excel.getJobTypeWeekValue(); |
|
|
|
|
@ -84,16 +238,16 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq |
|
|
|
|
if (jobTypeYearValue != null && !jobTypeYearValue.trim().isEmpty()) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if(count > 1){ |
|
|
|
|
if (count > 1) { |
|
|
|
|
return R.fail("每周、每月、每年只能输入一个周期类型值"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(jobType == 1){ |
|
|
|
|
if (jobType == 1) { |
|
|
|
|
if (jobTypeWeekValue == null || jobTypeWeekValue.trim().isEmpty()) { |
|
|
|
|
return R.fail("当前周期类型是周,请填写每周数据"); |
|
|
|
|
} |
|
|
|
|
List<String> weekList = Func.toStrList(jobTypeWeekValue); |
|
|
|
|
for(String week:weekList){ |
|
|
|
|
for (String week : weekList) { |
|
|
|
|
try { |
|
|
|
|
Integer.parseInt(week); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
@ -107,25 +261,25 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(jobType == 2){ |
|
|
|
|
if (jobType == 2) { |
|
|
|
|
if (jobTypeMonthValue == null || jobTypeMonthValue.trim().isEmpty()) { |
|
|
|
|
return R.fail("当前周期类型是月,请填写每月数据"); |
|
|
|
|
} |
|
|
|
|
List<String> monthList = Func.toStrList(jobTypeMonthValue); |
|
|
|
|
for(String month:monthList){ |
|
|
|
|
for (String month : monthList) { |
|
|
|
|
try { |
|
|
|
|
Integer.parseInt(month); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
return R.fail("周期为月的每月数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
if (Integer.parseInt(month)>=1 && Integer.parseInt(month)<=31) { |
|
|
|
|
if (Integer.parseInt(month) >= 1 && Integer.parseInt(month) <= 31) { |
|
|
|
|
} else { |
|
|
|
|
return R.fail("周期为月的每月数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(jobType == 3){ |
|
|
|
|
if (jobType == 3) { |
|
|
|
|
if (jobTypeYearValue == null || jobTypeYearValue.trim().isEmpty()) { |
|
|
|
|
return R.fail("当前周期类型是年,请填写每年数据"); |
|
|
|
|
} |
|
|
|
|
@ -133,9 +287,8 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq |
|
|
|
|
List<String> yearList = Func.toStrList(jobTypeYearValue); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (String date : yearList) { |
|
|
|
|
List< String> dates = Arrays.asList(date.split("-")); |
|
|
|
|
List<String> dates = Arrays.asList(date.split("-")); |
|
|
|
|
|
|
|
|
|
String month = dates.get(0); |
|
|
|
|
String day = dates.get(1); |
|
|
|
|
@ -146,9 +299,9 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq |
|
|
|
|
} 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{ |
|
|
|
|
if (Integer.parseInt(month) >= 1 && Integer.parseInt(month) <= 12) { |
|
|
|
|
if (Integer.parseInt(day) >= 1 && Integer.parseInt(day) <= 31) { |
|
|
|
|
} else { |
|
|
|
|
return R.fail("周期为年的每年数据格式不正确"); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
@ -158,71 +311,7 @@ public class LiquidTankServiceImpl extends BaseServiceImpl<LiquidTankMapper, Liq |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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()); |
|
|
|
|
} |
|
|
|
|
//化验人
|
|
|
|
|
if(noticeExcel.getTestUserName() != null && !noticeExcel.getTestUserName().trim().isEmpty()){ |
|
|
|
|
List<User> tests = userClient.listByNameNolike(noticeExcel.getTestUserName()); |
|
|
|
|
if(null != tests && tests.size() > 0){ |
|
|
|
|
notice.setTestUserId(tests.get(0).getId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//工艺主管
|
|
|
|
|
if(noticeExcel.getProcessUserName() != null && !noticeExcel.getProcessUserName().trim().isEmpty()){ |
|
|
|
|
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)); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|