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 BaseServiceImpl> getStGoods() { + return R.data(stGoodsService.list()); + } @Override public List getRealtimeStockByGood(String goodCode) {