From 66ff6f509bbbba04cffc428e7e1c886b534b4f13 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期四, 17 八月 2023 17:09:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java            |   67 ++++
 production-server/src/main/java/com/yuanchu/mom/mapper/ManualTechnologyMapper.java            |   20 +
 production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java |   36 ++
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/ImportRepertoryServiceImpl.java   |   76 ----
 inventory-server/pom.xml                                                                      |    7 
 inventory-server/src/main/java/com/yuanchu/mom/service/ImportRepertoryService.java            |   12 
 pom.xml                                                                                       |    1 
 inventory-server/src/main/java/com/yuanchu/mom/service/OrdersService.java                     |    5 
 production-server/src/main/resources/mapper/ManufactureOrderMapper.xml                        |   33 ++
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/ConsignmentServiceImpl.java       |   54 --
 standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java                        |    2 
 standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java                            |    5 
 production-server/src/main/java/com/yuanchu/mom/controller/ManualTechnologyController.java    |   25 +
 inventory-server/src/main/resources/mapper/RepertoryMapper.xml                                |    5 
 production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderMapper.java            |   21 +
 inventory-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java               |    4 
 production-server/pom.xml                                                                     |   37 ++
 standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java         |    2 
 production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java                    |   73 ++++
 standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java             |    6 
 standard-server/src/main/resources/mapper/DeviceMapper.xml                                    |   42 +-
 production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrder.java                    |  112 +++++++
 production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto.java             |   11 
 production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java          |   24 +
 inventory-server/src/main/java/com/yuanchu/mom/service/ConsignmentService.java                |   11 
 production-server/src/main/resources/mapper/ManualTechnologyMapper.xml                        |   15 
 inventory-server/src/main/java/com/yuanchu/mom/controller/ConsignmentController.java          |   23 -
 inventory-server/src/main/java/com/yuanchu/mom/controller/ImportRepertoryController.java      |   29 -
 standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java                      |    4 
 inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java                  |    6 
 inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java              |   13 
 production-server/src/main/java/com/yuanchu/mom/controller/ManufactureOrderController.java    |   87 +++++
 production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderServiceImpl.java |   32 ++
 inventory-server/src/main/resources/mapper/SaleMapper.xml                                     |    1 
 system-run/pom.xml                                                                            |    5 
 production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderService.java          |   29 +
 36 files changed, 702 insertions(+), 233 deletions(-)

diff --git a/inventory-server/pom.xml b/inventory-server/pom.xml
index baf1f1d..93844f5 100644
--- a/inventory-server/pom.xml
+++ b/inventory-server/pom.xml
@@ -37,6 +37,13 @@
             <artifactId>framework</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
+
+        <!--鐢熶骇妯″潡-->
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>production-server</artifactId>
+            <version>1.0.0</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/ConsignmentController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/ConsignmentController.java
index 28b986f..8bfd65b 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/controller/ConsignmentController.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/ConsignmentController.java
@@ -52,11 +52,6 @@
     })
     @GetMapping("/selSale")
     public Result selSale(String orderNumber) {
-        //鍙湁閿�鍞崟瀹℃牳閫氳繃涔嬪悗鎵嶈兘鍙戣揣
-        Sale sale = saleService.getOne(Wrappers.<Sale>query().eq("order_number", orderNumber));
-        if (ObjectUtils.isEmpty(sale.getType()) || sale.getType() != 1  ) {
-            return Result.fail("鍙湁閿�鍞崟瀹℃牳閫氳繃涔嬪悗鎵嶈兘鍙戣揣!");
-        }
         return Result.success(saleService.selSale(orderNumber));
     }
 
@@ -85,25 +80,7 @@
         return Result.success(map);
     }
 
-    @ApiOperation(value = "鏍规嵁鍙戣揣id鍒犻櫎")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "id", value = "鍙戣揣id", dataTypeClass = Integer.class, required = true)
-    })
-    @PostMapping("/delCon")
-    public Result delCon(Integer id) {
-        consignmentService.delCon(id);
-        return Result.success();
-    }
 
-    @ApiOperation(value = "鎵归噺鍒犻櫎")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "ids", value = "ids", dataTypeClass = Integer.class, dataType = "List", required = true)
-    })
-    @PostMapping("/delAllCon")
-    public Result delAllCon(@RequestParam("ids") List<Integer> ids) {
-        consignmentService.delAllCon(ids);
-        return Result.success();
-    }
 
 }
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/ImportRepertoryController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/ImportRepertoryController.java
index 648f37c..416c8b5 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/controller/ImportRepertoryController.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/ImportRepertoryController.java
@@ -37,16 +37,6 @@
     @Autowired
     private ImportRepertoryService importRepertoryService;
 
