From 064457406bda554e713aea8bada1bb066be42b8e Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期六, 23 九月 2023 12:39:29 +0800
Subject: [PATCH] 9-23 去鵷雏管理端验证
---
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java | 206 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 177 insertions(+), 29 deletions(-)
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
index 9187912..3431a35 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
@@ -1,23 +1,30 @@
package com.yuanchu.limslaboratory.service.impl;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.limslaboratory.exception.ApplicationException;
import com.yuanchu.limslaboratory.mapper.*;
import com.yuanchu.limslaboratory.pojo.*;
import com.yuanchu.limslaboratory.pojo.vo.InsProductVo;
import com.yuanchu.limslaboratory.pojo.vo.InspectDetailVo;
import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
import com.yuanchu.limslaboratory.service.*;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/**
@@ -27,6 +34,7 @@
* @since 2023-08-03 13:03:36
*/
@Service
+@Slf4j
public class InspectionServiceImpl extends ServiceImpl<InspectionMapper, Inspection> implements InspectionService {
@Resource
@@ -59,6 +67,12 @@
@Resource
UserMapper userMapper;
+ @Resource
+ RawMaterialMapper rawMaterialMapper;
+
+ @Resource
+ LinkDetectionMapper linkDetectionMapper;
+
/**
* 鏌ヨ妫�楠岀敵璇峰崟鍒楄〃
@@ -71,16 +85,46 @@
return inspectionMapper.selectInspectsList(page, message);
}
+ //鏂板妫�楠屽崟-->閫夋嫨妫�楠岄」鐩増鏈�
+ @Override
+ public List<Integer> chooseVer(String name, String mcode, String specifications) {
+ return productMapper.chooseVersion(Integer.parseInt(specifications));
+ }
+
+ //鏂板妫�楠屽崟-->閫夋嫨妫�楠岄」鐩増鏈�-->鏌ョ湅璇ョ増鏈笅鎴戜滑瑕佸仛鐨勯」鐩姹�
+ @Override
+ public List<Map<String, Object>> lookProByVer(String name, String mcode, String specifications, Integer version, String experiment) {
+ Integer specificationId = Integer.parseInt(specifications);
+ /*濡傛灉璇曢獙椤圭洰涓虹┖鍒欐槸鎴愬搧妫�楠屾垨鑰呭師鏉愭枡妫�楠屽垯鏄睍绀鸿鐗堟湰鐨勬墍鏈夐」鐩楠岃姹傚弬鏁�*/
+ if (ObjectUtils.isEmpty(experiment)) {
+ return productMapper.pageProductInformation(specificationId, version);
+ }
+ /*濡傛灉涓嶄负绌哄垯鏄鎵樻楠�,鍙睍绀烘垜浠妫�楠岀殑椤圭洰瑕佹眰鍙傛暟*/
+ //鑾峰彇璇曢獙椤圭洰淇℃伅(缁撴瀯,瀵肩嚎澶栧緞)
+ List<String> experiments = Arrays.stream(experiment.split(",")).collect(Collectors.toList());
+ //鏍规嵁鍨嬪彿id鍜岄」鐩俊鎭煡璇㈤」鐩俊鎭�
+ List<Map<String, Object>> products = new ArrayList<>();
+ for (String exper : experiments) {
+ List<Map<String, Object>> list = productMapper.selFath(specificationId, exper, version);
+ if (ObjectUtils.isEmpty(list)) {
+ Map<String, Object> project = productMapper.selNam(specificationId, exper, version);
+ products.add(project);
+ }
+ products.addAll(list);
+ }
+ return products;
+ }
+
/**
* 鏂板妫�楠岀敵璇疯〃
- *
- * @param id
+ * @param id 鐢ㄦ埛id
* @param
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public Integer addInspect(Integer id, InspectionVo inspectionVo) {
+ public Integer addInspect(Integer id, InspectionVo inspectionVo) throws ApplicationException {
+ log.info(inspectionVo.toString());
/*鏂板妫�楠岀敵璇疯〃*/
Inspection inspection = Inspection.builder()
.startTime(inspectionVo.getStartTime())
@@ -90,6 +134,22 @@
.userId(id)
.build();
inspectionMapper.insert(inspection);
+ /*濡傛灉鏄師鏉愭枡妫�楠�,鏂板涔嬪悗瑕佹洿鏀瑰師鏉愭枡鎶ユ鐨勭姸鎬佸拰妫�楠屼汉,妫�楠屾棩鏈�*/
+ if (inspectionVo.getType()==0) {
+ RawMaterial rawMaterial = new RawMaterial();
+ rawMaterial.setId(inspectionVo.getId());
+ rawMaterial.setType(1);
+ rawMaterial.setInspectionDate(DateUtil.date());
+ rawMaterial.setSurveyor(userMapper.selectById(id).getName());
+ rawMaterialMapper.updateById(rawMaterial);
+ }
+ /*濡傛灉鏄鎵樻楠�,鏂板涔嬪悗瑕佹洿鏀瑰鎵樻姤妫�鐨勭姸鎬�*/
+ else if (inspectionVo.getType()==2){
+ LinkDetection linkDetection = new LinkDetection();
+ linkDetection.setId(inspectionVo.getId());
+ linkDetection.setInspectionStatus(2);
+ linkDetectionMapper.updateById(linkDetection);
+ }
/*鏂板妫�楠屾牱鍝佽〃*/
InspectionMaterial inspectionMaterial = InspectionMaterial.builder()
.code(inspectionVo.getMcode())
@@ -97,31 +157,73 @@
.num(inspectionVo.getNum())
.unit(inspectionVo.getUnit())
.supplier(inspectionVo.getSupplier())
+ .specificationsId(inspectionVo.getSpecificationId())
.specifications(inspectionVo.getSpecifications())
.formTime(inspectionVo.getFormTime())
.inspectionId(inspection.getId())
+ .notes(inspectionVo.getNotes())
.build();
inspectionMaterialMapper.insert(inspectionMaterial);
/*鏂板妫�楠岄」鐩〃*/
- //鑾峰彇鐗╂枡id
- Material material = materialMapper.selectOne(Wrappers.<Material>query()
- .eq("name", inspectionVo.getName())
- .eq("code", inspectionVo.getMcode()));
- //鑾峰彇瑙勬牸鍚嶇О鍜屽瀷鍙峰悕绉�
- String specification = inspectionVo.getSpecifications();
- String[] split = specification.split("-");
- String stName = split[0];
- String spName = split[1];
- //鑾峰彇瑙勬牸id
- Standard standard = standardService.getOne(Wrappers.<Standard>query()
- .eq("name", stName)
- .eq("material_id", material.getId()));
- //鑾峰彇鍨嬪彿id
- Specifications specifications = specificationsService.getOne(Wrappers.<Specifications>query()
- .eq("name", spName)
- .eq("standard_id", standard.getId()));
- //鏍规嵁鍨嬪彿id鏌ヨ椤圭洰淇℃伅
- List<Product> productList = productMapper.selectList(Wrappers.<Product>query().eq("specifications_id", specifications.getId()));
+ //鏍规嵁鏍峰搧鍚嶇О缂栧彿浠ュ強鍨嬪彿瑙勬牸鑾峰彇鍨嬪彿id
+ Integer specificationId = Integer.parseInt(inspectionVo.getSpecificationId());
+ //if(ObjectUtils.isNotEmpty(inspectionVo.getSpecificationId())){
+ // specificationId =Integer.parseInt(inspectionVo.getSpecificationId());
+ //}else{
+ // specificationId=getSpecificationId(inspectionVo.getName(), inspectionVo.getMcode(), inspectionVo.getSpecifications());
+ //}
+ //濡傛灉璇曢獙椤圭洰瀛楁涓嶄负绌哄垯鎸夎瀛楁鐨勯」鐩繘琛屽尮閰�
+ if (ObjectUtils.isNotEmpty(inspectionVo.getExperiment())) {
+ //鑾峰彇璇曢獙椤圭洰淇℃伅(缁撴瀯,瀵肩嚎澶栧緞)
+ List<String> experiments = Arrays.stream(inspectionVo.getExperiment().split(",")).collect(Collectors.toList());
+ //鏍规嵁鍨嬪彿id鍜岄」鐩俊鎭煡璇㈤」鐩俊鎭�
+ List<Product> products = new ArrayList<>();
+ for (String experiment : experiments) {
+ List<Product> productList1 = productMapper.selectList(Wrappers.<Product>query()
+ .eq("specifications_id", specificationId)
+ .eq("father", experiment)
+ .eq("version", inspectionVo.getVersion()));
+ if (ObjectUtils.isEmpty(productList1)) {
+ Product product = productMapper.selectOne(Wrappers.<Product>query()
+ .eq("specifications_id", specificationId)
+ .isNull("father")
+ .eq("name", experiment)
+ .eq("version", inspectionVo.getVersion()));
+ products.add(product);
+ } else products.addAll(productList1);
+ }
+ //灏嗘煡璇㈢殑椤圭洰淇℃伅鏋勫缓鎴愭楠岄」鐩�
+ ArrayList<InspectionProduct> list = new ArrayList<>();
+ for (Product product : products) {
+ InspectionProduct rawInsProduct = InspectionProduct.builder()
+ .name(product.getName())
+ .unit(product.getUnit())
+ .required(product.getRequired())
+ .internal(product.getInternal())
+ .inspectionMaterialId(inspectionMaterial.getId())
+ .build();
+ list.add(rawInsProduct);
+ }
+ //妫�楠岄」鐩壒閲忔坊鍔�
+ inspectionProductService.saveBatch(list);
+ return inspection.getId();
+ }
+ //濡傛灉璇曢獙椤圭洰涓虹┖鍒欐寜鐓у瀷鍙穒d鍦ㄦ爣鍑嗗簱閲岄潰鍏ㄩ儴鍖归厤
+ List<Product> productList =
+ productMapper.selectList(Wrappers.<Product>query()
+ .eq("specifications_id", specificationId)
+ .eq("version",inspectionVo.getVersion()));
+ productList.stream().forEach(p->{
+ String internal = Optional.ofNullable(p)
+ .map(Product::getInternal)
+ .orElse("绌�");
+ String required = Optional.ofNullable(p)
+ .map(Product::getRequired).orElse("绌�");
+ if(Objects.equals("绌�",internal)||Objects.equals(required,"绌�")) {
+ throw new ApplicationException("椤圭洰鐗堟湰涓嶅彲鐢�");
+ }
+ });
+ //灏嗘煡璇㈢殑椤圭洰淇℃伅鏋勫缓鎴愭楠岄」鐩�
ArrayList<InspectionProduct> list = new ArrayList<>();
for (Product product : productList) {
InspectionProduct rawInsProduct = InspectionProduct.builder()
@@ -129,7 +231,7 @@
.unit(product.getUnit())
.required(product.getRequired())
.internal(product.getInternal())
- .inspectionMaterialId(material.getId())
+ .inspectionMaterialId(inspectionMaterial.getId())
.build();
list.add(rawInsProduct);
}
@@ -159,7 +261,8 @@
BeanUtils.copyProperties(inspectionMaterial, inspectDetailVo);
/*鏌ヨ妫�楠屽崟閲岄潰鐨勬楠岄」鐩�,骞跺皝瑁呭埌RawInspectVo瀵硅薄涓�*/
LambdaQueryWrapper<InspectionProduct> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(InspectionProduct::getInspectionMaterialId, inspectionMaterial.getId());
+ queryWrapper
+ .eq(InspectionProduct::getInspectionMaterialId, inspectionMaterial.getId());
List<InspectionProduct> inspectionProducts = inspectionProductMapper.selectList(queryWrapper);
//杩欓噷鏌ュ埌鐨勮澶噄d鍜屾楠屽憳id瑕佹煡璇㈠悕绉�
List<InsProductVo> insProductVos = inspectionProducts.stream().map(insProduct -> {
@@ -168,16 +271,15 @@
BeanUtils.copyProperties(insProduct, insProductVo);
//鑾峰彇璁惧鍚�(鍓嶆彁鏄鏋滃瓨鍦�)
if (insProduct.getInstrumentId() != null) {
- String equipmentName = instrumentService.getById(insProduct.getInstrumentId()).getEquipmentName();
- insProductVo.setInstrumentName(equipmentName);
+ insProductVo.setInstrumentId(insProduct.getInstrumentId());
}
//鑾峰彇鐢ㄦ埛鍚�(鍓嶆彁鏄鏋滃瓨鍦�)
- if (insProduct.getUserId() != null) {
- String userName = userMapper.selectById(insProduct.getUserId()).getName();
- insProductVo.setUserName(userName);
+ if (insProduct.getUserProId() != null) {
+ insProductVo.setUserId(insProduct.getUserProId());
}
//椤圭洰鍏宠仈鐗╂枡id
insProductVo.setInspectionMaterialId(inspectionMaterial.getId());
+ insProductVo.setId(insProduct.getId());
return insProductVo;
}).collect(Collectors.toList());
inspectDetailVo.setInsProducts(insProductVos);
@@ -212,6 +314,52 @@
return "淇濆瓨鎴愬姛!";
}
+ @Override
+ public boolean chooseEquipment(Integer id, Integer equipmentId) {
+ UpdateWrapper<InspectionProduct>inspectionProductUpdateWrapper=new UpdateWrapper<>();
+ inspectionProductUpdateWrapper.lambda().set(InspectionProduct::getInstrumentId,equipmentId)
+ .eq(InspectionProduct::getId,id);
+ return inspectionProductMapper.update(null,inspectionProductUpdateWrapper)>0;
+ }
+
+ @Override
+ public List<Material> getMaterielTypeIsOne() {
+ QueryWrapper<Material>queryWrapper=new QueryWrapper<>();
+ queryWrapper.lambda()
+ .select(Material::getName,Material::getId,Material::getCode)
+ .eq(Material::getType,1)
+ .eq(Material::getState,1);
+ return materialMapper.selectList(queryWrapper);
+ }
+
+ @Override
+ public Map<String, Object> getSpecification(Integer id) {
+ return materialMapper.getTreeByMaterialId(id);
+ }
+
+ /*鏍规嵁鏍峰搧鍚嶇О,鏍峰搧缂栧彿,鍨嬪彿瑙勬牸鑾峰彇鍨嬪彿id*/
+ private Integer getSpecificationId(String name, String mcode, String specification) {
+ //鑾峰彇鐗╂枡id
+ Material material = materialMapper.selectOne(Wrappers.<Material>query()
+ .eq("name", name)
+ .eq("code", mcode));
+ if (Objects.isNull(material)){
+ return null;
+ }
+ //鑾峰彇瑙勬牸鍚嶇О鍜屽瀷鍙峰悕绉�
+ String[] split = specification.split("-");
+ String stName = split[0];
+ String spName = split[1];
+ //鑾峰彇瑙勬牸id
+ Standard standard = standardService.getOne(Wrappers.<Standard>query()
+ .eq("name", stName)
+ .eq("material_id", material.getId()));
+ //鑾峰彇鍨嬪彿id
+ Specifications specifications = specificationsService.getOne(Wrappers.<Specifications>query()
+ .eq("name", spName)
+ .eq("standard_id", standard.getId()));
+ return specifications.getId();
+ }
}
--
Gitblit v1.9.3