From c9fb9ae9c5ea3903762ca4e0bbf09ddb7012f749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Fri, 29 May 2026 17:11:29 +0800 Subject: [PATCH] bug --- .../pojo/vo/CertificateLedgerVO.java | 5 + .../desk/quality/pojo/entity/LiquidTank.java | 117 ++++++- .../wms/feign/StRealtimeStockClient.java | 4 +- .../feign/StRealtimeStockClientFallback.java | 4 + .../CertificateMaintenanceServiceImpl.java | 62 +++- .../desk/oem/mapper/OemProcessMapper.xml | 4 +- .../service/impl/OemProcessServiceImpl.java | 32 +- .../controller/LiquidTankController.java | 7 +- .../desk/quality/excel/LiquidTankExcel.java | 319 +++++++++--------- .../service/impl/CycleTestServiceImpl.java | 1 + .../service/impl/LiquidTankServiceImpl.java | 245 +++++++++----- .../impl/LiquidTankTaskServiceImpl.java | 16 +- .../resources/Excel/QA/槽液信息模板.xls | Bin 23552 -> 24576 bytes .../wms/feign/StRealtimeStockClientImpl.java | 4 + 14 files changed, 558 insertions(+), 262 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/vo/CertificateLedgerVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/vo/CertificateLedgerVO.java index f9a4063ab..b9084fa14 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/vo/CertificateLedgerVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/vo/CertificateLedgerVO.java @@ -2,6 +2,8 @@ package org.springblade.desk.jobtransfer.pojo.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.springblade.desk.basic.pojo.entity.TeamSet; + import java.util.List; @@ -18,4 +20,7 @@ public class CertificateLedgerVO { //岗位证书数据集合 @Schema(description = "岗位证书数据集合") private List certificateMaintenanceVOList; + + @Schema(description = "班组") + private List teamSetList; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java index 06ba99ef2..3113c9fc3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java @@ -10,8 +10,13 @@ import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; import java.io.Serial; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * [槽液] 实体类 @@ -388,32 +393,32 @@ public class LiquidTank extends BaseEntity { * 温度范围类型:[1]:无;[2]:室内温度;[3]:环境温度;[4]:温度范围; */ @Schema(description = "温度范围类型:[1]:无;[2]:室内温度;[3]:环境温度;[4]:温度范围;") - private Long temperatureType; + private Integer temperatureType; /** * 温度范围LEFT */ @Schema(description = "温度范围LEFT") - private Long temperatureRangeLeft; + private BigDecimal temperatureRangeLeft; /** * 温度范围RIGHT */ @Schema(description = "温度范围RIGHT") - private Long temperatureRangeRight; + private BigDecimal temperatureRangeRight; /** * 室内温度 */ @Schema(description = "室内温度") - private Long temperatureInRoom; + private BigDecimal temperatureInRoom; /** * 环境温度 */ @Schema(description = "环境温度") - private Long temperatureEnv; + private BigDecimal temperatureEnv; /** * PH范围类型:[1]:无;[2]:PH值范围; */ @Schema(description = "PH范围类型:[1]:无;[2]:PH值范围;") - private Long phType; + private Integer phType; /** * 实测ph值 */ @@ -423,12 +428,12 @@ public class LiquidTank extends BaseEntity { * PH范围LEFT */ @Schema(description = "PH范围LEFT") - private Long phRangeLeft; + private BigDecimal phRangeLeft; /** * PH范围RIGHT */ @Schema(description = "PH范围RIGHT") - private Long phRangeRight; + private BigDecimal phRangeRight; /** * 加药后化验值 */ @@ -489,4 +494,100 @@ public class LiquidTank extends BaseEntity { */ @Schema(description = "是否顺延-[1]:是;[0]:否;") private Long isPutOff; + + //生成温度类型key value枚举类 + + public enum TemperatureTypeEnum { + NONE(1, "无"), + INDOOR_TEMPERATURE(2, "室内温度"), + ENVIRONMENT_TEMPERATURE(3, "环境温度"), + TEMPERATURE_RANGE(4, "温度范围"); + private Integer code; + private String message; + TemperatureTypeEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + public Integer getCode() { + return code; + } + public String getMessage() { + return message; + } + public static String getMessageByCode(Integer code) { + for (TemperatureTypeEnum item : values()) { + if (item.getCode().equals(code)) { + return item.getMessage(); + } + } + return null; + } + public static Integer getCodeByMessage(String message) { + for (TemperatureTypeEnum item : values()) { + if (item.getMessage().equals(message)) { + return item.getCode(); + } + } + return null; + } + public static TemperatureTypeEnum getByCode(Integer code) { + for (TemperatureTypeEnum item : values()) { + if (item.getCode().equals(code)) { + return item; + } + } + return null; + } + public static TemperatureTypeEnum getByMessage(String message) { + for (TemperatureTypeEnum item : values()) { + if (item.getMessage().equals(message)) { + return item; + } + } + return null; + } + public static List> getList() { + List> list = new ArrayList<>(); + for (TemperatureTypeEnum item : values()) { + Map map = new HashMap<>(); + map.put("code", item.getCode()); + map.put("message", item.getMessage()); + list.add(map); + } + return list; + } + } + + public enum PhTypeEnum { + NONE(1, "无"), + PH_VALUE_RANGE(2, "PH值范围"); + private Integer code; + private String message; + PhTypeEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + public Integer getCode() { + return code; + } + public String getMessage() { + return message; + } + public static String getMessageByCode(Integer code) { + for (PhTypeEnum item : values()) { + if (item.getCode().equals(code)) { + return item.getMessage(); + } + } + return null; + } + public static Integer getCodeByMessage(String message) { + for (PhTypeEnum item : values()) { + if (item.getMessage().equals(message)) { + return item.getCode(); + } + } + return null; + } + } } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java index c859233b0..b1768e8f9 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java @@ -31,6 +31,7 @@ public interface StRealtimeStockClient { String MEASURING_TOOLS = API_PREFIX + "/pageToolsData"; String MEASURING_Id = API_PREFIX + "/getById"; + String GET_ST_GOODS = API_PREFIX + "/getStGoods"; String GET_REALTIME_STOCK_BY_GOOD = API_PREFIX + "/getRealtimeStockByGood"; @@ -46,7 +47,8 @@ public interface StRealtimeStockClient { @PostMapping(MEASURING_Id) R getById(@RequestBody StGoods stGoods); - + @PostMapping(GET_ST_GOODS) + R> getStGoods(); /** * 查询指定物料的可用库存记录 * diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java index 5b332f090..8a926954d 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java @@ -28,6 +28,10 @@ public class StRealtimeStockClientFallback implements StRealtimeStockClient { public R getById(StGoods stGoods) { return null; } + @Override + public R> getStGoods() { + return null; + } @Override public List getRealtimeStockByGood(String goodCode) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/CertificateMaintenanceServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/CertificateMaintenanceServiceImpl.java index 3b7bae96c..3606cb5b8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/CertificateMaintenanceServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/CertificateMaintenanceServiceImpl.java @@ -1,9 +1,16 @@ package org.springblade.desk.jobtransfer.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.pojo.entity.RelTeamSetUser; +import org.springblade.desk.basic.pojo.entity.TeamSet; +import org.springblade.desk.basic.service.IRelTeamSetUserService; +import org.springblade.desk.basic.service.impl.TeamSetServiceImpl; import org.springblade.desk.jobtransfer.mapper.CertificateTypeMapper; import org.springblade.desk.jobtransfer.mapper.PostHandleMapper; import org.springblade.desk.jobtransfer.pojo.entity.CertificateMaintenanceEntity; @@ -17,6 +24,7 @@ import org.springblade.desk.jobtransfer.pojo.excel.CertificateMaintenanceImport; import org.springblade.desk.jobtransfer.pojo.request.CertificateLedgerQuery; import org.springblade.desk.jobtransfer.pojo.vo.CertificateLedgerVO; import org.springblade.desk.jobtransfer.mapper.CertificateMaintenanceMapper; +import org.springblade.desk.jobtransfer.pojo.vo.PostHandleVO; import org.springblade.desk.jobtransfer.service.ICertificateMaintenanceService; import org.springblade.system.cache.UserCache; import org.springblade.system.pojo.entity.UserInfo; @@ -44,9 +52,61 @@ public class CertificateMaintenanceServiceImpl extends BaseServiceImpl selectCertificateMaintenancePage(IPage page, CertificateLedgerQuery certificateLedgerQuery) { - return page.setRecords(baseMapper.selectCertificateMaintenancePage(page, certificateLedgerQuery)); + List certificateLedgerVOS = baseMapper.selectCertificateMaintenancePage(page, certificateLedgerQuery); + if (CollUtil.isEmpty(certificateLedgerVOS)){ + return page; + } + page.setRecords(certificateLedgerVOS); + //班组 + setTeamSetList(page); + return page; + } + + private void setTeamSetList(IPage page) { + List userIds = page.getRecords().stream().map(certificateLedgerVO -> + certificateLedgerVO.getPostHandleVO().getUserId()).toList(); + + List relTeamSetUserList = relTeamSetUserService.list(Wrappers.lambdaQuery(RelTeamSetUser.class) + .in(RelTeamSetUser::getUserId, userIds)); + if (CollUtil.isEmpty(relTeamSetUserList)) { + return; + } + + Map> userTeamMap = + relTeamSetUserList.stream().collect(Collectors.groupingBy(RelTeamSetUser::getUserId)); + + Set teamIdSet = relTeamSetUserList.stream().map(RelTeamSetUser::getTeamSetId).collect(Collectors.toSet()); + List teamSets = teamSetService.list(Wrappers.lambdaQuery(TeamSet.class) + .in(TeamSet::getId, teamIdSet)); + if (CollUtil.isEmpty(teamSets)) { + return; + } + + page.getRecords().forEach(s -> { + PostHandleVO postHandleVO = s.getPostHandleVO(); + Long userId = postHandleVO.getUserId(); + + List relTeamSetUsers = userTeamMap.getOrDefault(userId, new ArrayList<>()); + if (CollUtil.isEmpty(relTeamSetUsers)) { + return; + } + List teamSetList = relTeamSetUsers.stream().map(relTeamSetUser -> + teamSets.stream() + .filter(teamSet -> teamSet.getId().equals(relTeamSetUser.getTeamSetId())) + .findFirst() + .orElse(null) + ).filter(BeanUtil::isNotEmpty).toList(); + + s.setTeamSetList(teamSetList); + }); + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml index 95eb2ab50..975f531b0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml @@ -62,7 +62,9 @@ AND mosc.STATEMENT_CATEGORY LIKE CONCAT('%', CONCAT(#{query.statementCategory}, '%')) - + + AND bps.ID = #{query.processId} + ORDER BY bps.CODE ASC diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java index 45594357e..9d1b88276 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java @@ -1,5 +1,6 @@ package org.springblade.desk.oem.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.excel.util.StringUtils; import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -96,9 +97,9 @@ public class OemProcessServiceImpl extends BaseServiceImpl craftAbilityEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); - Set caCodeSet = Arrays.stream(oemProcessImport.getCaCodes().split(",")) - .collect(Collectors.toCollection(HashSet::new)); - craftAbilityEntityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(caCodeSet), CraftAbilityEntity::getCaCode, caCodeSet); - List craftAbilityEntities = craftAbilityMapper.selectList(craftAbilityEntityLambdaQueryWrapper); - if(caCodeSet.size() != craftAbilityEntities.size()){ - return R.fail("第" + rowNum + "行,工艺能力不存在"); + if (StrUtil.isNotEmpty(oemProcessImport.getCaCodes())){ + LambdaQueryWrapper craftAbilityEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + Set caCodeSet = Arrays.stream(oemProcessImport.getCaCodes().split(",")) + .collect(Collectors.toCollection(HashSet::new)); + craftAbilityEntityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(caCodeSet), CraftAbilityEntity::getCaCode, caCodeSet); + List craftAbilityEntities = craftAbilityMapper.selectList(craftAbilityEntityLambdaQueryWrapper); + if(caCodeSet.size() != craftAbilityEntities.size()){ + return R.fail("第" + rowNum + "行,工艺能力不存在"); + } + String caIds = craftAbilityEntities.stream() + .map(entity -> String.valueOf(entity.getId())) + .collect(Collectors.joining(",")); + oemProcessImport.setCraftIds(caIds); } + Long processId = processSetMap.get(oemProcessImport.getPaCode()); - String caIds = craftAbilityEntities.stream() - .map(entity -> String.valueOf(entity.getId())) - .collect(Collectors.joining(",")); oemProcessImport.setProcessId(processId); - oemProcessImport.setCraftIds(caIds); oemProcessImport.setManual("否".equals(oemProcessImport.getManualStr()) ? "0" : "1"); OemProcessEntity oemProcessEntity = new OemProcessEntity(); BeanUtils.copyProperties(oemProcessImport, oemProcessEntity); 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 e3b380bf5..90c04e768 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 @@ -188,6 +188,7 @@ public class LiquidTankController extends BladeController { @Operation(summary = "新增一条", description = "传入LiquidTank Obj") public R save(@Valid @RequestBody LiquidTank addOne) { addOne.setId(null); + return R.status(service.save(addOne)); } @@ -293,13 +294,11 @@ public class LiquidTankController extends BladeController { @ApiOperationSupport(order = 72) @Operation(summary = "导入Excel", description = "MultipartFile") public R importExcel(@RequestParam("file") MultipartFile file) { - List noticeList = new ArrayList<>(); - List list = ExcelUtil.read(file, LiquidTankExcel.class); + List list = ExcelUtil.read( file, LiquidTankExcel.class); + list = list.subList(3, list.size()); R result = service.importExcel(list); return result; - - } 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 23fecf075..d848d043e 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 @@ -31,12 +31,12 @@ public class LiquidTankExcel implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** - * 任务前缀 - */ - @ColumnWidth(20) - @ExcelProperty("任务前缀") - private String taskPrefix; + ///** + // * 任务前缀 + // */ + //@ColumnWidth(20) + //@ExcelProperty("任务前缀") + //private String taskPrefix; /** * [作业中心]id */ @@ -228,159 +228,176 @@ public class LiquidTankExcel implements Serializable { @ExcelProperty("每年") private String jobTypeYearValue; - @ColumnWidth(20) - @ExcelProperty("槽液编码/槽号") - private String code; - /** - * 添加值[计量单位]id - */ - @ColumnWidth(20) - @ExcelProperty("添加值[计量单位]id") - private BigDecimal addUnitId; /** * 温度范围类型:[1]:无;[2]:室内温度;[3]:环境温度;[4]:温度范围; */ @ColumnWidth(20) - @ExcelProperty("温度范围类型:[1]:无;[2]:室内温度;[3]:环境温度;[4]:温度范围;") - private Long temperatureType; - - /** - * PH范围类型:[1]:无;[2]:PH值范围; - */ - @ColumnWidth(20) - @ExcelProperty("PH范围类型:[1]:无;[2]:PH值范围;") - private Long phType; - /** - * 药品[物料]id - */ - @ColumnWidth(20) - @ExcelProperty("药品[物料]id") - private BigDecimal drugMaterialId; - - /** - * 工艺含量 - */ - @ColumnWidth(20) - @ExcelProperty("工艺含量") - private BigDecimal processContent; - - - /** - * 上次化验日期 - */ - @ColumnWidth(20) - @ExcelProperty("上次化验日期") - private LocalDateTime lastTest; - /** - * 槽液到期日期 - */ - @ColumnWidth(20) - @ExcelProperty("槽液到期日期") - private LocalDateTime expiryDate; - - - /** - * 实测温度 - */ - @ColumnWidth(20) - @ExcelProperty("实测温度") - private String temperatureActual; - /** - * 实测ph值 - */ - @ColumnWidth(20) - @ExcelProperty("实测ph值") - private String phActual; - - /** - * 药品批次号 - */ - @ColumnWidth(20) - @ExcelProperty("药品批次号") - private String drugBatNum; - /** - * 加药后化验值 - */ - @ColumnWidth(20) - @ExcelProperty("加药后化验值") - private String postTestValue; - /** - * 是否合格 - */ - @ColumnWidth(20) - @ExcelProperty("是否合格") - private Long qualified; - /** - * 测量值[计量单位]id - */ - @ColumnWidth(20) - @ExcelProperty("测量值[计量单位]id") - private BigDecimal testUnitId; - - - - - - /** - * PH范围LEFT - */ - @ColumnWidth(20) - @ExcelProperty("PH范围LEFT") - private BigDecimal phRangeLeft; - /** - * PH范围RIGHT - */ - @ColumnWidth(20) - @ExcelProperty("PH范围RIGHT") - private BigDecimal phRangeRight; - /** - * 生成任务CRON表达式 - */ - @ColumnWidth(20) - @ExcelProperty("生成任务CRON表达式") - private String cronGenTask; - /** - * 温度范围LEFT - */ - @ColumnWidth(20) - @ExcelProperty("温度范围LEFT") - private BigDecimal temperatureRangeLeft; - /** - * 温度范围RIGHT - */ - @ColumnWidth(20) - @ExcelProperty("温度范围RIGHT") - private BigDecimal temperatureRangeRight; - /** - * 室内温度 - */ - @ColumnWidth(20) - @ExcelProperty("室内温度") - private BigDecimal temperatureInRoom; - /** - * 环境温度 - */ - @ColumnWidth(20) - @ExcelProperty("环境温度") - private BigDecimal temperatureEnv; + @ExcelProperty("温度类型") + private String temperatureTypeStr; - /** - * 生成任务 json config - */ @ColumnWidth(20) - @ExcelProperty("生成任务 json config") - private String jsonConfigGenTask; + @ExcelProperty("温度值") + private String temperatureValue; /** - * 临期提醒 json config - */ - @ColumnWidth(20) - @ExcelProperty("临期提醒 json config") - private String jsonConfigRemind; - /** - * 是否顺延-[1]:是;[0]:否; + * PH范围类型:[1]:无;[2]:PH值范围; */ @ColumnWidth(20) - @ExcelProperty("是否顺延-[1]:是;[0]:否;") - private Long isPutOff; + @ExcelProperty("PH值") + private String phValue; + + ///** + // * 室内温度 + // */ + //@ColumnWidth(20) + //@ExcelProperty("室内温度") + //private BigDecimal temperatureInRoom; + // + ///** + // * 环境温度 + // */ + //@ColumnWidth(20) + //@ExcelProperty("环境温度") + //private BigDecimal temperatureEnv; + // + ///** + // * 温度范围LEFT + // */ + //@ColumnWidth(20) + //@ExcelProperty("温度范围LEFT") + //private BigDecimal temperatureRangeLeft; + // + ///** + // * 温度范围RIGHT + // */ + //@ColumnWidth(20) + //@ExcelProperty("温度范围RIGHT") + //private BigDecimal temperatureRangeRight; + // + ///** + // * PH范围类型:[1]:无;[2]:PH值范围; + // */ + //@ColumnWidth(20) + //@ExcelProperty("PH范围类型:[1]:无;[2]:PH值范围;") + //private Long phType; + // + ///** + // * PH范围LEFT + // */ + //@ColumnWidth(20) + //@ExcelProperty("PH范围LEFT") + //private BigDecimal phRangeLeft; + ///** + // * PH范围RIGHT + // */ + //@ColumnWidth(20) + //@ExcelProperty("PH范围RIGHT") + //private BigDecimal phRangeRight; + // + // + //@ColumnWidth(20) + //@ExcelProperty("槽液编码/槽号") + //private String code; + ///** + // * 添加值[计量单位]id + // */ + //@ColumnWidth(20) + //@ExcelProperty("添加值[计量单位]id") + //private BigDecimal addUnitId; + // + // + // + ///** + // * 药品[物料]id + // */ + //@ColumnWidth(20) + //@ExcelProperty("药品[物料]id") + //private BigDecimal drugMaterialId; + // + ///** + // * 工艺含量 + // */ + //@ColumnWidth(20) + //@ExcelProperty("工艺含量") + //private BigDecimal processContent; + // + // + ///** + // * 上次化验日期 + // */ + //@ColumnWidth(20) + //@ExcelProperty("上次化验日期") + //private LocalDateTime lastTest; + ///** + // * 槽液到期日期 + // */ + //@ColumnWidth(20) + //@ExcelProperty("槽液到期日期") + //private LocalDateTime expiryDate; + // + // + ///** + // * 实测温度 + // */ + //@ColumnWidth(20) + //@ExcelProperty("实测温度") + //private String temperatureActual; + ///** + // * 实测ph值 + // */ + //@ColumnWidth(20) + //@ExcelProperty("实测ph值") + //private String phActual; + // + ///** + // * 药品批次号 + // */ + //@ColumnWidth(20) + //@ExcelProperty("药品批次号") + //private String drugBatNum; + ///** + // * 加药后化验值 + // */ + //@ColumnWidth(20) + //@ExcelProperty("加药后化验值") + //private String postTestValue; + ///** + // * 是否合格 + // */ + //@ColumnWidth(20) + //@ExcelProperty("是否合格") + //private Long qualified; + ///** + // * 测量值[计量单位]id + // */ + //@ColumnWidth(20) + //@ExcelProperty("测量值[计量单位]id") + //private BigDecimal testUnitId; + // + // + ///** + // * 生成任务CRON表达式 + // */ + //@ColumnWidth(20) + //@ExcelProperty("生成任务CRON表达式") + //private String cronGenTask; + // + ///** + // * 生成任务 json config + // */ + //@ColumnWidth(20) + //@ExcelProperty("生成任务 json config") + //private String jsonConfigGenTask; + ///** + // * 临期提醒 json config + // */ + //@ColumnWidth(20) + //@ExcelProperty("临期提醒 json config") + //private String jsonConfigRemind; + ///** + // * 是否顺延-[1]:是;[0]:否; + // */ + //@ColumnWidth(20) + //@ExcelProperty("是否顺延-[1]:是;[0]:否;") + //private Long isPutOff; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/CycleTestServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/CycleTestServiceImpl.java index 35fae8671..60f6c60c7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/CycleTestServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/CycleTestServiceImpl.java @@ -148,6 +148,7 @@ public class CycleTestServiceImpl extends BaseServiceImpl list) { List noticeList = new ArrayList<>(); + R r = check(list); + if (cn.hutool.core.bean.BeanUtil.isNotEmpty(r)){ + return r; + } + R> stGoods = stRealtimeStockClient.getStGoods(); + if (!stGoods.isSuccess() || CollUtil.isEmpty(stGoods.getData())){ + return R.fail("获取药品物料信息失败"); + } + List stGoodsList = stGoods.getData(); + Map stGoodsMap = stGoodsList.stream().collect(Collectors.toMap(StGoods::getGoodsCode, StGoods::getId)); + 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()); + } + //化验人 + if(noticeExcel.getTestUserName() != null && !noticeExcel.getTestUserName().trim().isEmpty()){ + List 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 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()); + } + + 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 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("周期为室内温度的室内温度数据格式不正确"); + } + } + + 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 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值范围数据格式不正确"); + } + } + } - for(LiquidTankExcel excel:list) { + private R check(List noticeList) { + for(LiquidTankExcel excel:noticeList) { Integer jobType = excel.getJobType(); String jobTypeWeekValue = excel.getJobTypeWeekValue(); @@ -84,16 +238,16 @@ public class LiquidTankServiceImpl extends BaseServiceImpl 1){ + if (count > 1) { return R.fail("每周、每月、每年只能输入一个周期类型值"); } - if(jobType == 1){ + if (jobType == 1) { if (jobTypeWeekValue == null || jobTypeWeekValue.trim().isEmpty()) { return R.fail("当前周期类型是周,请填写每周数据"); } List 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 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 yearList = Func.toStrList(jobTypeYearValue); - for (String date : yearList) { - List< String> dates = Arrays.asList(date.split("-")); + List dates = Arrays.asList(date.split("-")); String month = dates.get(0); String day = dates.get(1); @@ -146,9 +299,9 @@ public class LiquidTankServiceImpl extends BaseServiceImpl=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 { - - 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()); - } - //化验人 - if(noticeExcel.getTestUserName() != null && !noticeExcel.getTestUserName().trim().isEmpty()){ - List 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 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)); + return null; } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java index 30c0a1886..e8ae8b66d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java @@ -47,11 +47,11 @@ import org.springblade.system.pojo.entity.User; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.time.ZoneId; +import java.util.*; /** * [槽液检测任务] 服务实现类 @@ -480,7 +480,15 @@ public class LiquidTankTaskServiceImpl extends BaseServiceImplH|@H01Xd9qDWA1{hvF#x25plPVUV7 z=09`JnL8hMlb?&^q&VCrYECcyN{D)yqsfYDB6<+dzv**m`?aTf zIj+M{9;F_4jya`6uaGwjbdf8|^?;1&ElhG;ua*aOmne`Y^#Jl~1p%SUpY=eAfw4Ez z$lvyO&X=DrC%Y?riTvb|x)CVxTI!Z9N?l~CKDpEg`21P*J9;7-juaD3%2$klOd1Yf zQC2%c6b(niWUrT}p`9`u@`~YgMoc>;@*5){N@Sn6Mj9TaEXXJg9#%GZ0rXB zOXML_IS=JnMrpol%scRt9kVc_^m(&>4ttfKmW=YW89~OH2uj@-n4Zh^1r9r=X2^)| z6S>!CFzl4OeIa?#7twOVa-XkAy8V^D986gdUS%#S{L?07jlb40NTb!?Ur4R3PpjmbW$n(Rwnp@7OufHsNR-)0)a*F6{-wR6Yp`v&+7?G8PF>U%mp7N6 zNq9+I8eyS>z>iR zFh(uJfm%TIs4b$ZY|NKN)PygOPLI@#a&AOPtueOq*N8jKQLwdOx;bO(A(}6bw^ude zRsFU-nC=~L#d=Myjws0-S`r5Iv3V1tY z_E{O%G(N{fWmG4)ObXp>V<@BJPHvmbv}p;m@$Qbc`?SH)JqCG?&vfFrPaAuj-tP|H z4FB5kz`sHPei^`XnEiF-(8J2**4ho|?Pe4#&7O=uXH>lF0e9&x*3aFFj zSfqohEHXfILHjf|>H%?B%7qtHZT0kl_yepoe*#zoJd4#3c+Fk3@z9kh55K;&DAOr` zKJ(CW&WyMiv=T2?83@uU;%~U3QtCFp=88g~dUITpxtTjLa%M_o8+z#ORA|mc!&>*i z1Vx4BfRO-*jcZuv9`jGbIcz@-;q+3>Od*8XWS*8j`X4Eg>7?A*;Ev~>8|As$;Eqic zn=Wl|5~l`pK5l5i%*c?b+HuhOu_tgdAy6llV1RzWCQjm{zCq(+wb(&B&67g3MDx;T zIHkE1CHYIw>;kuWXao)!YPy_=RmqRLpBHth6TOAPst#!KLhR8`<3*ZtLVI!IqpO3d zvVjsUp>8|eg%iKR{ZvUAo>ubSCa@~sRQ-)iIjx`BjmDLJPrIp3rfI^-HFz8-SX_v3vRy1Ztwc~t$DHA myJXvNIG2u|G5-b1$u%LF9BxZZ4ma7I3(fD^g4C^bPVpafTK`-C delta 1902 zcmb7_U1(fI6vxlpy?b{zo8*4%X76sAn6I{pX(gK&NJ7(OG1(@mHHm30CI#6CzmS3! zQa?btD^_28P;;aelwu$JqD73iR3A);^`WFs3W6_1i->{`;)@RzH2!C1_tJ*?;9hpl z{hj}uIWuQwxRni2`9i!gD!NzqUln2xM-6uW+1lEY|GSB(7yrG%sxc?tEX7yMuLVWJSDF13(>N;$Ty>XF@wZ3%@g-qPw*M*KJ((yN4xmCwGzA< ztHeZ<+iagLyTf_cbu-CKlFa7z8?OK{M*!oQe7U0>ebZms8nb#G}lH>@zaiNJa=gW@AHyn#It|xY|>-y}tmh_6fyo#O$kkp#_gxjimKcjViuc{>Y+p6-7R#v=P zh#W2tl1XY|C9NV&HcXXOsWz%{y|)f1a%?yFVLP5`<>l1dJetn)>2xQrr*~VkG;?ie zU+`P{t9nu7eCM9vLPw_vKJNOmt@+0>RDdjTn4YA^@GMh5y@EZtP~`GN#u%F7vlElC zyde)mZ}8K^LxPVKFLB>gXMBt5a7NxA<;v86F;wK|=jO#QZ_b?$KA0|vG8uB)h~lb6 z-6?L!ts-isVWD1xt$Y%;`;0sIB6sk`w)y_Xq~vd+tc*rM6C{&pGC*>8O%aeBSd$4d zLyCf;Az2_Rq!>sh*Ku)>T&Si5sGJC~4k%}(#Uv;hQaz|Xqy|t!NR1#_Lmg*>?2sIg ztftmnkQv6aCMj1XS=k~sP{#>W zx=1?+`DF@$QWvQO;u_^a5fD+jAX`%HPSt9UZpV~oq>!kNP)9{-MRz@35_DHc^`N$p z8bIxu%1G8o2dEolMa-U0A`Ju`Is)1)S7U|VJ|9u{6zakG&&C> getStGoods() { + return R.data(stGoodsService.list()); + } @Override public List getRealtimeStockByGood(String goodCode) {