-    @Resource
-    Jwt jwt;
-
-    @ApiOperation(value = "鏂板鎴愬搧鍏ュ簱")
-    @PostMapping("/addImpRep")
-    public Result addSale(@RequestHeader("token") String token,@Validated @RequestBody ImportRepertoryDto importRepertoryDto) throws Exception {
-        Map<String, String> data = JackSonUtil.unmarshal(jwt.readJWT(token).get("data"), Map.class);
-        importRepertoryService.addImpRep(data.get("name").replaceAll("\"", ""), importRepertoryDto);
-        return Result.success("鏂板鎴愬姛!");
-    }
 
     @ApiOperation("鏌ヨ鎵�鏈夊叆搴撳垪琛�")
     @ApiImplicitParams(value = {
@@ -74,25 +64,6 @@
         return Result.success(importRepertoryService.getById(id));
     }
 
-    @ApiOperation(value = "鏍规嵁鍏ュ簱id鍒犻櫎")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "id", value = "鍏ュ簱id", dataTypeClass = Integer.class, required = true)
-    })
-    @PostMapping("/delImpRep")
-    public Result delImpRep(Integer id) {
-        importRepertoryService.delImpRep(id);
-        return Result.success();
-    }
-
-    @ApiOperation(value = "鎵归噺鍒犻櫎")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "ids", value = "ids", dataTypeClass = Integer.class, dataType = "List", required = true)
-    })
-    @PostMapping("/delAllImpRep")
-    public Result delAllImpRep(@RequestParam("ids") List<Integer> ids) {
-        importRepertoryService.delAllImpRep(ids);
-        return Result.success();
-    }
 
 }
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java
index 9608f4f..77ece38 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/OrdersController.java
@@ -57,8 +57,8 @@
     })
     @PostMapping("/compile")
     public Result compile(Integer id) {
-        //鏈畬寰呯画......
-        return Result.success();
+        ordersService.compile(id);
+        return Result.success("缂栧埗瀹屾垚!");
     }
 
 }
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java b/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java
index d4a5af9..889fd6d 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/pojo/dto/SaleMaterialDto.java
@@ -4,12 +4,18 @@
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 @Data
 @JsonSerialize
 //鏂板浜у搧淇℃伅鍙傛暟
 public class SaleMaterialDto {
 
+    //浜у搧id
+    @NotNull(message = "浜у搧id涓嶈兘涓虹┖")
+    @JsonSerialize
+    private Integer id;
+
     //浜у搧鍚嶇О
     @NotBlank(message = "浜у搧鍚嶇О涓嶈兘涓虹┖")
     @JsonSerialize
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/ConsignmentService.java b/inventory-server/src/main/java/com/yuanchu/mom/service/ConsignmentService.java
index d47a783..2eb27fe 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/ConsignmentService.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/ConsignmentService.java
@@ -34,16 +34,5 @@
      */
     IPage<Map<String, Object>> selectAllCon(Page<Object> page, String name, String specifications, String time);
 
-    /**
-     * 鏍规嵁id鍒犻櫎
-     * @param id
-     */
-    void delCon(Integer id);
-
-    /**
-     * 鎵归噺鍒犻櫎
-     * @param ids
-     */
-    void delAllCon(List<Integer> ids);
 }
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/ImportRepertoryService.java b/inventory-server/src/main/java/com/yuanchu/mom/service/ImportRepertoryService.java
index 6e851a2..508d4f9 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/ImportRepertoryService.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/ImportRepertoryService.java
@@ -17,8 +17,6 @@
  */
 public interface ImportRepertoryService extends IService<ImportRepertory> {
 
-    //鏂板鎴愬搧鍏ュ簱
-    void addImpRep(String name, ImportRepertoryDto importRepertoryDto);
 
     /**
      * 鏌ヨ鍏ュ簱鍒楄〃
@@ -30,16 +28,6 @@
      */
     IPage<Map<String, Object>> selectAllImpRep(Page<Object> page, String orderCode, String name, String time);
 
-    /**
-     * 鏍规嵁id鍒犻櫎
-     * @param id
-     */
-    void delImpRep(Integer id);
 
-    /**
-     * 鎵归噺鍒犻櫎
-     * @param ids
-     */
-    void delAllImpRep(List<Integer> ids);
 }
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/OrdersService.java b/inventory-server/src/main/java/com/yuanchu/mom/service/OrdersService.java
index 7ea9f45..94e40b0 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/OrdersService.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/OrdersService.java
@@ -22,5 +22,10 @@
     IPage<Map<String, Object>> selectAllOrder(Page<Object> page, String orderCode, String name, Integer type , String time);
 
 
+    /**
+     * 缂栧埗璁㈠崟BOM
+     * @param id
+     */
+    void compile(Integer id);
 }
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ConsignmentServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ConsignmentServiceImpl.java
index b96b27b..2e2d137 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ConsignmentServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ConsignmentServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.mom.mapper.ConsignmentMapper;
@@ -16,6 +18,7 @@
 import com.yuanchu.mom.utils.MyUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -43,6 +46,7 @@
 
     //鏂板鎴愬搧鍙戣揣
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public String addCon(String name, ConsignmentDto consignmentDto) {
         //鐢熸垚涓�涓娂杩愬崟缂栧彿
         String escortCode = MyUtil.getTimeSixNumberCode("YY", "num");
@@ -70,61 +74,21 @@
         return consignmentMapper.selectAllCon(page, name, specifications, time);
     }
 
