From c28d3bb363dde2afb44c168b93379b2bf6b1f67f Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期四, 07 九月 2023 15:26:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 112 insertions(+), 5 deletions(-)

diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
index d925612..8fa48b7 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
@@ -1,14 +1,21 @@
 package com.yuanchu.mom.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+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.mom.mapper.SaleMapper;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
 import com.yuanchu.mom.service.OrdersService;
+import com.yuanchu.mom.service.SpecificationsService;
+import com.yuanchu.mom.service.StandardService;
+import com.yuanchu.mom.utils.MyUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * 璁㈠崟(Order)琛ㄦ湇鍔″疄鐜扮被
@@ -17,15 +24,115 @@
  * @since 2023-07-31 11:57:44
  */
 @Service("orderService")
-public class OrdersServiceImpl  implements OrdersService {
+public class OrdersServiceImpl implements OrdersService {
 
     @Resource
     SaleMapper saleMapper;
 
+    @Resource
+    MaterialMapper materialMapper;
+
+    @Resource
+    StandardService standardService;
+
+    @Resource
+    SpecificationsService specificationsService;
+
+    @Resource
+    SaleMaterialMapper saleMaterialMapper;
+
+    @Resource
+    ManufactureOrderMapper manufactureOrderMapper;
+
+    @Resource
+    ManualTechnologyMapper manualTechnologyMapper;
+
+    @Resource
+    SpecificationsMapper specificationsMapper;
+
+    @Resource
+    TechnologyMapper technologyMapper;
+
+
     //鏌ヨ鎵�鏈夎鍗曞垪琛�
     @Override
-    public IPage<Map<String, Object>> selectAllOrder(Page<Object> page, String orderCode, String name, Integer type , String time) {
-        return saleMapper.selectAllOrder(page, orderCode,name,type, time);
+    public IPage<Map<String, Object>> selectAllOrder(Page<Object> page, String orderCode, String name, Integer type, String time) {
+        return saleMapper.selectAllOrder(page, orderCode, name, type, time);
+    }
+
+    //缂栧埗璁㈠崟BOM
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void compile(Integer id) {
+        /*鏇存敼璁㈠崟BOM鐨勭姸鎬佷负宸茬紪鍒�1*/
+        SaleMaterial saleMaterial = saleMaterialMapper.selectById(id);
+        saleMaterial.setType(1);
+        saleMaterialMapper.updateById(saleMaterial);
+        /*鏂板鐢熶骇璁㈠崟+缂栧埗宸ュ簭*/
+        //鏌ヨ璁㈠崟淇℃伅
+        Sale sale = saleMapper.selectById(saleMaterial.getSaleId());
+        ManufactureOrder manufactureOrder = ManufactureOrder.builder()
+                .orderCode(sale.getOrderNumber())
+                .customerCode(sale.getCode())
+                .proname(sale.getProname())
+                .saleman(sale.getSaleman())
+                .name(saleMaterial.getName())
+                .specifications(saleMaterial.getSpecifications())
+                .unit(saleMaterial.getUnit())
+                .number(saleMaterial.getNumber())
+                .downtime(sale.getCreateTime())
+                .deltime(sale.getDelTime())
+                .qualityTraceability(MyUtil.getTimeSixNumberCode("GPT", "GPT"))
+                .downman(sale.getOrderName())
+                .build();
+        //鏂板鐢熶骇璁㈠崟
+        manufactureOrderMapper.insert(manufactureOrder);
+        //鏌ヨ浜у搧鐨勬渶鏂板伐搴�
+        //浜у搧缂栫爜
+        String code = materialMapper.selMcode(manufactureOrder.getName());
+        //鍨嬪彿id
+        Integer specificationId = getSpecificationId(manufactureOrder.getName(), code, manufactureOrder.getSpecifications());
+        //榛樿鏈�鏂扮増鏈�
+        Integer version = technologyMapper.selectVerByTec(specificationId).get(0);
+        List<Technology> technologyList = technologyMapper.selectList(Wrappers.<Technology>query()
+                .eq("specifications_id", specificationId)
+                .eq("version", version));
+        for (Technology technology : technologyList) {
+            ManualTechnology manualTechnology = ManualTechnology.builder()
+                    .techname(technology.getName())
+                    .techfather(technology.getFather())
+                    .deviceGroup(technology.getDeviceGroup())
+                    .manufactureOrderId(manufactureOrder.getId())
+                    .productionQuota(technology.getProductionQuota())
+                    .technologyId(technology.getId())
+                    .build();
+            //鏂板缂栧埗宸ュ簭琛�
+            manualTechnologyMapper.insert(manualTechnology);
+        }
+    }
+
+    /*鏍规嵁鏍峰搧鍚嶇О,鏍峰搧缂栧彿,鍨嬪彿瑙勬牸鑾峰彇鍨嬪彿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