浏览代码

试验基础信息优化

lvy 1 月之前
父节点
当前提交
dcec8a2ac9

+ 33 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/TrailDeviceUseInfoDTO.java

@@ -0,0 +1,33 @@
+package org.springblade.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.business.entity.TrialDeviceUse;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class TrailDeviceUseInfoDTO extends TrialDeviceUse {
+
+    /**
+     * 测量范围
+     */
+    @ApiModelProperty(value = "测量范围")
+    private String measuringRange;
+
+    /**
+     * 精准度
+     */
+    @ApiModelProperty(value = "精准度")
+    private String accuracy;
+
+
+    /**
+     * 使用时长
+     */
+    @ApiModelProperty(value = "使用时长,分")
+    private Long useDuration;
+
+
+
+}

+ 22 - 6
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TrialSeleInspectionRecordBaseInfoVO.java → blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/TrialSeleInspectionRecordBaseInfoDTO.java

@@ -14,20 +14,19 @@
  *  this software without specific prior written permission.
  *  Author: Chill 庄骞 (smallchill@163.com)
  */
-package org.springblade.business.vo;
+package org.springblade.business.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.springblade.business.entity.EntrustInfo;
 import org.springblade.business.entity.TrialSampleInfo;
+import org.springblade.business.vo.StandardInfoDtoVo;
 
 import java.io.Serializable;
 import java.util.List;
 
 
 @Data