-    //鏍规嵁id鍒犻櫎
-    @Override
-    public void delCon(Integer id) {
-        //鍒犻櫎鍙戣揣璁板綍
-        Consignment consignment = consignmentMapper.selectById(id);
-        consignment.setState(0);
-        consignmentMapper.updateById(consignment);
-        //搴撳瓨涔熻鏂板
-        LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Repertory::getQualityTraceability, consignment.getQualityTraceability())
-                .eq(Repertory::getName, consignment.getName())
-                .eq(Repertory::getSpecifications, consignment.getSpecifications())
-                .eq(Repertory::getUnit, consignment.getUnit())
-                .eq(Repertory::getType, 0); //鎴愬搧鍙戣揣
-        Repertory repertory = repertoryMapper.selectOne(queryWrapper);
-        repertory.setNumber(repertory.getNumber() + consignment.getNumber());
-        repertoryMapper.updateById(repertory);
-    }
-
-    //鎵归噺鍒犻櫎
-    @Override
-    public void delAllCon(List<Integer> ids) {
-        List<Consignment> consignments = consignmentMapper.selectBatchIds(ids);
-        for (Consignment consignment : consignments) {
-            consignment.setState(0);
-            //鍒犻櫎鍙戣揣璁板綍
-            consignmentMapper.updateById(consignment);
-            //搴撳瓨鏂板
-            LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(Repertory::getQualityTraceability, consignment.getQualityTraceability())
-                    .eq(Repertory::getName, consignment.getName())
-                    .eq(Repertory::getSpecifications, consignment.getSpecifications())
-                    .eq(Repertory::getUnit, consignment.getUnit())
-                    .eq(Repertory::getType, 0); //鎴愬搧鍙戣揣
-            Repertory repertory = repertoryMapper.selectOne(queryWrapper);
-            repertory.setNumber(repertory.getNumber() + consignment.getNumber());
-            repertoryMapper.updateById(repertory);
-        }
-    }
-
-
     //鏂板鍙戣揣涓�绯诲垪鎿嶄綔
     private String addConsign(String name, ConsignmentDto consignmentDto, String escortCode) {
         /*鏂板鎴愬搧鍙戣揣*/
         List<ConsignmentDto2> messages = consignmentDto.getMessages();
         for (ConsignmentDto2 message : messages) {
-            //鏌ヨ浜у搧缂栫爜(閫氳繃鍦ㄦ垚鍝佸簱瀛樿〃涓殑浜у搧鍚嶇О,瑙勬牸鍨嬪彿浠ュ強鍗曚綅杩涜鏌ユ壘)
+            //鏌ヨ浜у搧搴撳瓨鏁伴噺
             LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(Repertory::getName, message.getName())
                     .eq(Repertory::getSpecifications, message.getSpecifications())
                     .eq(Repertory::getUnit, message.getUnit())
-                    .eq(Repertory::getType, 0);
+                    .eq(Repertory::getType, 0)
+                    .eq(Repertory::getOrderCode, consignmentDto.getOrderCode());
             Repertory repertory = repertoryMapper.selectOne(queryWrapper);
-            //璇ユ垚鍝佸簱瀛樼殑鏁伴噺澶т簬绛変簬鍙戣揣鐨勬暟閲忔墠鑳借繘琛屽彂璐�
-            if (repertory.getNumber() < message.getNumber()) {
+            //璇ユ垚鍝佸簱瀛樹笉涓虹┖涓旀暟閲忓ぇ浜庣瓑浜庡彂璐х殑鏁伴噺鎵嶈兘杩涜鍙戣揣
+            if (ObjectUtils.isNotEmpty(repertory) && repertory.getNumber() < message.getNumber()) {
                 return "搴撳瓨涓嶈冻,鏃犳硶鍙戣揣!";
             }
             //鏋勯�犳垚鍝佸彂璐у疄浣撶被
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ImportRepertoryServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ImportRepertoryServiceImpl.java
index e23fda3..d0699e0 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ImportRepertoryServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/ImportRepertoryServiceImpl.java
@@ -30,41 +30,6 @@
     @Resource
     ImportRepertoryMapper importRepertoryMapper;
 
-    @Resource
-    RepertoryMapper repertoryMapper;
-
-    //鏂板鎴愬搧鍏ュ簱
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void addImpRep(String name, ImportRepertoryDto importRepertoryDto) {
-        //鏂板鎴愬搧鍏ュ簱
-        ImportRepertory importRepertory = new ImportRepertory();
-        BeanUtils.copyProperties(importRepertoryDto, importRepertory);
-        importRepertory.setUserName(name);
-        importRepertoryMapper.insert(importRepertory);
-        /*鏂板鎴愬搧搴撳瓨(鏈楠�)*/
-        //濡傛灉鍏ュ簱鐨勪俊鎭竴鏍峰彧鏈夊簱瀛樹笉涓�鏍�,鍒欏湪鍘熸潵鐨勫簱瀛樻暟閲忎笂鍔犱笂鐩稿簲鐨勬暟閲�
-        LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Repertory::getOrderCode, importRepertoryDto.getOrderCode())
-                .eq(Repertory::getQualityTraceability, importRepertoryDto.getQualityTraceability())
-                .eq(Repertory::getName, importRepertoryDto.getName())
-                .eq(Repertory::getSpecifications, importRepertoryDto.getSpecifications())
-                .eq(Repertory::getUnit, importRepertoryDto.getUnit())
-                .eq(Repertory::getType, 0);
-        Repertory rep = repertoryMapper.selectOne(queryWrapper);
-        if (rep != null ) {
-            rep.setNumber(rep.getNumber() + importRepertoryDto.getNumber());
-            rep.setUserName(name);
-            repertoryMapper.updateById(rep);
-        } else {
-            //濡傛灉闄や簡搴撳瓨鍒殑淇℃伅鏈変换浣曚竴涓笉涓�鏍�,鍒欐柊澧炰竴鏉℃垚鍝佸簱瀛�
-            Repertory repertory = new Repertory();
-            BeanUtils.copyProperties(importRepertoryDto, repertory);
-            repertory.setUserName(name);
-            repertory.setType(0);
-            repertoryMapper.insert(repertory);
-        }
-    }
 
     //鏌ヨ鍏ュ簱鍒楄〃
     @Override
@@ -72,46 +37,5 @@
         return importRepertoryMapper.selectAllImpRep(page, orderCode, name, time);
     }
 
-    //鏍规嵁id鍒犻櫎
-    @Override
-    public void delImpRep(Integer id) {
-        //鍒犻櫎鍏ュ簱璁板綍
-        ImportRepertory importRepertory = importRepertoryMapper.selectById(id);
-        importRepertory.setState(0);
-        importRepertoryMapper.updateById(importRepertory);
-        //搴撳瓨涔熻鍑忓皯
-        LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Repertory::getOrderCode, importRepertory.getOrderCode())
-                .eq(Repertory::getQualityTraceability, importRepertory.getQualityTraceability())
-                .eq(Repertory::getName, importRepertory.getName())
-                .eq(Repertory::getSpecifications, importRepertory.getSpecifications())
-                .eq(Repertory::getUnit, importRepertory.getUnit())
-                .eq(Repertory::getType, 0);
-        Repertory rep = repertoryMapper.selectOne(queryWrapper);
-        rep.setNumber(rep.getNumber() - importRepertory.getNumber());
-        repertoryMapper.updateById(rep);
-    }
-
-    //鎵归噺鍒犻櫎
-    @Override
-    public void delAllImpRep(List<Integer> ids) {
-        List<ImportRepertory> importRepertories = importRepertoryMapper.selectBatchIds(ids);
-        for (ImportRepertory importRepertory : importRepertories) {
-            importRepertory.setState(0);
-            //鍒犻櫎鍏ュ簱璁板綍
-            importRepertoryMapper.updateById(importRepertory);
-            //鍑忓皯搴撳瓨
-            LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(Repertory::getOrderCode, importRepertory.getOrderCode())
-                    .eq(Repertory::getQualityTraceability, importRepertory.getQualityTraceability())
-                    .eq(Repertory::getName, importRepertory.getName())
-                    .eq(Repertory::getSpecifications, importRepertory.getSpecifications())
-                    .eq(Repertory::getUnit, importRepertory.getUnit())
-                    .eq(Repertory::getType, 0);
-            Repertory rep = repertoryMapper.selectOne(queryWrapper);
-            rep.setNumber(rep.getNumber() - importRepertory.getNumber());
-            repertoryMapper.updateById(rep);
-        }
-    }
 }
 
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..538af0e 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,13 +1,19 @@
 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.ManufactureOrderService;
 import com.yuanchu.mom.service.OrdersService;
