From 2dbc49184bd74845c8da694c20d6fd03d7ac87e0 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 21 九月 2023 16:16:21 +0800
Subject: [PATCH] 修改 9.21
---
standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java | 259 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 235 insertions(+), 24 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..33ee29d 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
@@ -1,16 +1,23 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.Date;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* @author Administrator
@@ -18,42 +25,246 @@
* @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
+ TechnologyMapper technologyMapper;
+
+ @Resource
+ ProductMapper productMapper;
+
+ @Resource
+ MbomMapper mbomMapper;
+
+
+ //鏂板-->閫夋嫨浜у搧澶х被
+ @Override
+ public List<String> chooseFather() {
+ return technologyTemplateMapper.chooseType();
+ }
+
//鏍囧噯MOM-->宸︿晶浜旂骇鏍戝睍绀�
@Override
- public List<Map<String,Object>> selectTreeByMaterial() {
+ public List<Map<String, Object>> selectTreeByMaterial() {
return materialMapper.selectTreeByMaterial();
}
+ //(1,2绾�)鏂板-->鐗╂枡,鏍囧噯,鍨嬪彿
@Override
- public List<Map<String, Object>> selectMaterialIdAndNameAndCode() {
- LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>();
- wrapper.select(Material::getId, Material::getName, Material::getCode);
- return materialMapper.selectMaps(wrapper);
+ @Transactional(rollbackFor = Exception.class)
+ public String addMaterial(MaterialDto materialDto, Integer spId, Integer ver) {
+ //鏍¢獙娣诲姞鐗╂枡鏄惁閲嶅
+ List<Material> materialList = materialMapper.selectList(Wrappers.<Material>query()
+ .eq("type", materialDto.getType())
+ .eq("father", materialDto.getFather()));
+ for (Material material : materialList) {
+ if (material.getName().equals(materialDto.getName())) {
+ return "璇ョ被鍨嬩骇鍝佸ぇ绫讳笅鏈夎浜у搧鍚嶇О";
+ }
+ }
+ /*鏂板鐗╂枡琛�*/
+ 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);
+ /**
+ * 鏍规嵁閫夋嫨鐨勬儏鍐�,鍒ゆ柇鏄媺鍙栧熀纭�鏁版嵁鐨勬暟鎹�,杩樻槸鏌愪竴涓骇鍝佷笅鏌愪竴涓瀷鍙风殑鏁版嵁
+ */
+ //濡傛灉spId浼犵殑鍙傛暟鏄�0,鍒欐媺鍙栧熀纭�鏁版嵁鐨勬暟鎹�
+ if (spId == 0) {
+ /*鏂板鏍囧噯BOM-->宸ヨ壓璺嚎(鎵归噺娣诲姞)*/
+ List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", material.getFather()));
+ if (ObjectUtils.isEmpty(technologyTemplateList)) {
+ return "娣诲姞鐗╂枡銆�" + materialDto.getName() + "銆戞垚鍔�";
+ }
+ 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.setQualityTraceability(mbomModel.getQualityTraceability());
+ mbom.setSpecifications(mbomModel.getSpecifications());
+ mbom.setTechnologyId(technologyIds.get(i));
+ mbomList.add(mbom);
+ }
+ }
+ mbomService.saveBatch(mbomList);
+ return "娣诲姞鐗╂枡銆�" + materialDto.getName() + "銆戞垚鍔�";
+ }
+ //濡傛灉spId!=0,绛変簬閫夋嫨鐨勫叿浣撳瀷鍙�,鍒欐坊鍔犺鍨嬪彿鐗堟湰鐨勬暟鎹�
+ /*鏂板鏍囧噯BOM-->宸ヨ壓璺嚎(鎵归噺娣诲姞)*/
+ List<Technology> technologyList = technologyMapper.selAllByVerSpId(spId, ver);
+ List<Technology> technologys = technologyList.stream().map(technology -> {
+ Technology tec = new Technology();
+ tec.setSpecificationsId(specifications.getId());
+ tec.setName(technology.getName());
+ tec.setFather(technology.getFather());
+ tec.setDeviceGroup(technology.getDeviceGroup());
+ tec.setProductionQuota(technology.getProductionQuota());
+ return tec;
+ }).collect(Collectors.toList());
+ technologyService.saveBatch(technologys);
+ //涓よ�呴暱搴︿竴瀹氫竴鏍�
+ for (int i = 0; i < technologyList.size(); i++) {
+ /*鏂板鏍囧噯BOM-->鎶�鏈寚鏍�(鎵归噺娣诲姞)*/
+ List<Product> productList = productMapper.selProByVerSpe(technologyList.get(i).getId());
+ List<Product> products = new ArrayList<>();
+ for (Product product : productList) {
+ Product pro = new Product();
+ pro.setTechnologyId(technologys.get(i).getId());
+ pro.setName(product.getName());
+ pro.setFather(product.getFather());
+ pro.setUnit(product.getUnit());
+ pro.setRequired(product.getRequired());
+ pro.setInternal(product.getInternal());
+ products.add(pro);
+ }
+ productService.saveBatch(products);
+ /*鏂板鏍囧噯BOM-->鐗╂枡娓呭崟(鎵归噺娣诲姞)*/
+ List<Mbom> mbomList = mbomMapper.seleByTechId(technologyList.get(i).getId());
+ List<Mbom> mboms = new ArrayList<>();
+ for (Mbom mbom : mbomList) {
+ Mbom mbo = new Mbom();
+ mbo.setTechnologyId(technologys.get(i).getId());
+ mbo.setName(mbom.getName());
+ mbo.setUnit(mbom.getUnit());
+ mbo.setUnit(mbom.getUnit());
+ mbo.setNum(mbom.getNum());
+ mbo.setQualityTraceability(mbom.getQualityTraceability());
+ mbo.setSpecifications(mbom.getSpecifications());
+ mboms.add(mbo);
+ }
+ mbomService.saveBatch(mboms);
+ }
+ return "娣诲姞鐗╂枡銆�" + materialDto.getName() + "銆戞垚鍔�";
}
- //鏌ヨ鎵�鏈夌墿鏂欎俊鎭�
+
+ //娣诲姞鍚屼竴涓瀷鍙峰伐鑹鸿矾绾�,鎶�鏈寚鏍�,鐗╂枡娓呭崟鐨勭増鏈�
@Override
- public List<Material> selectMaterial() {
- return materialMapper.selectList(Wrappers.<Material>query());
+ @Transactional(rollbackFor = Exception.class)
+ public Integer addVersion(Integer specificationsId, Integer version) {
+ List<Technology> technologyList = technologyMapper.selectList(Wrappers.<Technology>query()
+ .eq("specifications_id", specificationsId)
+ .eq("version", version));
+ /*涓婁竴涓増鏈殑宸ヨ壓璺嚎id闆嗗悎*/
+ List<Integer> techTemIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
+ for (Technology technology : technologyList) {
+ technology.setId(null);
+ //鏈�鏂扮増鏈�+1
+ technology.setVersion(technologyMapper.selectVerByTec(specificationsId).get(0) + 1);
+ }
+ technologyService.saveBatch(technologyList);
+ /*宸ヨ壓璺嚎鐨勭増鏈柊澧炵殑鍚屾椂璇ュ伐鑹鸿矾绾夸笅涓嬬殑鎶�鏈寚鏍�,鐢熶骇宸ヨ壓,鐗╂枡娓呭崟閮借鏂板*/
+ //鏂板鐗堟湰鐨勫伐鑹鸿矾绾縤d闆嗗悎
+ List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
+ //涓よ�呴暱搴︿竴瀹氫竴鏍�
+ List<Product> productList = new ArrayList<>();
+ for (int i = 0; i < technologyIds.size(); i++) {
+ List<Product> products = productMapper.selectList(Wrappers.<Product>query().eq("technology_id", techTemIds.get(i)));
+ for (Product pro : products) {
+ Product product = new Product();
+ product.setFather(pro.getFather());
+ product.setName(pro.getName());
+ product.setUnit(pro.getUnit());
+ product.setRequired(pro.getRequired());
+ product.setInternal(pro.getInternal());
+ product.setVersion(pro.getVersion() + 1);
+ 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<Mbom> mboms = mbomMapper.selectList(Wrappers.<Mbom>query().eq("technology_id", techTemIds.get(i)));
+ for (Mbom mb : mboms) {
+ Mbom mbom = new Mbom();
+ mbom.setUnit(mb.getUnit());
+ mbom.setName(mb.getName());
+ mbom.setQualityTraceability(mb.getQualityTraceability());
+ mbom.setSpecifications(mb.getSpecifications());
+ mbom.setVersion(mb.getVersion() + 1);
+ mbom.setNum(mb.getNum());
+ mbom.setTechnologyId(technologyIds.get(i));
+ mbomList.add(mbom);
+ }
+ }
+ mbomService.saveBatch(mbomList);
+ return technologyList.get(0).getVersion();
}
- //鏍规嵁鐗╂枡鍚嶇О鏌ヨ鐗╂枡id鍜岀墿鏂欑紪鐮�
- @Override
- public List<Material> selectMcodeId(String name) {
- return materialMapper.selectMcodeId(name);
- }
-
- //鏍规嵁鐗╂枡鍚嶇О鍜岀墿鏂欑紪鐮佹煡璇㈢墿鏂檌d,瑙勬牸淇℃伅鍜屽瀷鍙蜂俊鎭�
- @Override
- public List<Map> selectIdByCoNa(String name, String code) {
- return materialMapper.selectIdByCoNa(name,code);
- }
}
--
Gitblit v1.9.3