From fa40e09b66af9d17b6d2dda1a3d4687ad72bf668 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 31 八月 2023 17:31:34 +0800
Subject: [PATCH] 标准BOM(展示+添加)

---
 standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java |  140 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 133 insertions(+), 7 deletions(-)

diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java
index a096fa2..ed84a91 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java
@@ -3,14 +3,19 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.mom.pojo.Material;
-import com.yuanchu.mom.service.MaterialService;
-import com.yuanchu.mom.mapper.MaterialMapper;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.pojo.dto.MaterialDto;
+import com.yuanchu.mom.service.*;
+import com.yuanchu.mom.utils.MyUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author Administrator
@@ -18,18 +23,139 @@
  * @createDate 2023-07-26 15:52:50
  */
 @Service
-public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material>
-        implements MaterialService {
+public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> implements MaterialService {
 
     @Resource
     MaterialMapper materialMapper;
 
+    @Resource
+    StandardMapper standardMapper;
+
+    @Resource
+    SpecificationsMapper specificationsMapper;
+
+    @Resource
+    TechnologyService technologyService;
+
+    @Resource
+    TechnologyTemplateMapper technologyTemplateMapper;
+
+    @Resource
+    ProductService productService;
+
+    @Resource
+    TechnicalModelMapper technicalModelMapper;
+
+    @Resource
+    MbomService mbomService;
+
+    @Resource
+    MbomModelMapper mbomModelMapper;
+
+    @Resource
+    TechniqueService techniqueService;
+
+    @Resource
+    TechniqueModelMapper techniqueModelMapper;
+
+    @Resource
+    DeviceMapper deviceMapper;
+
     //鏍囧噯MOM-->宸︿晶浜旂骇鏍戝睍绀�
     @Override
-    public List<Map<String,Object>> selectTreeByMaterial() {
+    public List<Map<String, Object>> selectTreeByMaterial() {
         return materialMapper.selectTreeByMaterial();
     }
 
+    //(1,2绾�)鏂板-->鐗╂枡,鏍囧噯,鍨嬪彿
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addMaterial(MaterialDto materialDto) {
+        /*鏂板鐗╂枡琛�*/
+        Material material = new Material();
+        material.setCode(MyUtil.getTimeSixNumberCode("ML", "ML"));
+        material.setName(materialDto.getName());
+        material.setType(materialDto.getType());
+        material.setFather(materialDto.getFather());
+        materialMapper.insert(material);
+        /*鏂板鏍囧噯琛�*/
+        Standard standard = new Standard();
+        standard.setName(materialDto.getStandard());
+        standard.setMaterial_id(material.getId());
+        standardMapper.insert(standard);
+        /*鏂板鍨嬪彿琛�*/
+        Specifications specifications = new Specifications();
+        specifications.setName(materialDto.getSpecifications());
+        specifications.setStandardId(standard.getId());
+        specificationsMapper.insert(specifications);
+        /*鏂板鏍囧噯BOM-->宸ヨ壓璺嚎(鎵归噺娣诲姞)*/
+        List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", materialDto.getFather()));
+        List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
+            Technology technology = new Technology();
+            technology.setSpecificationsId(specifications.getId());
+            technology.setFather(technologyTemplate.getFather());
+            technology.setName(technologyTemplate.getName());
+            technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
+            return technology;
+        }).collect(Collectors.toList());
+        technologyService.saveBatch(technologyList);
+        /*鏂板鏍囧噯BOM-->鎶�鏈寚鏍�(鎵归噺娣诲姞)*/
+        //鏂板鐨勫伐鑹鸿矾绾縤d闆嗗悎
+        List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
+        //鍩虹鏁版嵁涓伐鑹鸿矾绾縤d闆嗗悎
+        List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
+        //涓よ�呴暱搴︿竴瀹氫竴鏍�
+        List<Product> productList = new ArrayList<>();
+        for (int i = 0; i < technologyIds.size(); i++) {
+            List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
+            for (TechnicalModel technicalModel : technicalModelList) {
+                Product product = new Product();
+                product.setFather(technicalModel.getFather());
+                product.setName(technicalModel.getName());
+                product.setUnit(technicalModel.getUnit());
+                product.setTechnologyId(technologyIds.get(i));
+                productList.add(product);
+            }
+        }
+        productService.saveBatch(productList);
+        /*鏂板鏍囧噯BOM-->鐗╂枡娓呭崟(鎵归噺娣诲姞)*/
+        List<Mbom> mbomList = new ArrayList<>();
+        for (int i = 0; i < technologyIds.size(); i++) {
+            List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
+            for (MbomModel mbomModel : mbomModelList) {
+                Mbom mbom = new Mbom();
+                mbom.setUnit(mbomModel.getUnit());
+                mbom.setName(mbomModel.getName());
+                mbom.setSupplier(mbomModel.getSupplier());
+                mbom.setQualityTraceability(mbomModel.getQualityTraceability());
+                mbom.setSpecifications(mbomModel.getSpecifications());
+                mbom.setTechnologyId(technologyIds.get(i));
+                mbomList.add(mbom);
+            }
+        }
+        mbomService.saveBatch(mbomList);
+        /*鏂板鏍囧噯BOM-->鐢熶骇宸ヨ壓(鎵归噺娣诲姞)*/
+        List<Technique> techniqueList = new ArrayList<>();
+        for (int i = 0; i < technologyIds.size(); i++) {
+            List<TechniqueModel> techniqueModelList = techniqueModelMapper.selectList(Wrappers.<TechniqueModel>query().eq("tech_tem_id", techTemIds.get(i)));
+            for (TechniqueModel techniqueModel : techniqueModelList) {
+                //鏌ヨ璁惧鍚嶇О
+                Device device = deviceMapper.selectById(techniqueModel.getDeviceId());
+                //鏌ヨ鍩虹鐢熶骇宸ヨ壓涓瘡涓澶囩殑鍏蜂綋椤圭洰
+                TechnicalModel technicalModel = technicalModelMapper.selectById(techniqueModel.getTechnicalModelId());
+                Technique technique = new Technique();
+                technique.setTechnologyId(technologyIds.get(i));
+                technique.setDevice(device.getName());
+                technique.setProductFather(technicalModel.getFather());
+                technique.setProduct(technicalModel.getName());
+                technique.setUnit(technicalModel.getUnit());
+                techniqueList.add(technique);
+            }
+        }
+        techniqueService.saveBatch(techniqueList);
+    }
+
+    //妫�楠屾ā鍧�-->QMS绠$悊-->鎴愬搧妫�楠�-->鏂板(椤圭洰鍚嶇О涓嬫媺妗嗭細Id涓庡悕绉帮紝缂栫爜)
     @Override
     public List<Map<String, Object>> selectMaterialIdAndNameAndCode() {
         LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>();
@@ -52,7 +178,7 @@
     //鏍规嵁鐗╂枡鍚嶇О鍜岀墿鏂欑紪鐮佹煡璇㈢墿鏂檌d,瑙勬牸淇℃伅鍜屽瀷鍙蜂俊鎭�
     @Override
     public List<Map> selectIdByCoNa(String name, String code) {
-        return materialMapper.selectIdByCoNa(name,code);
+        return materialMapper.selectIdByCoNa(name, code);
     }
 }
 

--
Gitblit v1.9.3