-public class TrialSeleInspectionRecordBaseInfoVO implements Serializable {
+public class TrialSeleInspectionRecordBaseInfoDTO implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	/**
@@ -66,9 +65,26 @@ public class TrialSeleInspectionRecordBaseInfoVO implements Serializable {
 	@ApiModelProperty("报告编号")
 	private String reportNo;
 
-	@ApiModelProperty("判定依据")
-	private Integer basis;
+	@ApiModelProperty("判断依据列表")
+	private List<StandardVo> standardVos;
+
+	@ApiModelProperty("判断依据:规范id")
+	private Long standardId;
 
 	@ApiModelProperty("样品信息")
+	private TrialSampleInfo trialSampleInfo;
+
+	@ApiModelProperty("样品信息列表")
 	private List<TrialSampleInfo> trialSampleInfoList;
+
+	@ApiModelProperty("设备信息和使用信息")
+	private List<TrailDeviceUseInfoDTO> trailDeviceUseInfoDTOS;
+
+	@Data
+	public static class StandardVo {
+		@ApiModelProperty("id")
+		private Long id;
+		@ApiModelProperty("name")
+		private String name;
+	}
 }

+ 8 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/TrialSelfInspectionRecordDTO.java

@@ -40,4 +40,12 @@ public class TrialSelfInspectionRecordDTO extends TrialSelfInspectionRecord {
     @ApiModelProperty(value = "旧报告编号")
     private String oldReportNumber;
 
+    @ApiModelProperty("样品品种id")
+    private Long sampleVarietyId;
+
+    @ApiModelProperty("代号id")
+    private Long codeId;
+
+    @ApiModelProperty("强度等级id")
+    private Long strengthLevelId;
 }

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/TrialSelfInspectionRecordPageDTO.java

@@ -25,4 +25,6 @@ public class TrialSelfInspectionRecordPageDTO extends TrialSelfInspectionRecord
     @ApiModelProperty(value = "质检树的节点pKeyId")
     private String qualityTestPKeyId;
 
+    @ApiModelProperty(value = "排序类型, 1 记录/报告编号升序, 2 记录/报告编号降序, 3 规格型号升序, 4 规格型号降序")
+    private String sortType;
 }

+ 20 - 2
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TrialDeviceUse.java

@@ -61,6 +61,12 @@ public class TrialDeviceUse extends BaseEntity {
     @ApiModelProperty(value = "检测项目-试验树节点id")
     private Long nodeId;
 
+    /**
+     * 检测项目-试验记录id
+     */
+    @ApiModelProperty(value = "试验记录id")
+    private Long selfInspectionRecordId;
+
     /**
      * 样品名称
      */
@@ -83,14 +89,14 @@ public class TrialDeviceUse extends BaseEntity {
      * 使用日期(起)
      */
     @ApiModelProperty(value = "使用日期(起)")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date startDate;
 
     /**
      * 使用日期(止)
      */
     @ApiModelProperty(value = "使用日期(止)")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date endDate;
 
     /**
@@ -111,4 +117,16 @@ public class TrialDeviceUse extends BaseEntity {
     @ApiModelProperty(value = "pdfURL")
     private String pdfUrl;
 
+    /**
+     * 运转前检查情况
+     */
+    @ApiModelProperty(value = "运转前检查情况")
+    private String beforeRunCheck;
+
+    /**
+     * 运转后检查情况
+     */
+    @ApiModelProperty(value = "运转前检查情况")
+    private String afterRunCheck;
+
 }

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TrialSelfInspectionRecord.java

@@ -80,5 +80,7 @@ public class TrialSelfInspectionRecord extends BaseEntity {
     @ApiModelProperty(value = "委托单Id")
     private Long entrustId;
 
+    @ApiModelProperty("判断依据:规范id")
+    private Long standardId;
 
 }

+ 89 - 17
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java

@@ -12,13 +12,9 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
 import org.springblade.business.dto.*;
-import org.springblade.business.entity.EntrustInfo;
-import org.springblade.business.entity.TrialDetectionData;
-import org.springblade.business.entity.TrialSampleInfo;
-import org.springblade.business.entity.TrialSelfInspectionRecord;
-import org.springblade.business.service.ITrialDetectionDataService;
-import org.springblade.business.service.ITrialSampleInfoService;
-import org.springblade.business.service.ITrialSelfInspectionRecordService;
+import org.springblade.business.entity.*;
+import org.springblade.business.service.*;
+import org.springblade.business.utils.DateUtils;
 import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.*;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -26,7 +22,6 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.oss.model.BladeFile;
-import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
@@ -37,16 +32,15 @@ import org.springblade.manager.entity.TrialSelfDataRecord;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springblade.manager.vo.CheckRemoveBussTabInfoVo;
-import org.springblade.manager.vo.ContractInfoVO;
 import org.springblade.manager.vo.TableFileVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
-import org.springblade.meter.entity.MeterContractInfo;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -66,6 +60,8 @@ public class TrialDetectionController extends BladeController {
     private final WbsTreePrivateClient wbsTreePrivateClient;
     private final JdbcTemplate jdbcTemplate;
     private final NewIOSSClient newIOSSClient;
+    private final ITrialNumberRuleService trialNumberRuleService;
+    private final StandardInfoService uStandardInfoService;
 
     @GetMapping("/data/detail")
     @ApiOperationSupport(order = 1)
@@ -546,7 +542,7 @@ public class TrialDetectionController extends BladeController {
     @GetMapping("/self/getBaseInfo")
     @ApiOperationSupport(order = 30)
     @ApiOperation(value = "获取试验自检基础信息", notes = "传入节点pKeyId")
-    public R<TrialSeleInspectionRecordBaseInfoVO> getBaseInfo(@RequestParam Long projectId, @RequestParam Long contractId, @RequestParam(required = false) Long id) {
+    public R<TrialSeleInspectionRecordBaseInfoDTO> getBaseInfo(@RequestParam Long projectId, @RequestParam Long contractId, @RequestParam Long nodeId, @RequestParam(required = false) Long id) {
         ProjectInfo projectInfo = jdbcTemplate.query("select * from m_project_info where id = " + projectId, new BeanPropertyRowMapper<>(ProjectInfo.class)).stream().findAny().orElse(null);
         if (projectInfo == null) {
             return R.fail("未获取到项目信息");
@@ -555,13 +551,17 @@ public class TrialDetectionController extends BladeController {
         if (contractInfo == null) {
             return R.fail("未获取到合同信息");
         }
-        TrialSeleInspectionRecordBaseInfoVO vo = new TrialSeleInspectionRecordBaseInfoVO();
+        TrialSeleInspectionRecordBaseInfoDTO vo = new TrialSeleInspectionRecordBaseInfoDTO();
         vo.setProjectName(projectInfo.getProjectName());
         vo.setConstructionUnit(contractInfo.getConstructionUnitName());
         if (contractInfo.getContractType().equals(2)) {
-            // todo 获取该监理下的所有施工单位
+            List<ContractInfo> query = jdbcTemplate.query("select contract_name from m_contract_info where is_deleted = 0 and p_id = " + projectId + " and contract_type = 1", new BeanPropertyRowMapper<>(ContractInfo.class));
+            vo.setConstructionUnit(org.apache.commons.lang.StringUtils.join(query.stream().map(ContractInfo::getContractName).collect(Collectors.toList()), ","));
         } else if (contractInfo.getContractType().equals(3)) {
-            // todo 获取该业主下的所有监理单位
+            List<ContractInfo> query = jdbcTemplate.query("select contract_name from m_contract_info where is_deleted = 0 and p_id = " + projectId + " and contract_type = 1", new BeanPropertyRowMapper<>(ContractInfo.class));
+            vo.setConstructionUnit(org.apache.commons.lang.StringUtils.join(query.stream().map(ContractInfo::getContractName).collect(Collectors.toList()), ","));
+            List<ContractInfo> query1 = jdbcTemplate.query("select contract_name from m_contract_info where is_deleted = 0 and p_id = " + projectId + " and contract_type = 2", new BeanPropertyRowMapper<>(ContractInfo.class));
+            vo.setSupervisionUnit(org.apache.commons.lang.StringUtils.join(query1.stream().map(ContractInfo::getContractName).collect(Collectors.toList()), ","));
         }
         vo.setSupervisionUnit(contractInfo.getSupervisionUnitName());
         vo.setLabName(contractInfo.getLaboratoryName());
@@ -578,14 +578,86 @@ public class TrialDetectionController extends BladeController {
                     }
                 }
                 List<TrialSelfSample> selfSampleList = jdbcTemplate.query("select * from u_trial_self_sample where self_id = " + id, new BeanPropertyRowMapper<>(TrialSelfSample.class));
-                String samplingIds = selfSampleList.stream().map(TrialSelfSample::getSamplingId).map(String::valueOf).collect(Collectors.joining(","));
-                List<TrialSampleInfo> trialSampleInfoList = jdbcTemplate.query("select * from u_trial_sample_info where id in (" + samplingIds + ")", new BeanPropertyRowMapper<>(TrialSampleInfo.class));
-                vo.setTrialSampleInfoList(trialSampleInfoList);
+                if (!selfSampleList.isEmpty()) {
+                    String samplingIds = selfSampleList.stream().map(TrialSelfSample::getSamplingId).map(String::valueOf).collect(Collectors.joining(","));
+                    List<TrialSampleInfo> trialSampleInfoList = jdbcTemplate.query("select * from u_trial_sample_info where id in (" + samplingIds + ")", new BeanPropertyRowMapper<>(TrialSampleInfo.class));
+                    vo.setTrialSampleInfoList(trialSampleInfoList);
+                    vo.setTrialSampleInfo(trialSampleInfoList.isEmpty() ? new TrialSampleInfo() : trialSampleInfoList.get(0));
+                }
                 if (vo.getProjectPosition() == null) {
                     vo.setProjectPosition(record.getProjectPosition());
                 }
+                vo.setStandardId(record.getStandardId());
+                vo.setReportNo(record.getReportNo());
+                vo.setRecordNo(record.getRecordNo());
+                // 获取设备信息和使用信息
+                List<TrailDeviceUseInfoDTO> trialDeviceUseList = jdbcTemplate.query("select * from u_trial_device_use where self_inspection_record_id = " + id, new BeanPropertyRowMapper<>(TrailDeviceUseInfoDTO.class));
+                if (!trialDeviceUseList.isEmpty()) {
+                    Set<Long> ids = trialDeviceUseList.stream().map(TrailDeviceUseInfoDTO::getDeviceInfoId).collect(Collectors.toSet());
+                    List<TrialDeviceInfo> deviceInfoList = jdbcTemplate.query("select * from u_device_info where id in (" + org.apache.commons.lang.StringUtils.join(ids, ",") + ")", new BeanPropertyRowMapper<>(TrialDeviceInfo.class));
+                    Map<Long, TrialDeviceInfo> trialDeviceInfoMap = deviceInfoList.stream().collect(Collectors.toMap(TrialDeviceInfo::getId, trailDeviceInfo -> trailDeviceInfo));
+                    trialDeviceUseList.forEach(trailDeviceUseInfoDTO -> {
+                        TrialDeviceInfo deviceInfo = trialDeviceInfoMap.get(trailDeviceUseInfoDTO.getDeviceInfoId());
+                        if (deviceInfo != null) {
+                            trailDeviceUseInfoDTO.setMeasuringRange(deviceInfo.getMeasuringRange());
+                            trailDeviceUseInfoDTO.setAccuracy(deviceInfo.getAccuracy());
+                            // 计算使用时长
+                            trailDeviceUseInfoDTO.setUseDuration(DateUtils.dateDiff(trailDeviceUseInfoDTO.getStartDate(), trailDeviceUseInfoDTO.getEndDate()));
+                        }
+                    });
+                }
+                vo.setTrailDeviceUseInfoDTOS(trialDeviceUseList);
             }
         }
+        if (vo.getRecordNo() == null) {
+            Map<String, String> map = trialNumberRuleService.getTrialNumber(projectId, contractId, 4, nodeId, true);
+            vo.setRecordNo(map.get("trialNumber"));
+        }
+        if (vo.getReportNo() == null) {
+            Map<String, String> map = trialNumberRuleService.getTrialNumber(projectId, contractId, 5, nodeId, true);
+            vo.setReportNo(map.get("trialNumber"));
+        }
+        List<TrialSeleInspectionRecordBaseInfoDTO.StandardVo> mapList = jdbcTemplate.query("SELECT id,name from u_wbs_private_standard WHERE type = 2 and is_deleted = 0 and status = 1 and private_id = " + nodeId,
+                new BeanPropertyRowMapper<>(TrialSeleInspectionRecordBaseInfoDTO.StandardVo.class));
+        vo.setStandardVos(mapList);
         return R.data(vo);
     }
+
+
+    /**
+     * 获取最近一次使用的设备信息
+     */
+    @GetMapping("/self/lastTrailDeviceInfo")
+    @ApiOperationSupport(order = 30)
+    @ApiOperation(value = "获取上一次使用设备信息", notes = "传入节点pKeyId")
+    public R<List<TrialDeviceInfo>> getTrailDeviceInfo( @RequestParam Long contractId, @RequestParam Long nodeId) {
+        TrialSelfInspectionRecord record = iTrialSelfInspectionRecordService.getOne(Wrappers.<TrialSelfInspectionRecord>lambdaQuery().select(TrialSelfInspectionRecord::getId)
+                .eq(TrialSelfInspectionRecord::getContractId, contractId).eq(TrialSelfInspectionRecord::getNodeId, nodeId).last(" order by id desc limit 1"));
+        if (record == null) {
+            return R.data(new ArrayList<>());
+        }
+        List<TrialDeviceInfo> trialDeviceUseList = jdbcTemplate.query("select * from u_trial_device_info WHERE id in ( select device_info_id from u_trial_device_use where self_inspection_record_id = ? and node_id = ?)" ,
+                new BeanPropertyRowMapper<>(TrialDeviceInfo.class), record.getId(), nodeId);
+        return R.data(trialDeviceUseList);
+    }
+
+    /**
+     * 根据standardId 查询 样品品种,代号和强度等级
+     */
+    @GetMapping("/self/getStandardInfoByStandardId")
+    @ApiOperationSupport(order = 30)
+    @ApiOperation(value = "根据 standardId 查询 样品品种,代号和强度等级", notes = "standardId")
+    public R<Map<String, List<StandardInfo>>> getStandardInfoByStandardId( @RequestParam Long standardId) {
+        List<StandardInfo> list = uStandardInfoService.list(Wrappers.<StandardInfo>lambdaQuery().eq(StandardInfo::getStandardId, standardId).eq(StandardInfo::getType, 1)
+                .eq(StandardInfo::getParentId, 0).and(query -> query.eq(StandardInfo::getName, "样品品种").or().eq(StandardInfo::getName, "代号").or().eq(StandardInfo::getName, "强度等级")));
+        if (list == null || list.isEmpty()) {
+            return R.data(new HashMap<>());
+        }
+        List<Long> ids = list.stream().map(StandardInfo::getId).collect(Collectors.toList());
+        List<StandardInfo> childList = uStandardInfoService.list(Wrappers.<StandardInfo>lambdaQuery().in(StandardInfo::getParentId, ids).eq(StandardInfo::getType, 1));
+        Map<Long, List<StandardInfo>> map = childList.stream().collect(Collectors.groupingBy(StandardInfo::getParentId));
+        Map<String, List<StandardInfo>> result = new HashMap<>();
+        list.forEach(standardInfo -> result.put(standardInfo.getName(), map.get(standardInfo.getId()) == null ? new ArrayList<>() : map.get(standardInfo.getId())));
+        return R.data(result);
+    }
 }

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceUseServiceImpl.java

@@ -40,7 +40,6 @@ import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
@@ -372,7 +371,7 @@ public class TrialDeviceUseServiceImpl extends BaseServiceImpl<TrialDeviceUseMap
         return null;
     }
 
-    public void addDeviceUseInfo(TrialSelfInspectionRecordDTO dto) {
+    public void addDeviceUseInfo(TrialSelfInspectionRecordDTO dto, Long id) {
         if (StringUtils.isNotEmpty(dto.getDeviceUseIds())) {
             //获取进场记录
             List<TrialDeviceInfo> deviceInfos = trialDeviceInfoMapper.selectList(Wrappers.<TrialDeviceInfo>lambdaQuery().in(TrialDeviceInfo::getId, Func.toLongList(dto.getDeviceUseIds())));
@@ -396,6 +395,7 @@ public class TrialDeviceUseServiceImpl extends BaseServiceImpl<TrialDeviceUseMap
                 TrialDeviceUse trialDeviceUses = BeanUtil.copyProperties(deviceInfo, TrialDeviceUse.class);
                 if (trialDeviceUses != null) {
                     trialDeviceUses.setId(SnowFlakeUtil.getId());
+                    trialDeviceUses.setSelfInspectionRecordId(id);
                     trialDeviceUses.setNodeId(dto.getNodeId());
                     trialDeviceUses.setDeviceInfoId(deviceInfo.getId());
                     trialDeviceUses.setManagerName(dto.getTrialUserName());

+ 12 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -124,6 +124,17 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             if (org.apache.commons.lang.StringUtils.isNotEmpty(dto.getQueryStatus())) {
                 queryWrapper.lambda().eq(TrialSelfInspectionRecord::getDetectionResult, dto.getQueryStatus());
             }
+            if (dto.getSortType() !=  null) {
+                if (dto.getSortType().equals("1")) {
+                    queryWrapper.lambda().orderByAsc(TrialSelfInspectionRecord::getReportNo);
+                } else if (dto.getSortType().equals("2")) {
+                    queryWrapper.lambda().orderByDesc(TrialSelfInspectionRecord::getReportNo);
+                } else if (dto.getSortType().equals("3")) {
+                    queryWrapper.lambda().orderByAsc(Arrays.asList(TrialSelfInspectionRecord::getSpecificationModel, TrialSelfInspectionRecord::getReportNo));
+                } else if (dto.getSortType().equals("4")) {
+                    queryWrapper.lambda().orderByDesc(Arrays.asList(TrialSelfInspectionRecord::getSpecificationModel, TrialSelfInspectionRecord::getReportNo));
+                }
+            }
 
             IPage<TrialSelfInspectionRecord> pages = this.page(page, queryWrapper.lambda().orderByDesc(true, TrialSelfInspectionRecord::getCreateTime));
             IPage<TrialSelfInspectionRecordVO> trialSelfInspectionRecordVOIPage = TrialSelfInspectionRecordWarpper.build().pageVO(pages);
@@ -1116,7 +1127,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             this.recordSampleSubmit(dto, obj);
 
             //------关联新增设备使用记录信息------
-            this.trialDeviceUseService.addDeviceUseInfo(dto);
+            this.trialDeviceUseService.addDeviceUseInfo(dto, obj.getId());
         }
         // ---- 修改样品单号信息 --------
         if(dto!=null && Func.isNotEmpty(dto.getEntrustId())){