+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;
 
 /**
@@ -22,11 +28,70 @@
     @Resource
     SaleMapper saleMapper;
 
+    @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);
     }
 
+    //缂栧埗璁㈠崟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"))
+                .build();
+        //鏂板鐢熶骇璁㈠崟
+        manufactureOrderMapper.insert(manufactureOrder);
+        //鏌ヨ浜у搧鐨勫伐搴�
+        String[] split = manufactureOrder.getSpecifications().split("-");
+        Specifications specifications = specificationsMapper.selectOne(Wrappers.<Specifications>query().eq("name", split[1]));
+        List<Technology> technologyList = technologyMapper.selectList(Wrappers.<Technology>query().eq("specifications_id", specifications.getId()));
+        for (Technology technology : technologyList) {
+            ManualTechnology manualTechnology = ManualTechnology.builder()
+                    .techname(technology.getName())
+                    .techfather(technology.getFather())
+                    .deviceGroup(technology.getDeviceGroup())
+                    .manufactureOrderId(manufactureOrder.getId())
+                    .build();
+            //鏂板缂栧埗宸ュ簭琛�
+            manualTechnologyMapper.insert(manualTechnology);
+        }
+    }
+
 }
 
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
index 793746c..616b11a 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -116,14 +116,11 @@
         BeanUtils.copyProperties(saleVo, sale);
         //鏇存柊閿�鍞崟
         saleMapper.updateById(sale);
-        List<SaleMaterial> saleMaterials = saleMaterialMapper.selectSaleDatil(id);
-        for (SaleMaterial saleMaterial : saleMaterials) {
-            List<SaleMaterialDto> saleMaterialDtos = saleVo.getSaleMaterialList();
-            for (SaleMaterialDto saleMaterialDto : saleMaterialDtos) {
-                BeanUtils.copyProperties(saleMaterialDto, saleMaterial);
-                //鏇存柊閿�鍞骇鍝佸崟
-                saleMaterialMapper.updateById(saleMaterial);
-            }
+        List<SaleMaterialDto> saleMaterialDtos = saleVo.getSaleMaterialList();
+        for (SaleMaterialDto saleMaterialDto : saleMaterialDtos) {
+            SaleMaterial saleMaterial = new SaleMaterial();
+            BeanUtils.copyProperties(saleMaterialDto,saleMaterial);
+            saleMaterialMapper.updateById(saleMaterial);
         }
     }
 
diff --git a/inventory-server/src/main/resources/mapper/RepertoryMapper.xml b/inventory-server/src/main/resources/mapper/RepertoryMapper.xml
index e978167..8c1802e 100644
--- a/inventory-server/src/main/resources/mapper/RepertoryMapper.xml
+++ b/inventory-server/src/main/resources/mapper/RepertoryMapper.xml
@@ -6,9 +6,9 @@
         name,
         specifications,
         quality_traceability,
-        check_result,
         user_name,
         DATE_FORMAT(create_time, '%Y-%m-%d') '鍏ュ簱鏃ユ湡',
+        check_result,
         note
         from mom_ocean.repertory
         <where>
@@ -24,9 +24,6 @@
             </if>
             <if test="type!=null ">
                 and type=#{type}
-            </if>
-            <if test="result!=null ">
-                and check_result=#{result}
             </if>
             order by id desc
         </where>
diff --git a/inventory-server/src/main/resources/mapper/SaleMapper.xml b/inventory-server/src/main/resources/mapper/SaleMapper.xml
index d218129..a67167e 100644
--- a/inventory-server/src/main/resources/mapper/SaleMapper.xml
+++ b/inventory-server/src/main/resources/mapper/SaleMapper.xml
@@ -56,6 +56,5 @@
             and s.create_time=#{time}
         </if>
         order by delTime
-
     </select>
 </mapper>
diff --git a/pom.xml b/pom.xml
index a3f1ad8..4402414 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,6 +22,7 @@
         <module>inspect-server</module>
         <module>inventory-server</module>
         <module>system-run</module>
+        <module>production-server</module>
     </modules>
 
     <properties>
diff --git a/production-server/pom.xml b/production-server/pom.xml
new file mode 100644
index 0000000..ca5d743
--- /dev/null
+++ b/production-server/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>mom</artifactId>
+        <groupId>com.yuanchu.mom</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>production-server</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>framework</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>user-server</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>standard-server</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/production-server/src/main/java/com/yuanchu/mom/controller/ManualTechnologyController.java b/production-server/src/main/java/com/yuanchu/mom/controller/ManualTechnologyController.java
new file mode 100644
index 0000000..54c7334
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/controller/ManualTechnologyController.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.yuanchu.mom.service.ManualTechnologyService;
+
+
+/**
+ * 缂栧埗宸ュ簭琛�(ManualTechnology)琛ㄦ帶鍒跺眰
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:46
+ */
+@Api(tags = "缂栧埗宸ュ簭琛ㄦ帴鍙�")
+@RestController
+@RequestMapping("/manualTechnology")
+public class ManualTechnologyController {
+
+    @Autowired
+    private ManualTechnologyService manualTechnologyService;
+
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/controller/ManufactureOrderController.java b/production-server/src/main/java/com/yuanchu/mom/controller/ManufactureOrderController.java
new file mode 100644
index 0000000..4e64912
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/controller/ManufactureOrderController.java
@@ -0,0 +1,87 @@
+package com.yuanchu.mom.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.mapper.ManualTechnologyMapper;
+import com.yuanchu.mom.pojo.ManualTechnology;
+import com.yuanchu.mom.service.DeviceService;
+import com.yuanchu.mom.service.ManualTechnologyService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.yuanchu.mom.service.ManufactureOrderService;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 鐢熶骇璁㈠崟琛�(ManufactureOrder)琛ㄦ帶鍒跺眰
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:24
+ */
+@Api(tags = "鐢熶骇绠$悊-->鐢熶骇璁㈠崟")
+@RestController
+@RequestMapping("/manufactureOrder")
+public class ManufactureOrderController {
+
+    @Autowired
+    private ManufactureOrderService manufactureOrderService;
+
+    @Resource
+    ManualTechnologyService manualTechnologyService;
+
+    @Resource
+    DeviceService deviceService;
+
+    @ApiOperation(value = "鏌ヨ鐢熶骇璁㈠崟鍒楄〃")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "pageSize", value = "椤垫暟", dataTypeClass = Integer.class, required = true),
+            @ApiImplicitParam(name = "countSize", value = "鏉℃暟/椤�", dataTypeClass = Integer.class, required = true),
+            @ApiImplicitParam(name = "downTime", value = "涓嬪崟鏃ユ湡", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "delTime", value = "浜よ揣鏃ユ湡", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "customerCode", value = "鍚堝悓缂栧彿", dataTypeClass = String.class),
+            @ApiImplicitParam(name = "type", value = "鐘舵��(涓虹┖=鍏ㄩ儴)", dataTypeClass = Integer.class)
+    })
+    @GetMapping("/selectAllManord")
+    public Result selectAllManord(int pageSize, int countSize, String downTime, String delTime, String customerCode, Integer type) {
+        IPage<Map<String, Object>> manufactureOrderPage = manufactureOrderService.selectAllManord(new Page<Object>(pageSize, countSize), downTime, delTime, customerCode, type);
+        Map<String, Object> map = new HashMap<>();
+        map.put("total", manufactureOrderPage.getTotal());
+        map.put("row", manufactureOrderPage.getRecords());
+        return Result.success(map);
+    }
+
+    @ApiOperation(value = "鎺掍骇-->1.鏌ョ湅")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "manOrdId", value = "鐢熶骇璁㈠崟id", dataTypeClass = Integer.class, required = true)
+    })
+    @GetMapping("/seleDatil")
+    public Result seleDatil(Integer manOrdId) {
+        return Result.success(manualTechnologyService.seleDatil(manOrdId));
+    }
+
+    @ApiOperation(value = "鎺掍骇-->2.閫夋嫨璁惧")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "deviceGroup", value = "璁惧缁�", dataTypeClass = String.class, required = true)
+    })
+    @GetMapping("/seleDevice")
+    public Result seleDevice(String deviceGroup) {
+        return Result.success(deviceService.getDeviceNameByGroup(deviceGroup));
+    }
+
+    @ApiOperation(value = "鎺掍骇-->3.鏇存柊")
+    @PostMapping("/output")
+    public Result output(String deviceGroup) {
+        return Result.success();
+    }
+
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/mapper/ManualTechnologyMapper.java b/production-server/src/main/java/com/yuanchu/mom/mapper/ManualTechnologyMapper.java
new file mode 100644
index 0000000..5cfae84
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/mapper/ManualTechnologyMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.ManualTechnology;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 缂栧埗宸ュ簭琛�(ManualTechnology)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:46
+ */
+public interface ManualTechnologyMapper extends BaseMapper<ManualTechnology> {
+
+    //鎺掍骇-->鏌ョ湅
+    List<Map<String, Object>> seleDatil(Integer manOrdId);
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderMapper.java b/production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderMapper.java
new file mode 100644
index 0000000..8581de5
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/mapper/ManufactureOrderMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ManufactureOrder;
+
+import java.util.Map;
+
+/**
+ * 鐢熶骇璁㈠崟琛�(ManufactureOrder)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:25
+ */
+public interface ManufactureOrderMapper extends BaseMapper<ManufactureOrder> {
+
+    //鏌ヨ鐢熶骇璁㈠崟鍒楄〃
+    IPage<Map<String, Object>> selectAllManord(Page<Object> page, String downTime, String delTime, String customerCode, Integer type);
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java b/production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java
new file mode 100644
index 0000000..066dbcf
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java
@@ -0,0 +1,73 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 缂栧埗宸ュ簭琛�(ManualTechnology)琛ㄥ疄浣撶被
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:46
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@TableName("manual_technology")
+public class ManualTechnology implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     **/
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 宸ュ簭鍚嶇О
+     **/
+    private String techname;
+
+    /**
+     * 宸ュ簭鐖剁被
+     **/
+    private String techfather;
+
+    /**
+     * 璁惧缁�
+     **/
+    private String deviceGroup;
+
+    /**
+     * 鍏宠仈 璁惧id
+     **/
+    private String deviceId;
+
+    /**
+     * 鍏宠仈 鐢熶骇璁㈠崟id
+     **/
+    private Integer manufactureOrderId;
+
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+    private Integer state;
+
+    @TableField(fill = FieldFill.INSERT)
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date updateTime;
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrder.java b/production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrder.java
new file mode 100644
index 0000000..3d6d2c8
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/pojo/ManufactureOrder.java
@@ -0,0 +1,112 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 鐢熶骇璁㈠崟琛�(ManufactureOrder)琛ㄥ疄浣撶被
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:25
+ */
+@Data
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@Builder
+@TableName("manufacture_order")
+public class ManufactureOrder implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     **/
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 璁㈠崟缂栧彿
+     **/
+    private String orderCode;
+
+    /**
+     * 鍚堝悓缂栧彿(瀹㈡埛璁㈠崟鍙�)
+     **/
+    private String customerCode;
+
+    /**
+     * 瀹㈡埛鍚嶇О
+     **/
+    private String proname;
+
+    /**
+     * 涓氬姟缁忕悊(涓氬姟鍛�)
+     **/
+    private String saleman;
+
+    /**
+     * 浜у搧鍚嶇О
+     **/
+    private String name;
+
+    /**
+     * 瑙勬牸鍨嬪彿
+     **/
+    private String specifications;
+
+    /**
+     * 鍗曚綅
+     **/
+    private String unit;
+
+    /**
+     * 鏁伴噺
+     **/
+    private Integer number;
+
+    /**
+     * 涓嬪崟鏃ユ湡
+     **/
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date downtime;
+
+    /**
+     * 浜よ揣鏃ユ湡
+     **/
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date deltime;
+
+    /**
+     * 鐘舵��0:寰呮帓浜�;1:宸叉帓浜�
+     **/
+    private Integer type;
+
+    /**
+     * 璐ㄩ噺杩芥函鍙�
+     **/
+    private String qualityTraceability;
+
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+    private Integer state;
+
+    @TableField(fill = FieldFill.INSERT)
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date updateTime;
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto.java b/production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto.java
new file mode 100644
index 0000000..88ec6f4
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/pojo/dto/ManualTechnologyDto.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.pojo.dto;
+
+import lombok.Data;
+
+@Data
+//鏇存柊鎺掍骇(閫夋嫨璁惧)
+public class ManualTechnologyDto {
+
+    private Integer id;
+
+}
diff --git a/production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java b/production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java
new file mode 100644
index 0000000..6405940
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.ManualTechnology;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 缂栧埗宸ュ簭琛�(ManualTechnology)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:46
+ */
+public interface ManualTechnologyService extends IService<ManualTechnology> {
+
+    /**
+     * 鎺掍骇-->1.鏌ョ湅
+     * @param manOrdId
+     * @return
+     */
+    List<Map<String,Object>> seleDatil(Integer manOrdId);
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderService.java b/production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderService.java
new file mode 100644
index 0000000..e3abaae
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/service/ManufactureOrderService.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.ManufactureOrder;
+
+import java.util.Map;
+
+/**
+ * 鐢熶骇璁㈠崟琛�(ManufactureOrder)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:25
+ */
+public interface ManufactureOrderService extends IService<ManufactureOrder> {
+
+    /**
+     * 鏌ヨ鐢熶骇璁㈠崟鍒楄〃
+     * @param page
+     * @param downTime
+     * @param delTime
+     * @param customerCode
+     * @param type
+     * @return
+     */
+    IPage<Map<String, Object>> selectAllManord(Page<Object> page, String downTime, String delTime, String customerCode, Integer type);
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java b/production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java
new file mode 100644
index 0000000..874c759
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/service/impl/ManualTechnologyServiceImpl.java
@@ -0,0 +1,36 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.ManualTechnologyMapper;
+import com.yuanchu.mom.pojo.ManualTechnology;
+import com.yuanchu.mom.service.ManualTechnologyService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 缂栧埗宸ュ簭琛�(ManualTechnology)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:46
+ */
+@Service
+public class ManualTechnologyServiceImpl extends ServiceImpl<ManualTechnologyMapper, ManualTechnology> implements ManualTechnologyService {
+
+    @Resource
+    ManualTechnologyMapper manualTechnologyMapper;
+
+    @Resource
+    DeviceMapper deviceMapper;
+
+    //鎺掍骇-->鏌ョ湅
+    @Override
+    public List<Map<String,Object>> seleDatil(Integer manOrdId) {
+        return manualTechnologyMapper.seleDatil(manOrdId);
+    }
+}
+
diff --git a/production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderServiceImpl.java b/production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderServiceImpl.java
new file mode 100644
index 0000000..3e3078a
--- /dev/null
+++ b/production-server/src/main/java/com/yuanchu/mom/service/impl/ManufactureOrderServiceImpl.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.ManufactureOrderMapper;
+import com.yuanchu.mom.pojo.ManufactureOrder;
+import com.yuanchu.mom.service.ManufactureOrderService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 鐢熶骇璁㈠崟琛�(ManufactureOrder)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author zss
+ * @since 2023-08-17 14:16:25
+ */
+@Service
+public class ManufactureOrderServiceImpl extends ServiceImpl<ManufactureOrderMapper, ManufactureOrder> implements ManufactureOrderService {
+
+    @Resource
+    ManufactureOrderMapper manufactureOrderMapper;
+
+    //鏌ヨ鐢熶骇璁㈠崟鐨勫垪琛�
+    @Override
+    public IPage<Map<String, Object>> selectAllManord(Page<Object> page, String downTime, String delTime, String customerCode, Integer type) {
+        return manufactureOrderMapper.selectAllManord(page,downTime,delTime,customerCode,type);
+    }
+}
+
diff --git a/production-server/src/main/resources/mapper/ManualTechnologyMapper.xml b/production-server/src/main/resources/mapper/ManualTechnologyMapper.xml
new file mode 100644
index 0000000..743e3ab
--- /dev/null
+++ b/production-server/src/main/resources/mapper/ManualTechnologyMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.ManualTechnologyMapper">
+    <select id="seleDatil" resultType="java.util.Map">
+        select manual_technology.id,
+               techfather,
+               techname,
+               device_group,
+               name
+        from mom_ocean.manual_technology
+                 left join mom_ocean.device
+                           on device.id = device_id
+        where manufacture_order_id=#{manOrdId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/production-server/src/main/resources/mapper/ManufactureOrderMapper.xml b/production-server/src/main/resources/mapper/ManufactureOrderMapper.xml
new file mode 100644
index 0000000..080c60c
--- /dev/null
+++ b/production-server/src/main/resources/mapper/ManufactureOrderMapper.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.ManufactureOrderMapper">
+    <!--鏌ヨ鐢熶骇璁㈠崟鐨勫垪琛�-->
+    <select id="selectAllManord" resultType="java.util.Map">
+        select id,
+        order_code,
+        customer_code,
+        saleman,
+        proname,
+        name,
+        specifications,
+        unit,
+        number,
+        DATE_FORMAT(downTime, '%Y-%m-%d') '涓嬪崟鏃ユ湡',
+        DATE_FORMAT(delTime, '%Y-%m-%d') '浜よ揣鏃ユ湡',
+        type
+        from mom_ocean.manufacture_order
+        where state=1
+        <if test="downTime!=null and downTime!=''">
+            and downTime=#{downTime}
+        </if>
+        <if test="delTime!=null and delTime!=''">
+            and delTime=#{delTime}
+        </if>
+        <if test="customerCode!=null and customerCode!=''">
+            and customer_code like concat('%',#{customerCode},'%')
+        </if>
+        <if test="type!=null">
+            and type=#{type}
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java b/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
index 4b3a118..26146fa 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
@@ -19,4 +19,6 @@
     List<Map<String, Object>> deviceTwoTree(Integer type, String search_class);
 
     List<Map<String, Object>> DevicePageList(String codeNameModel, Integer type, Integer deviceStatue, Integer deviceId, String fatherName);
+
+    List<Map<String, Object>> getDeviceNameByGroup(String deviceGroup);
 }
diff --git a/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java b/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java
index c1754bd..c9f0d0a 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/pojo/Technology.java
@@ -34,7 +34,8 @@
     @ApiModelProperty(value = "宸ヨ壓鍚嶇О")
     private String name;
 
-    private String quota;
+    @ApiModelProperty(value = "鐖剁骇")
+    private String father;
 
     @ApiModelProperty(value = "璁惧缁�")
     private String deviceGroup;
@@ -56,8 +57,6 @@
     @ApiModelProperty(value = "鍏宠仈 瑙勬牸id")
     private Integer specificationsId;
 
-    @ApiModelProperty(value = "鍏宠仈 璁惧id")
-    private Integer deviceId;
 
 
 }
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java b/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
index 23233a7..3f30914 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
@@ -36,6 +36,10 @@
 
     Integer deviceDelete(Integer deviceId);
 
+    Integer deviceDeleteIdOrFather(Integer id, String deviceFather);
+
+    List<Map<String, Object>> getDeviceNameByGroup(String deviceGroup);
+
     Integer deviceDeleteIdOrFather(Integer id, Integer type, String deviceFather);
 
     List<Map<String, Object>> selectDeviceIdAndName();
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
index 9568176..76e4c37 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -109,6 +109,12 @@
         return deviceMapper.update(new Device(), updateWrapper);
     }
 
+    //鏍规嵁鍒嗙粍鏌ヨ璁惧鍚�
+    @Override
+    public List<Map<String, Object>> getDeviceNameByGroup(String deviceGroup) {
+        return deviceMapper.getDeviceNameByGroup(deviceGroup);
+    }
+
     @Override
     public List<Map<String, Object>> selectDeviceIdAndName() {
         LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>();
diff --git a/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java b/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java
index 917cefd..38a5bfb 100644
--- a/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java
@@ -32,7 +32,7 @@
         if (!ObjectUtils.isEmpty(technologyName)){
             wrapper.like(Technology::getName, technologyName);
         }
-        wrapper.select(Technology::getId, Technology::getName, Technology::getDeviceGroup, Technology::getQuota);
+        wrapper.select(Technology::getId, Technology::getName, Technology::getDeviceGroup, Technology::getFather);
         return technologyMapper.selectMaps(wrapper);
     }
 }
diff --git a/standard-server/src/main/resources/mapper/DeviceMapper.xml b/standard-server/src/main/resources/mapper/DeviceMapper.xml
index 461895f..38e63fd 100644
--- a/standard-server/src/main/resources/mapper/DeviceMapper.xml
+++ b/standard-server/src/main/resources/mapper/DeviceMapper.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.mom.mapper.DeviceMapper">
-
     <select id="selectDeviceTables" resultType="map">
-        SELECT d.`id`, d.`name`, d.`father`,t.`quota`
-        FROM device d, technology t
+        SELECT d.`id`, d.`name`, d.`father`, t.`quota`
+        FROM device d,
+             technology t
         WHERE d.`state` = 1
           AND d.`id` = t.`device_id`
     </select>
@@ -23,26 +23,28 @@
         SELECT d.`id`, d.`name`, d.`father`
         FROM device d
         WHERE d.state = 1
-          AND d.type = #{type}
-            <if test="search_class !=null and search_class != ''">
-                AND d.`name` like concat('%',#{search_class},'%')
-            </if>
+        AND d.type = #{type}
+        <if test="search_class !=null and search_class != ''">
+            AND d.`name` like concat('%',#{search_class},'%')
+        </if>
     </select>
 
     <select id="DevicePageList" resultType="Map">
-        SELECT d.id, d.`code`, d.`name`, u.`name` keeper, DATE_FORMAT(d.`end_measure`,'%Y-%m-%d') end_measure, d.`device_status`, d.`factory`, r.`name` inspectProject, i.`name` testSample, i.`user_name`
+        SELECT d.id, d.`code`, d.`name`, u.`name` keeper, DATE_FORMAT(d.`end_measure`,'%Y-%m-%d') end_measure,
+        d.`device_status`, d.`factory`, r.`name` inspectProject, i.`name` testSample, i.`user_name`
         FROM (device d, `user` u)
-                 LEFT JOIN raw_ins_product r
-                           ON d.`id` = r.`device_id`
-                 LEFT JOIN raw_inspect i
-                           ON r.`raw_inspect_id` = i.`id`
+        LEFT JOIN raw_ins_product r
+        ON d.`id` = r.`device_id`
+        LEFT JOIN raw_inspect i
+        ON r.`raw_inspect_id` = i.`id`
         WHERE r.`test_state` IS NULL
-          AND d.`state` = 1
-          AND (r.`state` = 1 OR r.`state` IS NULL)
-          AND d.`keeper` = u.`id`
-          AND d.type = #{type}
+        AND d.`state` = 1
+        AND (r.`state` = 1 OR r.`state` IS NULL)
+        AND d.`keeper` = u.`id`
+        AND d.type = #{type}
         <if test="codeNameModel != null and codeNameModel != ''">
-            AND (d.`name` LIKE CONCAT('%',#{codeNameModel},'%') OR d.`code` LIKE CONCAT('%',#{codeNameModel},'%') OR i.`specifications` LIKE CONCAT('%',#{codeNameModel},'%'))
+            AND (d.`name` LIKE CONCAT('%',#{codeNameModel},'%') OR d.`code` LIKE CONCAT('%',#{codeNameModel},'%') OR
+            i.`specifications` LIKE CONCAT('%',#{codeNameModel},'%'))
         </if>
         <if test="deviceStatue != null and deviceStatue != ''">
             AND d.`device_status` = #{deviceStatue}
@@ -54,4 +56,10 @@
             AND d.`father` = #{fatherName}
         </if>
     </select>
+    <select id="getDeviceNameByGroup" resultType="java.util.Map">
+        select id, name
+        from mom_ocean.device
+        where state=1
+        and father=#{deviceGroup}
+    </select>
 </mapper>
diff --git a/system-run/pom.xml b/system-run/pom.xml
index edcd688..24b7350 100644
--- a/system-run/pom.xml
+++ b/system-run/pom.xml
@@ -45,6 +45,11 @@
             <artifactId>inventory-server</artifactId>
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>production-server</artifactId>
+            <version>1.0.0</version>
+        </dependency>
 
         <!--druid-->
         <dependency>

--
Gitblit v1.9.3