Ver Fonte

feat:排产计划

hmc há 1 ano atrás
pai
commit
6721a96468
36 ficheiros alterados com 2750 adições e 36 exclusões
  1. 113 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/AmmunitionPlanInformationIntermediateTableController.java
  2. 107 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/DetailsOfTheRefuelingPlanController.java
  3. 10 8
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/MaterielController.java
  4. 113 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductionLineController.java
  5. 25 20
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleProductsController.java
  6. 77 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/AmmunitionPlanInformationIntermediateTable.java
  7. 189 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/DetailsOfTheRefuelingPlan.java
  8. 22 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/Materiel.java
  9. 195 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductionLine.java
  10. 14 1
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleProducts.java
  11. 162 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/AmmunitionPlanInformationIntermediateTableRVo.java
  12. 51 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/AmmunitionPlanInformationIntermediateTableVo.java
  13. 37 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleProductsVo.java
  14. 63 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/AmmunitionPlanInformationIntermediateTableMapper.java
  15. 69 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/DetailsOfTheRefuelingPlanMapper.java
  16. 63 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductionLineMapper.java
  17. 7 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/SaleProductsMapper.java
  18. 63 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IAmmunitionPlanInformationIntermediateTableService.java
  19. 61 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IDetailsOfTheRefuelingPlanService.java
  20. 8 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IMaterielService.java
  21. 61 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductionLineService.java
  22. 10 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/ISaleProductsService.java
  23. 193 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/AmmunitionPlanInformationIntermediateTableServiceImpl.java
  24. 2 2
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/DataAcquisitionInformationServiceImpl.java
  25. 93 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/DetailsOfTheRefuelingPlanServiceImpl.java
  26. 5 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/MaterielServiceImpl.java
  27. 97 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductionLineServiceImpl.java
  28. 13 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleProductsServiceImpl.java
  29. 63 0
      zkqy-custom-business/src/main/resources/mapper/business/AmmunitionPlanInformationIntermediateTableMapper.xml
  30. 145 0
      zkqy-custom-business/src/main/resources/mapper/business/DetailsOfTheRefuelingPlanMapper.xml
  31. 13 2
      zkqy-custom-business/src/main/resources/mapper/business/MaterielMapper.xml
  32. 125 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductionLineMapper.xml
  33. 65 2
      zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml
  34. 25 0
      zkqy-ui/src/api/plan/paln.js
  35. 0 1
      zkqy-ui/src/views/orderMange/approve.vue
  36. 391 0
      zkqy-ui/src/views/orderMange/planTable/index.vue

+ 113 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/AmmunitionPlanInformationIntermediateTableController.java

@@ -0,0 +1,113 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.vo.AmmunitionPlanInformationIntermediateTableRVo;
+import com.zkqy.business.domain.vo.AmmunitionPlanInformationIntermediateTableVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable;
+import com.zkqy.business.service.IAmmunitionPlanInformationIntermediateTableService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 加弹计划信息Controller
+ *
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@RestController
+@RequestMapping("/business/ammunitionPlanInfo")
+@Api(value = "/business/table", description = "加弹计划信息-接口")
+public class AmmunitionPlanInformationIntermediateTableController extends BaseController {
+    @Autowired
+    private IAmmunitionPlanInformationIntermediateTableService ammunitionPlanInformationIntermediateTableService;
+
+
+    /**
+     * 新增加弹计划信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:table:add')")
+    @Log(title = "加弹计划信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增加弹计划信息")
+    public AjaxResult add(@RequestBody AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable) {
+        return toAjax(ammunitionPlanInformationIntermediateTableService.insertAmmunitionPlanInformationIntermediateTable(ammunitionPlanInformationIntermediateTable));
+    }
+    /**
+     * 查询加弹计划信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('business:table:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询加弹计划信息列表")
+    public AjaxResult list(AmmunitionPlanInformationIntermediateTableVo ammunitionPlanInformationIntermediateTable) {
+//        startPage();
+        List<AmmunitionPlanInformationIntermediateTableRVo> list = ammunitionPlanInformationIntermediateTableService.selectAmmunitionPlanInformationIntermediateTableList(ammunitionPlanInformationIntermediateTable);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 导出加弹计划信息列表
+     */
+//    @PreAuthorize("@ss.hasPermi('business:table:export')")
+//    @Log(title = "加弹计划信息", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    @ApiOperation(value = "导出加弹计划信息列表")
+//    public void export(HttpServletResponse response, AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable) {
+//        List<AmmunitionPlanInformationIntermediateTable> list = ammunitionPlanInformationIntermediateTableService.selectAmmunitionPlanInformationIntermediateTableList(ammunitionPlanInformationIntermediateTable);
+//        ExcelUtil<AmmunitionPlanInformationIntermediateTable> util = new ExcelUtil<AmmunitionPlanInformationIntermediateTable>(AmmunitionPlanInformationIntermediateTable.class);
+//        util.exportExcel(response, list, "加弹计划信息数据");
+//    }
+
+    /**
+     * 获取加弹计划信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:table:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取加弹计划信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(ammunitionPlanInformationIntermediateTableService.selectAmmunitionPlanInformationIntermediateTableById(id));
+    }
+
+
+
+
+
+    /**
+     * 修改加弹计划信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:table:edit')")
+    @Log(title = "加弹计划信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改加弹计划信息")
+    public AjaxResult edit(@RequestBody AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable) {
+        return toAjax(ammunitionPlanInformationIntermediateTableService.updateAmmunitionPlanInformationIntermediateTable(ammunitionPlanInformationIntermediateTable));
+    }
+
+    /**
+     * 删除加弹计划信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:table:remove')")
+    @Log(title = "加弹计划信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除加弹计划信息")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(ammunitionPlanInformationIntermediateTableService.deleteAmmunitionPlanInformationIntermediateTableByIds(ids));
+    }
+}

+ 107 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/DetailsOfTheRefuelingPlanController.java

@@ -0,0 +1,107 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.DetailsOfTheRefuelingPlan;
+import com.zkqy.business.service.IDetailsOfTheRefuelingPlanService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 加弹计划详细信息Controller
+ *
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@RestController
+@RequestMapping("/system/plan")
+@Api(value = "/system/plan", description = "加弹计划详细信息-接口")
+public class DetailsOfTheRefuelingPlanController extends BaseController {
+    @Autowired
+    private IDetailsOfTheRefuelingPlanService detailsOfTheRefuelingPlanService;
+
+    /**
+     * 查询加弹计划详细信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:plan:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询加弹计划详细信息列表")
+    public TableDataInfo list(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan) {
+        startPage();
+        List<DetailsOfTheRefuelingPlan> list = detailsOfTheRefuelingPlanService.selectDetailsOfTheRefuelingPlanList(detailsOfTheRefuelingPlan);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出加弹计划详细信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:plan:export')")
+    @Log(title = "加弹计划详细信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出加弹计划详细信息列表")
+    public void export(HttpServletResponse response, DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan) {
+        List<DetailsOfTheRefuelingPlan> list = detailsOfTheRefuelingPlanService.selectDetailsOfTheRefuelingPlanList(detailsOfTheRefuelingPlan);
+        ExcelUtil<DetailsOfTheRefuelingPlan> util = new ExcelUtil<DetailsOfTheRefuelingPlan>(DetailsOfTheRefuelingPlan.class);
+        util.exportExcel(response, list, "加弹计划详细信息数据");
+    }
+
+    /**
+     * 获取加弹计划详细信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:plan:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取加弹计划详细信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(detailsOfTheRefuelingPlanService.selectDetailsOfTheRefuelingPlanById(id));
+    }
+
+    /**
+     * 新增加弹计划详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:plan:add')")
+    @Log(title = "加弹计划详细信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增加弹计划详细信息")
+    public AjaxResult add(@RequestBody DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan) {
+        return toAjax(detailsOfTheRefuelingPlanService.insertDetailsOfTheRefuelingPlan(detailsOfTheRefuelingPlan));
+    }
+
+    /**
+     * 修改加弹计划详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:plan:edit')")
+    @Log(title = "加弹计划详细信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改加弹计划详细信息")
+    public AjaxResult edit(@RequestBody DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan) {
+        return toAjax(detailsOfTheRefuelingPlanService.updateDetailsOfTheRefuelingPlan(detailsOfTheRefuelingPlan));
+    }
+
+    /**
+     * 删除加弹计划详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:plan:remove')")
+    @Log(title = "加弹计划详细信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除加弹计划详细信息")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(detailsOfTheRefuelingPlanService.deleteDetailsOfTheRefuelingPlanByIds(ids));
+    }
+}

+ 10 - 8
zkqy-custom-business/src/main/java/com/zkqy/business/controller/MaterielController.java

@@ -6,14 +6,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.zkqy.common.annotation.Log;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
@@ -50,6 +43,15 @@ public class MaterielController extends BaseController
         return getDataTable(list);
     }
 
+    @PreAuthorize("@ss.hasPermi('system:materiel:list')")
+    @GetMapping("/getMaterielInfo")
+    @ApiOperation(value = "查询物料信息列表")
+    public AjaxResult getMaterielInfo(@RequestParam("materielCode") String materielCode)
+    {
+        Materiel materiel = materielService.selectMateriel(materielCode);
+        return AjaxResult.success(materiel);
+    }
+
     /**
      * 导出物料信息列表
      */

+ 113 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductionLineController.java

@@ -0,0 +1,113 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductionLine;
+import com.zkqy.business.service.IProductionLineService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 产线Controller
+ *
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@RestController
+@RequestMapping("/system/line")
+@Api(value = "/system/line", description = "产线-接口")
+public class ProductionLineController extends BaseController
+{
+    @Autowired
+    private IProductionLineService productionLineService;
+
+/**
+ * 查询产线列表
+ */
+@PreAuthorize("@ss.hasPermi('system:line:list')")
+@GetMapping("/list")
+@ApiOperation(value = "查询产线列表")
+    public TableDataInfo list(ProductionLine productionLine)
+    {
+        startPage();
+        List<ProductionLine> list = productionLineService.selectProductionLineList(productionLine);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出产线列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:line:export')")
+    @Log(title = "产线", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出产线列表")
+    public void export(HttpServletResponse response, ProductionLine productionLine)
+    {
+        List<ProductionLine> list = productionLineService.selectProductionLineList(productionLine);
+        ExcelUtil<ProductionLine> util = new ExcelUtil<ProductionLine>(ProductionLine.class);
+        util.exportExcel(response, list, "产线数据");
+    }
+
+    /**
+     * 获取产线详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:line:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取产线详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productionLineService.selectProductionLineById(id));
+    }
+
+    /**
+     * 新增产线
+     */
+    @PreAuthorize("@ss.hasPermi('system:line:add')")
+    @Log(title = "产线", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增产线")
+    public AjaxResult add(@RequestBody ProductionLine productionLine)
+    {
+        return toAjax(productionLineService.insertProductionLine(productionLine));
+    }
+
+    /**
+     * 修改产线
+     */
+    @PreAuthorize("@ss.hasPermi('system:line:edit')")
+    @Log(title = "产线", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改产线")
+    public AjaxResult edit(@RequestBody ProductionLine productionLine)
+    {
+        return toAjax(productionLineService.updateProductionLine(productionLine));
+    }
+
+    /**
+     * 删除产线
+     */
+    @PreAuthorize("@ss.hasPermi('system:line:remove')")
+    @Log(title = "产线", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除产线")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productionLineService.deleteProductionLineByIds(ids));
+    }
+}

+ 25 - 20
zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleProductsController.java

@@ -2,6 +2,8 @@ package com.zkqy.business.controller;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.vo.SaleProductsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -32,19 +34,27 @@ import com.zkqy.common.core.page.TableDataInfo;
 @RestController
 @RequestMapping("/system/products")
 @Api(value = "/system/products", description = "销售产品-接口")
-public class SaleProductsController extends BaseController
-{
+public class SaleProductsController extends BaseController {
+
     @Autowired
     private ISaleProductsService saleProductsService;
+    @GetMapping("/getProducts")
+    @ApiOperation(value = "查询销售产品列表")
+    public AjaxResult getProducts(SaleProducts saleProducts) {
+        //销售单什么状态为3的(待生产)
+        saleProducts.setStatus("3");
+        List<SaleProductsVo> list = saleProductsService.selectSaleProductsListAndCustomerName(saleProducts);
+        return AjaxResult.success(list);
+    }
 
-/**
- * 查询销售产品列表
- */
-@PreAuthorize("@ss.hasPermi('system:products:list')")
-@GetMapping("/list")
-@ApiOperation(value = "查询销售产品列表")
-    public TableDataInfo list(SaleProducts saleProducts)
-    {
+
+    /**
+     * 查询销售产品列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:products:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询销售产品列表")
+    public TableDataInfo list(SaleProducts saleProducts) {
         startPage();
         List<SaleProducts> list = saleProductsService.selectSaleProductsList(saleProducts);
         return getDataTable(list);
@@ -57,8 +67,7 @@ public class SaleProductsController extends BaseController
     @Log(title = "销售产品", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     @ApiOperation(value = "导出销售产品列表")
-    public void export(HttpServletResponse response, SaleProducts saleProducts)
-    {
+    public void export(HttpServletResponse response, SaleProducts saleProducts) {
         List<SaleProducts> list = saleProductsService.selectSaleProductsList(saleProducts);
         ExcelUtil<SaleProducts> util = new ExcelUtil<SaleProducts>(SaleProducts.class);
         util.exportExcel(response, list, "销售产品数据");
@@ -70,8 +79,7 @@ public class SaleProductsController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:products:query')")
     @GetMapping(value = "/{id}")
     @ApiOperation(value = "获取销售产品详细信息")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(saleProductsService.selectSaleProductsById(id));
     }
 
@@ -82,8 +90,7 @@ public class SaleProductsController extends BaseController
     @Log(title = "销售产品", businessType = BusinessType.INSERT)
     @PostMapping
     @ApiOperation(value = "新增销售产品")
-    public AjaxResult add(@RequestBody SaleProducts saleProducts)
-    {
+    public AjaxResult add(@RequestBody SaleProducts saleProducts) {
         return toAjax(saleProductsService.insertSaleProducts(saleProducts));
     }
 
@@ -94,8 +101,7 @@ public class SaleProductsController extends BaseController
     @Log(title = "销售产品", businessType = BusinessType.UPDATE)
     @PutMapping
     @ApiOperation(value = "修改销售产品")
-    public AjaxResult edit(@RequestBody SaleProducts saleProducts)
-    {
+    public AjaxResult edit(@RequestBody SaleProducts saleProducts) {
         return toAjax(saleProductsService.updateSaleProducts(saleProducts));
     }
 
@@ -106,8 +112,7 @@ public class SaleProductsController extends BaseController
     @Log(title = "销售产品", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     @ApiOperation(value = "删除销售产品")
-    public AjaxResult remove(@PathVariable List<Long> ids)
-    {
+    public AjaxResult remove(@PathVariable List<Long> ids) {
         return toAjax(saleProductsService.deleteSaleProductsByIds(ids));
     }
 }

+ 77 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/AmmunitionPlanInformationIntermediateTable.java

@@ -0,0 +1,77 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+import java.util.List;
+
+/**
+ * 加弹计划信息对象 ammunition_plan_information_intermediate_table
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public class AmmunitionPlanInformationIntermediateTable extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键自增 */
+    private Long id;
+
+    /** 机台号 */
+    @Excel(name = "机台号")
+    private String machineId;
+
+    private List<DetailsOfTheRefuelingPlan> detailsOfTheRefuelingPlans;
+
+    public List<DetailsOfTheRefuelingPlan> getDetailsOfTheRefuelingPlans() {
+        return detailsOfTheRefuelingPlans;
+    }
+
+    public void setDetailsOfTheRefuelingPlans(List<DetailsOfTheRefuelingPlan> detailsOfTheRefuelingPlans) {
+        this.detailsOfTheRefuelingPlans = detailsOfTheRefuelingPlans;
+    }
+
+    /** 时间戳随机码(每个计划都有一个随机码) */
+    @Excel(name = "时间戳随机码(每个计划都有一个随机码)")
+    private String timestampRandomCode;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setMachineId(String machineId) 
+    {
+        this.machineId = machineId;
+    }
+
+    public String getMachineId() 
+    {
+        return machineId;
+    }
+    public void setTimestampRandomCode(String timestampRandomCode) 
+    {
+        this.timestampRandomCode = timestampRandomCode;
+    }
+
+    public String getTimestampRandomCode() 
+    {
+        return timestampRandomCode;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("machineId", getMachineId())
+            .append("timestampRandomCode", getTimestampRandomCode())
+            .toString();
+    }
+}

+ 189 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/DetailsOfTheRefuelingPlan.java

@@ -0,0 +1,189 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 加弹计划详细信息对象 details_of_the_refueling_plan
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public class DetailsOfTheRefuelingPlan extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+
+
+    /** 时间戳唯一码 */
+    @Excel(name = "时间戳唯一码")
+    private String timestampRandomCode;
+
+    /** 机台号 */
+    @Excel(name = "机台号")
+    private Long machineId;
+
+    /** 生产色号 */
+    @Excel(name = "生产色号")
+    private String currentColorCode;
+
+    /** 生产规格 */
+    @Excel(name = "生产规格")
+    private String currentSpecification;
+
+    /** 生产批号 */
+    @Excel(name = "生产批号")
+    private Long currentLotNumber;
+
+    /** 锭数 */
+    @Excel(name = "锭数")
+    private String currentSpindleCount;
+
+    /** 上级时间 */
+    @Excel(name = "上级时间")
+    private String startTime;
+
+    /** 计划下级时间 */
+    @Excel(name = "计划下级时间")
+    private String plannedEndTime;
+
+    /** 计划状态 */
+    @Excel(name = "计划状态")
+    private String planStatus;
+
+
+    /** 计划状态 */
+    @Excel(name = "数量")
+    private String number;
+
+    /** 产品类型 */
+    @Excel(name = "产品类型")
+    private String productType;
+
+    public String getProductType() {
+        return productType;
+    }
+
+    public void setProductType(String productType) {
+        this.productType = productType;
+    }
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTimestampRandomCode(String timestampRandomCode) 
+    {
+        this.timestampRandomCode = timestampRandomCode;
+    }
+
+    public String getTimestampRandomCode() 
+    {
+        return timestampRandomCode;
+    }
+    public void setMachineId(Long machineId) 
+    {
+        this.machineId = machineId;
+    }
+
+    public Long getMachineId() 
+    {
+        return machineId;
+    }
+    public void setCurrentColorCode(String currentColorCode) 
+    {
+        this.currentColorCode = currentColorCode;
+    }
+
+    public String getCurrentColorCode() 
+    {
+        return currentColorCode;
+    }
+    public void setCurrentSpecification(String currentSpecification) 
+    {
+        this.currentSpecification = currentSpecification;
+    }
+
+    public String getCurrentSpecification() 
+    {
+        return currentSpecification;
+    }
+    public void setCurrentLotNumber(Long currentLotNumber) 
+    {
+        this.currentLotNumber = currentLotNumber;
+    }
+
+    public Long getCurrentLotNumber() 
+    {
+        return currentLotNumber;
+    }
+    public void setCurrentSpindleCount(String currentSpindleCount) 
+    {
+        this.currentSpindleCount = currentSpindleCount;
+    }
+
+    public String getCurrentSpindleCount() 
+    {
+        return currentSpindleCount;
+    }
+    public void setStartTime(String startTime) 
+    {
+        this.startTime = startTime;
+    }
+
+    public String getStartTime() 
+    {
+        return startTime;
+    }
+    public void setPlannedEndTime(String plannedEndTime) 
+    {
+        this.plannedEndTime = plannedEndTime;
+    }
+
+    public String getPlannedEndTime() 
+    {
+        return plannedEndTime;
+    }
+    public void setPlanStatus(String planStatus) 
+    {
+        this.planStatus = planStatus;
+    }
+
+    public String getPlanStatus() 
+    {
+        return planStatus;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("timestampRandomCode", getTimestampRandomCode())
+            .append("machineId", getMachineId())
+            .append("currentColorCode", getCurrentColorCode())
+            .append("currentSpecification", getCurrentSpecification())
+            .append("currentLotNumber", getCurrentLotNumber())
+            .append("currentSpindleCount", getCurrentSpindleCount())
+            .append("startTime", getStartTime())
+            .append("plannedEndTime", getPlannedEndTime())
+            .append("planStatus", getPlanStatus())
+            .toString();
+    }
+}

+ 22 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/Materiel.java

@@ -77,6 +77,28 @@ public class Materiel extends BaseEntity
     @Excel(name = "任务节点编码")
     private String taskNodeKey;
 
+    @Excel(name = "物料转码")
+    private String materieEncoding;
+
+    public String getMaterieEncoding() {
+        return materieEncoding;
+    }
+
+    public void setMaterieEncoding(String materieEncoding) {
+        this.materieEncoding = materieEncoding;
+    }
+
+    public String getMaterieColorNumber() {
+        return materieColorNumber;
+    }
+
+    public void setMaterieColorNumber(String materieColorNumber) {
+        this.materieColorNumber = materieColorNumber;
+    }
+
+    @Excel(name = "物料色号")
+    private String materieColorNumber;
+
     public void setId(Long id) 
     {
         this.id = id;

+ 195 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductionLine.java

@@ -0,0 +1,195 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 产线对象 production_line
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public class ProductionLine extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 产线编号 */
+    @Excel(name = "产线编号")
+    private String productionLineNo;
+
+    /** 产线名称 */
+    @Excel(name = "产线名称")
+    private String productionLineName;
+
+    /** 产线部门 */
+    @Excel(name = "产线部门")
+    private String productionLineDepartment;
+
+    /** 部门车间 */
+    @Excel(name = "部门车间")
+    private String productionLineWorkshop;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setProductionLineNo(String productionLineNo) 
+    {
+        this.productionLineNo = productionLineNo;
+    }
+
+    public String getProductionLineNo() 
+    {
+        return productionLineNo;
+    }
+    public void setProductionLineName(String productionLineName) 
+    {
+        this.productionLineName = productionLineName;
+    }
+
+    public String getProductionLineName() 
+    {
+        return productionLineName;
+    }
+    public void setProductionLineDepartment(String productionLineDepartment) 
+    {
+        this.productionLineDepartment = productionLineDepartment;
+    }
+
+    public String getProductionLineDepartment() 
+    {
+        return productionLineDepartment;
+    }
+    public void setProductionLineWorkshop(String productionLineWorkshop) 
+    {
+        this.productionLineWorkshop = productionLineWorkshop;
+    }
+
+    public String getProductionLineWorkshop() 
+    {
+        return productionLineWorkshop;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("productionLineNo", getProductionLineNo())
+            .append("productionLineName", getProductionLineName())
+            .append("productionLineDepartment", getProductionLineDepartment())
+            .append("productionLineWorkshop", getProductionLineWorkshop())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 14 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleProducts.java

@@ -93,7 +93,20 @@ public class SaleProducts extends BaseEntity
     @Excel(name = "色号")
     private String colourNumber;
 
-    public void setId(Long id) 
+    /** 批号 */
+    @Excel(name = "批号")
+    private String lotNumber;
+
+
+    public String getLotNumber() {
+        return lotNumber;
+    }
+
+    public void setLotNumber(String lotNumber) {
+        this.lotNumber = lotNumber;
+    }
+
+    public void setId(Long id)
     {
         this.id = id;
     }

+ 162 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/AmmunitionPlanInformationIntermediateTableRVo.java

@@ -0,0 +1,162 @@
+package com.zkqy.business.domain.vo;
+
+import java.util.Map;
+
+public class AmmunitionPlanInformationIntermediateTableRVo {
+
+    //机台号-就是产线号
+    private  String machineId;
+
+    //色号
+    private  String currentColorCode;
+
+    //生产规格
+    private  String currentSpecification;
+
+    //生产批号
+    private  String currentLotNumber;
+
+    //锭数
+    private  String currentSpindleCount;
+
+    //上机时间
+    private  String startTime;
+
+    //下机时间
+    private  String plannedEndTime;
+
+    //计划状态
+    private  String planStatus;
+
+
+    //色号
+    private  String djCurrentColorCode;
+
+    //生产规格
+    private  String djCurrentSpecification;
+
+    //生产批号
+    private  String djCurrentLotNumber;
+
+    public String getProductType() {
+        return productType;
+    }
+
+    public void setProductType(String productType) {
+        this.productType = productType;
+    }
+
+    //数量
+    private  String djNumber;
+
+    /*产品类别A面B面*/
+    private  String productType;
+
+
+    //待生产列表
+    private Map<String,String> listOfPendingProduction;
+
+    public String getMachineId() {
+        return machineId;
+    }
+
+    public void setMachineId(String machineId) {
+        this.machineId = machineId;
+    }
+
+    public String getCurrentColorCode() {
+        return currentColorCode;
+    }
+
+    public void setCurrentColorCode(String currentColorCode) {
+        this.currentColorCode = currentColorCode;
+    }
+
+    public String getCurrentSpecification() {
+        return currentSpecification;
+    }
+
+    public void setCurrentSpecification(String currentSpecification) {
+        this.currentSpecification = currentSpecification;
+    }
+
+    public String getCurrentLotNumber() {
+        return currentLotNumber;
+    }
+
+    public void setCurrentLotNumber(String currentLotNumber) {
+        this.currentLotNumber = currentLotNumber;
+    }
+
+    public String getCurrentSpindleCount() {
+        return currentSpindleCount;
+    }
+
+    public void setCurrentSpindleCount(String currentSpindleCount) {
+        this.currentSpindleCount = currentSpindleCount;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getPlannedEndTime() {
+        return plannedEndTime;
+    }
+
+    public void setPlannedEndTime(String plannedEndTime) {
+        this.plannedEndTime = plannedEndTime;
+    }
+
+    public String getPlanStatus() {
+        return planStatus;
+    }
+
+    public void setPlanStatus(String planStatus) {
+        this.planStatus = planStatus;
+    }
+
+    public String getDjCurrentColorCode() {
+        return djCurrentColorCode;
+    }
+
+    public void setDjCurrentColorCode(String djCurrentColorCode) {
+        this.djCurrentColorCode = djCurrentColorCode;
+    }
+
+    public String getDjCurrentSpecification() {
+        return djCurrentSpecification;
+    }
+
+    public void setDjCurrentSpecification(String djCurrentSpecification) {
+        this.djCurrentSpecification = djCurrentSpecification;
+    }
+
+    public String getDjCurrentLotNumber() {
+        return djCurrentLotNumber;
+    }
+
+    public void setDjCurrentLotNumber(String djCurrentLotNumber) {
+        this.djCurrentLotNumber = djCurrentLotNumber;
+    }
+
+    public String getDjNumber() {
+        return djNumber;
+    }
+
+    public void setDjNumber(String djNumber) {
+        this.djNumber = djNumber;
+    }
+
+    public Map<String, String> getListOfPendingProduction() {
+        return listOfPendingProduction;
+    }
+
+    public void setListOfPendingProduction(Map<String, String> listOfPendingProduction) {
+        this.listOfPendingProduction = listOfPendingProduction;
+    }
+}

+ 51 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/AmmunitionPlanInformationIntermediateTableVo.java

@@ -0,0 +1,51 @@
+package com.zkqy.business.domain.vo;
+
+public class AmmunitionPlanInformationIntermediateTableVo {
+
+    /*车间名称 */
+    private String productionLineName;
+
+    /*产线号*/
+    private String getProductionLineNo;
+
+    /*产线部门*/
+    private String productionLineDepartment;
+
+    /*产线车间*/
+    private String productionLineWorkshop;
+
+
+    public String getProductionLineName() {
+        return productionLineName;
+    }
+
+    public void setProductionLineName(String productionLineName) {
+        this.productionLineName = productionLineName;
+    }
+
+    public String getGetProductionLineNo() {
+        return getProductionLineNo;
+    }
+
+    public void setGetProductionLineNo(String getProductionLineNo) {
+        this.getProductionLineNo = getProductionLineNo;
+    }
+
+    public String getProductionLineDepartment() {
+        return productionLineDepartment;
+    }
+
+    public void setProductionLineDepartment(String productionLineDepartment) {
+        this.productionLineDepartment = productionLineDepartment;
+    }
+
+    public String getProductionLineWorkshop() {
+        return productionLineWorkshop;
+    }
+
+    public void setProductionLineWorkshop(String productionLineWorkshop) {
+        this.productionLineWorkshop = productionLineWorkshop;
+    }
+
+
+}

+ 37 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleProductsVo.java

@@ -0,0 +1,37 @@
+package com.zkqy.business.domain.vo;
+
+import com.zkqy.business.domain.SaleProducts;
+
+public class SaleProductsVo extends SaleProducts {
+
+    private  String customName;
+
+    private  String  materieEncoding;
+
+    private  String  materieColorNumber;
+
+    public String getMaterieEncoding() {
+        return materieEncoding;
+    }
+
+    public void setMaterieEncoding(String materieEncoding) {
+        this.materieEncoding = materieEncoding;
+    }
+//    private  String
+
+    public String getCustomName() {
+        return customName;
+    }
+
+    public String getMaterieColorNumber() {
+        return materieColorNumber;
+    }
+
+    public void setMaterieColorNumber(String materieColorNumber) {
+        this.materieColorNumber = materieColorNumber;
+    }
+
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+}

+ 63 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/AmmunitionPlanInformationIntermediateTableMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 加弹计划信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Mapper
+public interface AmmunitionPlanInformationIntermediateTableMapper 
+{
+    /**
+     * 查询加弹计划信息
+     * 
+     * @param id 加弹计划信息主键
+     * @return 加弹计划信息
+     */
+    public AmmunitionPlanInformationIntermediateTable selectAmmunitionPlanInformationIntermediateTableById(Long id);
+
+    /**
+     * 查询加弹计划信息列表
+     * 
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 加弹计划信息集合
+     */
+    public List<AmmunitionPlanInformationIntermediateTable> selectAmmunitionPlanInformationIntermediateTableList(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable);
+
+    /**
+     * 新增加弹计划信息
+     * 
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 结果
+     */
+    public int insertAmmunitionPlanInformationIntermediateTable(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable);
+
+    /**
+     * 修改加弹计划信息
+     * 
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 结果
+     */
+    public int updateAmmunitionPlanInformationIntermediateTable(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable);
+
+    /**
+     * 删除加弹计划信息
+     * 
+     * @param id 加弹计划信息主键
+     * @return 结果
+     */
+    public int deleteAmmunitionPlanInformationIntermediateTableById(Long id);
+
+    /**
+     * 批量删除加弹计划信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteAmmunitionPlanInformationIntermediateTableByIds(Long[] ids);
+}

+ 69 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/DetailsOfTheRefuelingPlanMapper.java

@@ -0,0 +1,69 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.DetailsOfTheRefuelingPlan;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 加弹计划详细信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Mapper
+public interface DetailsOfTheRefuelingPlanMapper 
+{
+    /**
+     * 查询加弹计划详细信息
+     * 
+     * @param id 加弹计划详细信息主键
+     * @return 加弹计划详细信息
+     */
+    public DetailsOfTheRefuelingPlan selectDetailsOfTheRefuelingPlanById(Long id);
+
+    /**
+     * 查询加弹计划详细信息列表
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 加弹计划详细信息集合
+     */
+    public List<DetailsOfTheRefuelingPlan> selectDetailsOfTheRefuelingPlanList(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan);
+
+    /**
+     * 新增加弹计划详细信息
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 结果
+     */
+    public int insertDetailsOfTheRefuelingPlan(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan);
+
+    /**
+     * 批量新增方法
+     * @param detailsOfTheRefuelingPlanList
+     * @return
+     */
+    public  int insertBatchDetailsOfTheRefuelingPlan(List<DetailsOfTheRefuelingPlan> detailsOfTheRefuelingPlanList);
+    /**
+     * 修改加弹计划详细信息
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 结果
+     */
+    public int updateDetailsOfTheRefuelingPlan(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan);
+
+    /**
+     * 删除加弹计划详细信息
+     * 
+     * @param id 加弹计划详细信息主键
+     * @return 结果
+     */
+    public int deleteDetailsOfTheRefuelingPlanById(Long id);
+
+    /**
+     * 批量删除加弹计划详细信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDetailsOfTheRefuelingPlanByIds(Long[] ids);
+}

+ 63 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductionLineMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductionLine;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 产线Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Mapper
+public interface ProductionLineMapper 
+{
+    /**
+     * 查询产线
+     * 
+     * @param id 产线主键
+     * @return 产线
+     */
+    public ProductionLine selectProductionLineById(Long id);
+
+    /**
+     * 查询产线列表
+     * 
+     * @param productionLine 产线
+     * @return 产线集合
+     */
+    public List<ProductionLine> selectProductionLineList(ProductionLine productionLine);
+
+    /**
+     * 新增产线
+     * 
+     * @param productionLine 产线
+     * @return 结果
+     */
+    public int insertProductionLine(ProductionLine productionLine);
+
+    /**
+     * 修改产线
+     * 
+     * @param productionLine 产线
+     * @return 结果
+     */
+    public int updateProductionLine(ProductionLine productionLine);
+
+    /**
+     * 删除产线
+     * 
+     * @param id 产线主键
+     * @return 结果
+     */
+    public int deleteProductionLineById(Long id);
+
+    /**
+     * 批量删除产线
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductionLineByIds(Long[] ids);
+}

+ 7 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/SaleProductsMapper.java

@@ -2,6 +2,7 @@ package com.zkqy.business.mapper;
 
 import java.util.List;
 import com.zkqy.business.domain.SaleProducts;
+import com.zkqy.business.domain.vo.SaleProductsVo;
 
 /**
  * 销售产品Mapper接口
@@ -27,6 +28,12 @@ public interface SaleProductsMapper
      */
     public List<SaleProducts> selectSaleProductsList(SaleProducts saleProducts);
 
+    /**
+     * 连表查询带客户名称的产品信息
+     * @param saleProducts
+     * @return
+     */
+    public  List<SaleProductsVo> selectSaleProductsListAndCustomInfo(SaleProducts saleProducts);
     /**
      * 新增销售产品
      * 

+ 63 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IAmmunitionPlanInformationIntermediateTableService.java

@@ -0,0 +1,63 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable;
+import com.zkqy.business.domain.vo.AmmunitionPlanInformationIntermediateTableRVo;
+import com.zkqy.business.domain.vo.AmmunitionPlanInformationIntermediateTableVo;
+
+/**
+ * 加弹计划信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public interface IAmmunitionPlanInformationIntermediateTableService 
+{
+    /**
+     * 查询加弹计划信息
+     * 
+     * @param id 加弹计划信息主键
+     * @return 加弹计划信息
+     */
+    public AmmunitionPlanInformationIntermediateTable selectAmmunitionPlanInformationIntermediateTableById(Long id);
+
+    /**
+     * 查询加弹计划信息列表
+     * 
+     * @param ammunitionPlanInformationIntermediateTableVo 加弹计划信息
+     * @return 加弹计划信息集合
+     */
+    public List<AmmunitionPlanInformationIntermediateTableRVo> selectAmmunitionPlanInformationIntermediateTableList(AmmunitionPlanInformationIntermediateTableVo ammunitionPlanInformationIntermediateTableVo);
+
+    /**
+     * 新增加弹计划信息
+     * 
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 结果
+     */
+    public int insertAmmunitionPlanInformationIntermediateTable(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable);
+
+    /**
+     * 修改加弹计划信息
+     * 
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 结果
+     */
+    public int updateAmmunitionPlanInformationIntermediateTable(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable);
+
+    /**
+     * 批量删除加弹计划信息
+     * 
+     * @param ids 需要删除的加弹计划信息主键集合
+     * @return 结果
+     */
+    public int deleteAmmunitionPlanInformationIntermediateTableByIds(Long[] ids);
+
+    /**
+     * 删除加弹计划信息信息
+     * 
+     * @param id 加弹计划信息主键
+     * @return 结果
+     */
+    public int deleteAmmunitionPlanInformationIntermediateTableById(Long id);
+}

+ 61 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IDetailsOfTheRefuelingPlanService.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.DetailsOfTheRefuelingPlan;
+
+/**
+ * 加弹计划详细信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public interface IDetailsOfTheRefuelingPlanService 
+{
+    /**
+     * 查询加弹计划详细信息
+     * 
+     * @param id 加弹计划详细信息主键
+     * @return 加弹计划详细信息
+     */
+    public DetailsOfTheRefuelingPlan selectDetailsOfTheRefuelingPlanById(Long id);
+
+    /**
+     * 查询加弹计划详细信息列表
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 加弹计划详细信息集合
+     */
+    public List<DetailsOfTheRefuelingPlan> selectDetailsOfTheRefuelingPlanList(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan);
+
+    /**
+     * 新增加弹计划详细信息
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 结果
+     */
+    public int insertDetailsOfTheRefuelingPlan(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan);
+
+    /**
+     * 修改加弹计划详细信息
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 结果
+     */
+    public int updateDetailsOfTheRefuelingPlan(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan);
+
+    /**
+     * 批量删除加弹计划详细信息
+     * 
+     * @param ids 需要删除的加弹计划详细信息主键集合
+     * @return 结果
+     */
+    public int deleteDetailsOfTheRefuelingPlanByIds(Long[] ids);
+
+    /**
+     * 删除加弹计划详细信息信息
+     * 
+     * @param id 加弹计划详细信息主键
+     * @return 结果
+     */
+    public int deleteDetailsOfTheRefuelingPlanById(Long id);
+}

+ 8 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IMaterielService.java

@@ -27,6 +27,14 @@ public interface IMaterielService
      */
     public List<Materiel> selectMaterielList(Materiel materiel);
 
+    /**
+     * 通过母粒编码查询原材料信息
+     * @param materielCode
+     * @return
+     */
+    public Materiel selectMateriel(String materielCode);
+
+
     /**
      * 新增物料信息
      * 

+ 61 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductionLineService.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductionLine;
+
+/**
+ * 产线Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public interface IProductionLineService 
+{
+    /**
+     * 查询产线
+     * 
+     * @param id 产线主键
+     * @return 产线
+     */
+    public ProductionLine selectProductionLineById(Long id);
+
+    /**
+     * 查询产线列表
+     * 
+     * @param productionLine 产线
+     * @return 产线集合
+     */
+    public List<ProductionLine> selectProductionLineList(ProductionLine productionLine);
+
+    /**
+     * 新增产线
+     * 
+     * @param productionLine 产线
+     * @return 结果
+     */
+    public int insertProductionLine(ProductionLine productionLine);
+
+    /**
+     * 修改产线
+     * 
+     * @param productionLine 产线
+     * @return 结果
+     */
+    public int updateProductionLine(ProductionLine productionLine);
+
+    /**
+     * 批量删除产线
+     * 
+     * @param ids 需要删除的产线主键集合
+     * @return 结果
+     */
+    public int deleteProductionLineByIds(Long[] ids);
+
+    /**
+     * 删除产线信息
+     * 
+     * @param id 产线主键
+     * @return 结果
+     */
+    public int deleteProductionLineById(Long id);
+}

+ 10 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/ISaleProductsService.java

@@ -2,6 +2,7 @@ package com.zkqy.business.service;
 
 import java.util.List;
 import com.zkqy.business.domain.SaleProducts;
+import com.zkqy.business.domain.vo.SaleProductsVo;
 
 /**
  * 销售产品Service接口
@@ -27,6 +28,15 @@ public interface ISaleProductsService
      */
     public List<SaleProducts> selectSaleProductsList(SaleProducts saleProducts);
 
+    /**
+     * 查询销售产品列表带客户名称
+     *
+     * @param saleProducts 销售产品
+     * @return 销售产品集合
+     */
+    public List<SaleProductsVo> selectSaleProductsListAndCustomerName(SaleProducts saleProducts);
+
+
     /**
      * 新增销售产品
      * 

+ 193 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/AmmunitionPlanInformationIntermediateTableServiceImpl.java

@@ -0,0 +1,193 @@
+package com.zkqy.business.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.zkqy.business.domain.DetailsOfTheRefuelingPlan;
+import com.zkqy.business.domain.ProductionLine;
+import com.zkqy.business.domain.vo.AmmunitionPlanInformationIntermediateTableRVo;
+import com.zkqy.business.domain.vo.AmmunitionPlanInformationIntermediateTableVo;
+import com.zkqy.business.mapper.DetailsOfTheRefuelingPlanMapper;
+import com.zkqy.business.mapper.ProductionLineMapper;
+import com.zkqy.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.AmmunitionPlanInformationIntermediateTableMapper;
+import com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable;
+import com.zkqy.business.service.IAmmunitionPlanInformationIntermediateTableService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 加弹计划信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Service
+public class AmmunitionPlanInformationIntermediateTableServiceImpl implements IAmmunitionPlanInformationIntermediateTableService 
+{
+
+    @Autowired
+    private AmmunitionPlanInformationIntermediateTableMapper ammunitionPlanInformationIntermediateTableMapper;
+
+    @Autowired
+    private DetailsOfTheRefuelingPlanMapper detailsOfTheRefuelingPlanMapper;
+
+    @Autowired
+    private ProductionLineMapper productionLineMapper;
+
+    /**
+     * 新增加弹计划信息
+     *
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int insertAmmunitionPlanInformationIntermediateTable(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable)
+    {
+        //1、新增加弹计划表数据
+        int insertCount = ammunitionPlanInformationIntermediateTableMapper.insertAmmunitionPlanInformationIntermediateTable(ammunitionPlanInformationIntermediateTable);
+        //2、更新加弹详细信息计划表
+        if(insertCount>0){
+             //计划集合
+            List<DetailsOfTheRefuelingPlan> detailsOfTheRefuelingPlanList=new ArrayList<>();
+            detailsOfTheRefuelingPlanMapper.insertBatchDetailsOfTheRefuelingPlan(detailsOfTheRefuelingPlanList);
+        }
+        return 1;
+    }
+
+
+    /**
+     * 查询加弹计划信息
+     * 
+     * @param id 加弹计划信息主键
+     * @return 加弹计划信息
+     */
+    @Override
+    public AmmunitionPlanInformationIntermediateTable selectAmmunitionPlanInformationIntermediateTableById(Long id)
+    {
+        return ammunitionPlanInformationIntermediateTableMapper.selectAmmunitionPlanInformationIntermediateTableById(id);
+    }
+
+    /**
+     * 查询加弹计划信息列表
+     * 
+     * @param ammunitionPlanInformationIntermediateTablVo 加弹计划信息
+     * @return 加弹计划信息
+     */
+    @Override
+    public List<AmmunitionPlanInformationIntermediateTableRVo> selectAmmunitionPlanInformationIntermediateTableList(AmmunitionPlanInformationIntermediateTableVo ammunitionPlanInformationIntermediateTablVo)
+    {
+        //查询产线信息
+        ProductionLine productionLine=new ProductionLine();
+        productionLine.setProductionLineDepartment("加弹部");
+        productionLine.setProductionLineWorkshop("南车间");
+        //部门
+        if(StringUtils.isNotNull(ammunitionPlanInformationIntermediateTablVo.getProductionLineDepartment())){
+            productionLine.setProductionLineDepartment(ammunitionPlanInformationIntermediateTablVo.getProductionLineDepartment());
+        }
+        //车间
+        if(StringUtils.isNotNull(ammunitionPlanInformationIntermediateTablVo.getProductionLineWorkshop())){
+            productionLine.setProductionLineWorkshop(ammunitionPlanInformationIntermediateTablVo.getProductionLineWorkshop());
+        }
+        List<ProductionLine> productionLines = productionLineMapper.selectProductionLineList(productionLine);
+        //创建产线对象
+        List<AmmunitionPlanInformationIntermediateTableRVo> list=new ArrayList<>();
+        //循环固定死的产线
+        productionLines.stream().forEach(item -> {
+            //拿到了某个车间的所有产线
+            AmmunitionPlanInformationIntermediateTableRVo rs=new AmmunitionPlanInformationIntermediateTableRVo();
+            rs.setMachineId(item.getProductionLineNo());//产线号
+            //所有的计划都属于这个产线、所以不能根据产线去查,计划详情
+            //先根据产线号去查询计划信息
+            AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable=new AmmunitionPlanInformationIntermediateTable();
+            ammunitionPlanInformationIntermediateTable.setMachineId(item.getProductionLineNo());
+            //拿到了所有的计划随机码 一个产线对应许多的随机码
+            List<AmmunitionPlanInformationIntermediateTable> ammunitionPlanInformationIntermediateTables = ammunitionPlanInformationIntermediateTableMapper.selectAmmunitionPlanInformationIntermediateTableList(ammunitionPlanInformationIntermediateTable);
+            if(ammunitionPlanInformationIntermediateTables.size()>0){
+                //查询当前随机码对应计划详情
+                ammunitionPlanInformationIntermediateTables.stream().forEach(it->{
+                    DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan=new DetailsOfTheRefuelingPlan();
+                    detailsOfTheRefuelingPlan.setTimestampRandomCode(it.getTimestampRandomCode());//计划随机码
+                    detailsOfTheRefuelingPlan.setPlanStatus("0");//状态是未完成的 ---先查询A面的查出来放一块
+                    detailsOfTheRefuelingPlan.setProductType("A面");
+                    List<DetailsOfTheRefuelingPlan> detailsOfTheRefuelingPlans = detailsOfTheRefuelingPlanMapper.selectDetailsOfTheRefuelingPlanList(detailsOfTheRefuelingPlan);
+                    //构造一个合适的对象放到 list
+                    if(detailsOfTheRefuelingPlans.size()>0){
+                        //第一不部分的构造数据
+                        rs.setCurrentColorCode(detailsOfTheRefuelingPlans.get(0).getCurrentColorCode());//色号
+                        rs.setCurrentColorCode(detailsOfTheRefuelingPlans.get(0).getCurrentSpecification());//生产规格
+                        rs.setCurrentLotNumber(detailsOfTheRefuelingPlans.get(0).getCurrentLotNumber().toString());//生产批号
+                        rs.setCurrentSpindleCount(detailsOfTheRefuelingPlans.get(0).getCurrentSpindleCount());//锭数
+                        rs.setStartTime(detailsOfTheRefuelingPlans.get(0).getStartTime());//上机时间
+                        rs.setPlannedEndTime(detailsOfTheRefuelingPlans.get(0).getPlannedEndTime());//下机时间
+                        //一个机台可能有好多任务、用随机码给解决掉了、
+                        //一个机台有分AB面(假如我第一条数据是A面、第二条数据是B面?怎么办?)
+                        rs.setProductType(detailsOfTheRefuelingPlans.get(0).getProductType());//A面
+                        if(detailsOfTheRefuelingPlans.size()>2){
+                            rs.setDjCurrentColorCode(detailsOfTheRefuelingPlans.get(1).getCurrentColorCode());//色号
+                            rs.setDjCurrentSpecification(detailsOfTheRefuelingPlans.get(1).getCurrentSpecification());//生产规格
+                            rs.setDjNumber(detailsOfTheRefuelingPlans.get(1).getNumber());//数量
+                            rs.setCurrentLotNumber(detailsOfTheRefuelingPlans.get(1).getCurrentLotNumber().toString());//批号
+                        }
+                        if(detailsOfTheRefuelingPlans.size()>=3){
+                            String combinedCodes = detailsOfTheRefuelingPlans.stream()
+                                    .skip(2) // 排除前两个元素
+                                    .map(plan -> plan.getCurrentColorCode()+ plan.getCurrentLotNumber()) // 将色号和批号拼接成字符串
+                                    .collect(Collectors.joining(","));
+                            HashMap hashMap=new HashMap();
+                            hashMap.put(it.getTimestampRandomCode(),combinedCodes);
+                            rs.setListOfPendingProduction(hashMap);
+                        }
+                    }
+                    //把计划对象添加进去
+                    list.add(rs);
+                });
+            }else {
+                list.add(rs);
+            }
+        });
+        return list;
+    }
+
+
+
+    /**
+     * 修改加弹计划信息
+     * 
+     * @param ammunitionPlanInformationIntermediateTable 加弹计划信息
+     * @return 结果
+     */
+    @Override
+    public int updateAmmunitionPlanInformationIntermediateTable(AmmunitionPlanInformationIntermediateTable ammunitionPlanInformationIntermediateTable)
+    {
+        return ammunitionPlanInformationIntermediateTableMapper.updateAmmunitionPlanInformationIntermediateTable(ammunitionPlanInformationIntermediateTable);
+    }
+
+    /**
+     * 批量删除加弹计划信息
+     * 
+     * @param ids 需要删除的加弹计划信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAmmunitionPlanInformationIntermediateTableByIds(Long[] ids)
+    {
+        return ammunitionPlanInformationIntermediateTableMapper.deleteAmmunitionPlanInformationIntermediateTableByIds(ids);
+    }
+
+    /**
+     * 删除加弹计划信息信息
+     * 
+     * @param id 加弹计划信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteAmmunitionPlanInformationIntermediateTableById(Long id)
+    {
+        return ammunitionPlanInformationIntermediateTableMapper.deleteAmmunitionPlanInformationIntermediateTableById(id);
+    }
+}

+ 2 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/DataAcquisitionInformationServiceImpl.java

@@ -282,7 +282,7 @@ public class DataAcquisitionInformationServiceImpl implements IDataAcquisitionIn
             if (bpmExecuteNodeForm.size() > 0) {
                 taskScriptKey = bpmExecuteNodeForm.get(0).getResultMap().get("taskScriptKey").toString();
             } else {
-                AjaxResult.success("未找到关联的节点脚本");
+               return AjaxResult.success("未找到关联的节点脚本");
             }
             //查询节点类型
             HashMap hashMap2 = new HashMap();
@@ -293,7 +293,7 @@ public class DataAcquisitionInformationServiceImpl implements IDataAcquisitionIn
             if (bpmExecuteNode.size() > 0) {
                 taskType = bpmExecuteNode.get(0).getResultMap().get("taskNodeType").toString();
             } else {
-                AjaxResult.success("未找到节点的类型");
+              return   AjaxResult.success("未找到节点的类型");
             }
 
             //数据准备齐全开始构造执行流程

+ 93 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/DetailsOfTheRefuelingPlanServiceImpl.java

@@ -0,0 +1,93 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.DetailsOfTheRefuelingPlanMapper;
+import com.zkqy.business.domain.DetailsOfTheRefuelingPlan;
+import com.zkqy.business.service.IDetailsOfTheRefuelingPlanService;
+
+/**
+ * 加弹计划详细信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Service
+public class DetailsOfTheRefuelingPlanServiceImpl implements IDetailsOfTheRefuelingPlanService 
+{
+    @Autowired
+    private DetailsOfTheRefuelingPlanMapper detailsOfTheRefuelingPlanMapper;
+
+    /**
+     * 查询加弹计划详细信息
+     * 
+     * @param id 加弹计划详细信息主键
+     * @return 加弹计划详细信息
+     */
+    @Override
+    public DetailsOfTheRefuelingPlan selectDetailsOfTheRefuelingPlanById(Long id)
+    {
+        return detailsOfTheRefuelingPlanMapper.selectDetailsOfTheRefuelingPlanById(id);
+    }
+
+    /**
+     * 查询加弹计划详细信息列表
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 加弹计划详细信息
+     */
+    @Override
+    public List<DetailsOfTheRefuelingPlan> selectDetailsOfTheRefuelingPlanList(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan)
+    {
+        return detailsOfTheRefuelingPlanMapper.selectDetailsOfTheRefuelingPlanList(detailsOfTheRefuelingPlan);
+    }
+
+    /**
+     * 新增加弹计划详细信息
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 结果
+     */
+    @Override
+    public int insertDetailsOfTheRefuelingPlan(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan)
+    {
+        return detailsOfTheRefuelingPlanMapper.insertDetailsOfTheRefuelingPlan(detailsOfTheRefuelingPlan);
+    }
+
+    /**
+     * 修改加弹计划详细信息
+     * 
+     * @param detailsOfTheRefuelingPlan 加弹计划详细信息
+     * @return 结果
+     */
+    @Override
+    public int updateDetailsOfTheRefuelingPlan(DetailsOfTheRefuelingPlan detailsOfTheRefuelingPlan)
+    {
+        return detailsOfTheRefuelingPlanMapper.updateDetailsOfTheRefuelingPlan(detailsOfTheRefuelingPlan);
+    }
+
+    /**
+     * 批量删除加弹计划详细信息
+     * 
+     * @param ids 需要删除的加弹计划详细信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDetailsOfTheRefuelingPlanByIds(Long[] ids)
+    {
+        return detailsOfTheRefuelingPlanMapper.deleteDetailsOfTheRefuelingPlanByIds(ids);
+    }
+
+    /**
+     * 删除加弹计划详细信息信息
+     * 
+     * @param id 加弹计划详细信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDetailsOfTheRefuelingPlanById(Long id)
+    {
+        return detailsOfTheRefuelingPlanMapper.deleteDetailsOfTheRefuelingPlanById(id);
+    }
+}

+ 5 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/MaterielServiceImpl.java

@@ -44,6 +44,11 @@ public class MaterielServiceImpl implements IMaterielService
         return materielMapper.selectMaterielList(materiel);
     }
 
+    @Override
+    public Materiel selectMateriel(String materielCode) {
+        return materielMapper.selectMaterielByMaterielCode(materielCode);
+    }
+
     /**
      * 新增物料信息
      * 

+ 97 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductionLineServiceImpl.java

@@ -0,0 +1,97 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductionLineMapper;
+import com.zkqy.business.domain.ProductionLine;
+import com.zkqy.business.service.IProductionLineService;
+
+/**
+ * 产线Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Service
+public class ProductionLineServiceImpl implements IProductionLineService 
+{
+
+    @Autowired
+    private ProductionLineMapper productionLineMapper;
+
+    /**
+     * 查询产线
+     * 
+     * @param id 产线主键
+     * @return 产线
+     */
+    @Override
+    public ProductionLine selectProductionLineById(Long id)
+    {
+        return productionLineMapper.selectProductionLineById(id);
+    }
+
+    /**
+     * 查询产线列表
+     * 
+     * @param productionLine 产线
+     * @return 产线
+     */
+    @Override
+    public List<ProductionLine> selectProductionLineList(ProductionLine productionLine)
+    {
+        return productionLineMapper.selectProductionLineList(productionLine);
+    }
+
+    /**
+     * 新增产线
+     * 
+     * @param productionLine 产线
+     * @return 结果
+     */
+    @Override
+    public int insertProductionLine(ProductionLine productionLine)
+    {
+        productionLine.setCreateTime(DateUtils.getNowDate());
+        return productionLineMapper.insertProductionLine(productionLine);
+    }
+
+    /**
+     * 修改产线
+     * 
+     * @param productionLine 产线
+     * @return 结果
+     */
+    @Override
+    public int updateProductionLine(ProductionLine productionLine)
+    {
+        productionLine.setUpdateTime(DateUtils.getNowDate());
+        return productionLineMapper.updateProductionLine(productionLine);
+    }
+
+    /**
+     * 批量删除产线
+     * 
+     * @param ids 需要删除的产线主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionLineByIds(Long[] ids)
+    {
+        return productionLineMapper.deleteProductionLineByIds(ids);
+    }
+
+    /**
+     * 删除产线信息
+     * 
+     * @param id 产线主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductionLineById(Long id)
+    {
+        return productionLineMapper.deleteProductionLineById(id);
+    }
+}

+ 13 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleProductsServiceImpl.java

@@ -1,6 +1,8 @@
 package com.zkqy.business.service.impl;
 
 import java.util.List;
+
+import com.zkqy.business.domain.vo.SaleProductsVo;
 import com.zkqy.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -44,6 +46,17 @@ public class SaleProductsServiceImpl implements ISaleProductsService
         return saleProductsMapper.selectSaleProductsList(saleProducts);
     }
 
+    /**
+     * 查询销售产品列表带客户名称
+     *
+     * @param saleProducts 销售产品
+     * @return 销售产品
+     */
+    @Override
+    public List<SaleProductsVo> selectSaleProductsListAndCustomerName(SaleProducts saleProducts) {
+        return saleProductsMapper.selectSaleProductsListAndCustomInfo(saleProducts);
+    }
+
     /**
      * 新增销售产品
      * 

+ 63 - 0
zkqy-custom-business/src/main/resources/mapper/business/AmmunitionPlanInformationIntermediateTableMapper.xml

@@ -0,0 +1,63 @@
+<?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.zkqy.business.mapper.AmmunitionPlanInformationIntermediateTableMapper">
+    
+    <resultMap type="com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable" id="AmmunitionPlanInformationIntermediateTableResult">
+        <result property="id"    column="id"    />
+        <result property="machineId"    column="machine_id"    />
+        <result property="timestampRandomCode"    column="timestamp_random_code"    />
+    </resultMap>
+
+    <sql id="selectAmmunitionPlanInformationIntermediateTableVo">
+        select id, machine_id, timestamp_random_code from {DBNAME}.ammunition_plan_information_intermediate_table
+    </sql>
+
+    <select id="selectAmmunitionPlanInformationIntermediateTableList" parameterType="com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable" resultMap="AmmunitionPlanInformationIntermediateTableResult">
+        <include refid="selectAmmunitionPlanInformationIntermediateTableVo"/>
+        <where>  
+            <if test="machineId != null  and machineId != ''"> and machine_id = #{machineId}</if>
+            <if test="timestampRandomCode != null  and timestampRandomCode != ''"> and timestamp_random_code = #{timestampRandomCode}</if>
+        </where>
+    </select>
+    
+    <select id="selectAmmunitionPlanInformationIntermediateTableById" parameterType="Long" resultMap="AmmunitionPlanInformationIntermediateTableResult">
+        <include refid="selectAmmunitionPlanInformationIntermediateTableVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertAmmunitionPlanInformationIntermediateTable" parameterType="com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable">
+        insert into {DBNAME}.ammunition_plan_information_intermediate_table
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="machineId != null">machine_id,</if>
+            <if test="timestampRandomCode != null">timestamp_random_code,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="machineId != null">#{machineId},</if>
+            <if test="timestampRandomCode != null">#{timestampRandomCode},</if>
+         </trim>
+    </insert>
+
+    <update id="updateAmmunitionPlanInformationIntermediateTable" parameterType="com.zkqy.business.domain.AmmunitionPlanInformationIntermediateTable">
+        update {DBNAME}.ammunition_plan_information_intermediate_table
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="machineId != null">machine_id = #{machineId},</if>
+            <if test="timestampRandomCode != null">timestamp_random_code = #{timestampRandomCode},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteAmmunitionPlanInformationIntermediateTableById" parameterType="Long">
+        delete from {DBNAME}.ammunition_plan_information_intermediate_table where id = #{id}
+    </delete>
+
+    <delete id="deleteAmmunitionPlanInformationIntermediateTableByIds" parameterType="String">
+        delete from {DBNAME}.ammunition_plan_information_intermediate_table where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 145 - 0
zkqy-custom-business/src/main/resources/mapper/business/DetailsOfTheRefuelingPlanMapper.xml

@@ -0,0 +1,145 @@
+<?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.zkqy.business.mapper.DetailsOfTheRefuelingPlanMapper">
+    
+    <resultMap type="com.zkqy.business.domain.DetailsOfTheRefuelingPlan" id="DetailsOfTheRefuelingPlanResult">
+        <result property="id"    column="id"    />
+        <result property="timestampRandomCode"    column="timestamp_random_code"    />
+        <result property="machineId"    column="machine_id"    />
+        <result property="currentColorCode"    column="current_color_code"    />
+        <result property="currentSpecification"    column="current_specification"    />
+        <result property="currentLotNumber"    column="current_lot_number"    />
+        <result property="currentSpindleCount"    column="current_spindle_count"    />
+        <result property="startTime"    column="start_time"    />
+        <result property="plannedEndTime"    column="planned_end_time"    />
+        <result property="planStatus"    column="plan_status"    />
+        <result property="number"    column="number"    />
+        <result property="productType"    column="productType"    />
+    </resultMap>
+
+    <sql id="selectDetailsOfTheRefuelingPlanVo">
+        select id, timestamp_random_code, machine_id, current_color_code, current_specification, current_lot_number, current_spindle_count, start_time, planned_end_time,plan_status,number,productType from {DBNAME}.details_of_the_refueling_plan
+    </sql>
+
+    <select id="selectDetailsOfTheRefuelingPlanList" parameterType="com.zkqy.business.domain.DetailsOfTheRefuelingPlan" resultMap="DetailsOfTheRefuelingPlanResult">
+        <include refid="selectDetailsOfTheRefuelingPlanVo"/>
+        <where>  
+            <if test="timestampRandomCode != null  and timestampRandomCode != ''"> and timestamp_random_code = #{timestampRandomCode}</if>
+            <if test="machineId != null "> and machine_id = #{machineId}</if>
+            <if test="currentColorCode != null  and currentColorCode != ''"> and current_color_code = #{currentColorCode}</if>
+            <if test="currentSpecification != null  and currentSpecification != ''"> and current_specification = #{currentSpecification}</if>
+            <if test="currentLotNumber != null "> and current_lot_number = #{currentLotNumber}</if>
+            <if test="currentSpindleCount != null  and currentSpindleCount != ''"> and current_spindle_count = #{currentSpindleCount}</if>
+            <if test="startTime != null  and startTime != ''"> and start_time = #{startTime}</if>
+            <if test="plannedEndTime != null  and plannedEndTime != ''"> and planned_end_time = #{plannedEndTime}</if>
+            <if test="planStatus != null  and planStatus != ''"> and plan_status = #{planStatus}</if>
+            <if test="number != null  and number != ''"> and `number` = #{number}</if>
+            <if test="productType != null  and productType != ''"> and `productType` = #{productType}</if>
+        </where>
+--         group by machineId,productType
+    </select>
+    
+    <select id="selectDetailsOfTheRefuelingPlanById" parameterType="Long" resultMap="DetailsOfTheRefuelingPlanResult">
+        <include refid="selectDetailsOfTheRefuelingPlanVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDetailsOfTheRefuelingPlan" parameterType="com.zkqy.business.domain.DetailsOfTheRefuelingPlan">
+        insert into {DBNAME}.details_of_the_refueling_plan
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="timestampRandomCode != null">timestamp_random_code,</if>
+            <if test="machineId != null">machine_id,</if>
+            <if test="currentColorCode != null and currentColorCode != ''">current_color_code,</if>
+            <if test="currentSpecification != null">current_specification,</if>
+            <if test="currentLotNumber != null">current_lot_number,</if>
+            <if test="currentSpindleCount != null">current_spindle_count,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="plannedEndTime != null">planned_end_time,</if>
+            <if test="planStatus != null">plan_status,</if>
+            <if test="number != null">`number`,</if>
+            <if test="productType != null  and productType != ''">`productType`</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="timestampRandomCode != null">#{timestampRandomCode},</if>
+            <if test="machineId != null">#{machineId},</if>
+            <if test="currentColorCode != null and currentColorCode != ''">#{currentColorCode},</if>
+            <if test="currentSpecification != null">#{currentSpecification},</if>
+            <if test="currentLotNumber != null">#{currentLotNumber},</if>
+            <if test="currentSpindleCount != null">#{currentSpindleCount},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="plannedEndTime != null">#{plannedEndTime},</if>
+            <if test="planStatus != null">#{planStatus},</if>
+            <if test="number != null">#{number},</if>
+            <if test="productType != null  and productType != ''"> #{productType}</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBatchDetailsOfTheRefuelingPlan" parameterType="java.util.List">
+        INSERT INTO {DBNAME}.details_of_the_refueling_plan
+        (<trim prefix="(" suffix=")" suffixOverrides=",">
+        id,
+        timestamp_random_code,
+        machine_id,
+        current_color_code,
+        current_specification,
+        current_lot_number,
+        current_spindle_count,
+        start_time,
+        planned_end_time,
+        planStatus,
+        `number`,
+        `productType`,
+    </trim>)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (<trim prefix="(" suffix=")" suffixOverrides=",">
+            #{item.id},
+            #{item.timestampRandomCode},
+            #{item.machineId},
+            #{item.currentColorCode},
+            #{item.currentSpecification},
+            #{item.currentLotNumber},
+            #{item.currentSpindleCount},
+            #{item.startTime},
+            #{item.planStatus},
+            #{item.number},
+            #{item.productType},
+        </trim>)
+        </foreach>
+    </insert>
+
+
+    <update id="updateDetailsOfTheRefuelingPlan" parameterType="com.zkqy.business.domain.DetailsOfTheRefuelingPlan">
+        update {DBNAME}.details_of_the_refueling_plan
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="timestampRandomCode != null">timestamp_random_code = #{timestampRandomCode},</if>
+            <if test="machineId != null">machine_id = #{machineId},</if>
+            <if test="currentColorCode != null and currentColorCode != ''">current_color_code = #{currentColorCode},</if>
+            <if test="currentSpecification != null">current_specification = #{currentSpecification},</if>
+            <if test="currentLotNumber != null">current_lot_number = #{currentLotNumber},</if>
+            <if test="currentSpindleCount != null">current_spindle_count = #{currentSpindleCount},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="plannedEndTime != null">planned_end_time = #{plannedEndTime},</if>
+            <if test="planStatus != null">plan_status = #{planStatus},</if>
+            <if test="number != null">`number` = #{number},</if>
+            <if test="productType != null  and productType != ''">`productType`= #{productType}</if>
+        </trim>
+
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDetailsOfTheRefuelingPlanById" parameterType="Long">
+        delete from {DBNAME}.details_of_the_refueling_plan where id = #{id}
+    </delete>
+
+    <delete id="deleteDetailsOfTheRefuelingPlanByIds" parameterType="String">
+        delete from {DBNAME}.details_of_the_refueling_plan where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 13 - 2
zkqy-custom-business/src/main/resources/mapper/business/MaterielMapper.xml

@@ -26,10 +26,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="delFlag"    column="del_flag"    />
         <result property="taskProcessKey"    column="task_process_key"    />
         <result property="taskNodeKey"    column="task_node_key"    />
+        <result property="materieEncoding"    column="materie_encoding"    />
+        <result property="materieColorNumber"    column="materie_color_number"    />
     </resultMap>
 
     <sql id="selectMaterielVo">
-        select id, materiel_code, materiel_name, materiel_asname, subordinate_departmen, materiel_species, materiel_use, units, specification_model, status, data_approval_status, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key from {DBNAME}.materiel
+        select id, materiel_code, materiel_name, materiel_asname, subordinate_departmen, materiel_species, materiel_use, units, specification_model, status, data_approval_status, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key,
+               task_node_key,materie_encoding,materie_color_number from {DBNAME}.materiel
     </sql>
 
     <select id="selectMaterielList" parameterType="com.zkqy.business.domain.Materiel" resultMap="MaterielResult">
@@ -49,9 +52,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateById != null "> and update_by_id = #{updateById}</if>
             <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
             <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+            <if test="materieEncoding != null  and materieEncoding != ''"> and materie_encoding = #{materieEncoding}</if>
+            <if test="materieColorNumber != null  and materieColorNumber != ''"> and materie_color_number = #{materieColorNumber}</if>
         </where>
     </select>
-    
+
     <select id="selectMaterielById" parameterType="Long" resultMap="MaterielResult">
         <include refid="selectMaterielVo"/>
         where id = #{id}
@@ -84,6 +89,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="delFlag != null">del_flag,</if>
             <if test="taskProcessKey != null">task_process_key,</if>
             <if test="taskNodeKey != null">task_node_key,</if>
+            <if test="materieEncoding != null">materie_encoding,</if>
+            <if test="materieColorNumber != null">materie_color_number,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="materielCode != null">#{materielCode},</if>
@@ -106,6 +113,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="delFlag != null">#{delFlag},</if>
             <if test="taskProcessKey != null">#{taskProcessKey},</if>
             <if test="taskNodeKey != null">#{taskNodeKey},</if>
+            <if test="materieEncoding != null">#{materieEncoding},</if>
+            <if test="materieColorNumber != null">#{materieColorNumber},</if>
          </trim>
     </insert>
 
@@ -132,6 +141,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
             <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+            <if test="materieEncoding != null">materie_encoding = #{materieEncoding},</if>
+            <if test="materieColorNumber != null">materie_color_number = #{materieColorNumber},</if>
         </trim>
         where id = #{id}
     </update>

+ 125 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductionLineMapper.xml

@@ -0,0 +1,125 @@
+<?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.zkqy.business.mapper.ProductionLineMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductionLine" id="ProductionLineResult">
+        <result property="id"    column="id"    />
+        <result property="productionLineNo"    column="production_line_no"    />
+        <result property="productionLineName"    column="production_line_name"    />
+        <result property="productionLineDepartment"    column="production_line_department"    />
+        <result property="productionLineWorkshop"    column="production_line_workshop"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectProductionLineVo">
+        select id, production_line_no, production_line_name, production_line_department, production_line_workshop, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.production_line
+    </sql>
+
+    <select id="selectProductionLineList" parameterType="com.zkqy.business.domain.ProductionLine" resultMap="ProductionLineResult">
+        <include refid="selectProductionLineVo"/>
+        <where>  
+            <if test="productionLineNo != null  and productionLineNo != ''"> and production_line_no = #{productionLineNo}</if>
+            <if test="productionLineName != null  and productionLineName != ''"> and production_line_name like concat('%', #{productionLineName}, '%')</if>
+            <if test="productionLineDepartment != null  and productionLineDepartment != ''"> and production_line_department = #{productionLineDepartment}</if>
+            <if test="productionLineWorkshop != null  and productionLineWorkshop != ''"> and production_line_workshop = #{productionLineWorkshop}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectProductionLineById" parameterType="Long" resultMap="ProductionLineResult">
+        <include refid="selectProductionLineVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductionLine" parameterType="com.zkqy.business.domain.ProductionLine" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.production_line
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="productionLineNo != null">production_line_no,</if>
+            <if test="productionLineName != null">production_line_name,</if>
+            <if test="productionLineDepartment != null">production_line_department,</if>
+            <if test="productionLineWorkshop != null">production_line_workshop,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="productionLineNo != null">#{productionLineNo},</if>
+            <if test="productionLineName != null">#{productionLineName},</if>
+            <if test="productionLineDepartment != null">#{productionLineDepartment},</if>
+            <if test="productionLineWorkshop != null">#{productionLineWorkshop},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProductionLine" parameterType="com.zkqy.business.domain.ProductionLine">
+        update {DBNAME}.production_line
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="productionLineNo != null">production_line_no = #{productionLineNo},</if>
+            <if test="productionLineName != null">production_line_name = #{productionLineName},</if>
+            <if test="productionLineDepartment != null">production_line_department = #{productionLineDepartment},</if>
+            <if test="productionLineWorkshop != null">production_line_workshop = #{productionLineWorkshop},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductionLineById" parameterType="Long">
+        delete from {DBNAME}.production_line where id = #{id}
+    </delete>
+
+    <delete id="deleteProductionLineByIds" parameterType="String">
+        delete from {DBNAME}.production_line where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 65 - 2
zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml

@@ -32,8 +32,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="colourNumber"    column="colour_number"    />
     </resultMap>
 
+    <resultMap type="com.zkqy.business.domain.vo.SaleProductsVo" id="SaleProductsResultAndCustomInfo">
+        <result property="id"    column="id"    />
+        <result property="saleProductNo"    column="sale_product_no"    />
+        <result property="saleOrderNo"    column="sale_order_no"    />
+        <result property="productNo"    column="product_no"    />
+        <result property="productName"    column="product_name"    />
+        <result property="productNumber"    column="product_number"    />
+        <result property="productWeight"    column="product_weight"    />
+        <result property="productUnitPrice"    column="product_unit_price"    />
+        <result property="productAmounts"    column="product_amounts"    />
+        <result property="productNotes"    column="product_notes"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="status"    column="status"    />
+        <result property="productionLineNo"    column="production_line_no"    />
+        <result property="sliceType"    column="slice_type"    />
+        <result property="colourNumber"    column="colour_number"    />
+        <result property="customName" column="custom_name"/>
+        <result property="materieEncoding" column="materie_encoding"/>
+        <result property="materieColorNumber" column="materie_color_number"/>
+    </resultMap>
+
     <sql id="selectSaleProductsVo">
-        select id, sale_product_no, sale_order_no, product_no, product_name, product_number, product_weight, product_unit_price, product_amounts, product_notes, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key, process_key, status, production_line_no, slice_type, colour_number from {DBNAME}.sale_products
+        select id, sale_product_no, sale_order_no, product_no, product_name, product_number, product_weight, product_unit_price, product_amounts, product_notes, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key, process_key, status, production_line_no, slice_type, colour_number,lot_number from {DBNAME}.sale_products
     </sql>
 
     <select id="selectSaleProductsList" parameterType="com.zkqy.business.domain.SaleProducts" resultMap="SaleProductsResult">
@@ -57,9 +88,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productionLineNo != null  and productionLineNo != ''"> and production_line_no = #{productionLineNo}</if>
             <if test="sliceType != null  and sliceType != ''"> and slice_type = #{sliceType}</if>
             <if test="colourNumber != null  and colourNumber != ''"> and colour_number = #{colourNumber}</if>
+            <if test="lotNumber != null  and lotNumber != ''"> and lot_number = #{lotNumber}</if>
         </where>
     </select>
-    
+
+    <select id="selectSaleProductsListAndCustomInfo" parameterType="com.zkqy.business.domain.SaleProducts" resultMap="SaleProductsResultAndCustomInfo">
+        SELECT
+        sp.*,cs.custom_name,m.materie_encoding,m.materie_color_number
+        FROM
+        {DBNAME}.sale_products AS sp
+        INNER JOIN {DBNAME}.sale_order AS so ON sp.sale_order_no = so.sale_no
+        Inner Join {DBNAME}.customer as cs ON so.sale_custom_no= cs.custom_no
+        inner join   {DBNAME}.materiel as m on sp.colour_number= m.materiel_code
+        <where>
+            <if test="saleProductNo != null  and saleProductNo != ''"> and sale_product_no = #{saleProductNo}</if>
+            <if test="saleOrderNo != null  and saleOrderNo != ''"> and sale_order_no = #{saleOrderNo}</if>
+            <if test="productNo != null  and productNo != ''"> and product_no = #{productNo}</if>
+            <if test="productName != null  and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
+            <if test="productNumber != null "> and product_number = #{productNumber}</if>
+            <if test="productWeight != null  and productWeight != ''"> and product_weight = #{productWeight}</if>
+            <if test="productUnitPrice != null  and productUnitPrice != ''"> and product_unit_price = #{productUnitPrice}</if>
+            <if test="productAmounts != null  and productAmounts != ''"> and product_amounts = #{productAmounts}</if>
+            <if test="productNotes != null  and productNotes != ''"> and product_notes = #{productNotes}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="status != null  and status != ''"> and sp.status = #{status}</if>
+            <if test="productionLineNo != null  and productionLineNo != ''"> and production_line_no = #{productionLineNo}</if>
+            <if test="sliceType != null  and sliceType != ''"> and slice_type = #{sliceType}</if>
+            <if test="colourNumber != null  and colourNumber != ''"> and colour_number = #{colourNumber}</if>
+            <if test="lotNumber != null  and lotNumber != ''"> and lot_number = #{lotNumber}</if>
+        </where>
+    </select>
+
     <select id="selectSaleProductsById" parameterType="Long" resultMap="SaleProductsResult">
         <include refid="selectSaleProductsVo"/>
         where id = #{id}

+ 25 - 0
zkqy-ui/src/api/plan/paln.js

@@ -0,0 +1,25 @@
+import request from "@/utils/request";
+
+export function ammunitionPlanInfo(planVo) {
+  return request({
+    url: '/business/ammunitionPlanInfo/list',
+    method: 'GET',
+    params: planVo
+  })
+}
+
+
+export function getProductsInfo() {
+  return request({
+    url: '/system/products/getProducts',
+    method: 'GET',
+  })
+}
+
+export function getMaterielInfo(queryParams) {
+  return request({
+    url: '/system/materiel/getMaterielInfo',
+    method: 'GET',
+    params:queryParams
+  })
+}

+ 0 - 1
zkqy-ui/src/views/orderMange/approve.vue

@@ -896,7 +896,6 @@ export default {
       dateRange: [],
       // 表单参数
       form: {},
-      rules: {},
       // cru 弹窗
       open: false,
       // excel共通导入数据

+ 391 - 0
zkqy-ui/src/views/orderMange/planTable/index.vue

@@ -0,0 +1,391 @@
+<template>
+  <div class="app-container" style="width: 100%;">
+    <el-tabs type="border-card" @tab-click="tabClick" v-model="selectedWorkshop">
+      <el-tab-pane label="南车间计划" name="南车间">
+         <!--表格-->
+        <el-table
+          :data="tableData"
+          ref="tableRef"
+          :span-method="objectSpanMethod"
+          border style="margin-bottom: 10px" >
+          <el-table-column prop="machineId" fixed label="机台号" header-align="center" align="center" min-width="110.5"></el-table-column>
+          <el-table-column label="在机产品" header-align="center">
+            <el-table-column prop="productType"  label="产品类别" header-align="center" align="center" min-width="110.5"></el-table-column>
+            <el-table-column prop="currentColorCode" label="色号" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="currentSpecification" label="规格" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="currentLotNumber" label="批号" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="currentSpindleCount" label="锭数" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="startTime" label="上机时间" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="plannedEndTime" label="计划下机时间" header-align="center" align="center"></el-table-column>
+          </el-table-column>
+          <el-table-column  label="待上机产品" header-align="center" align="center">
+            <el-table-column prop="djCurrentColorCode" label="色号" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="djCurrentSpecification" label="规格" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="djNumber" label="数量" header-align="center" align="center"></el-table-column>
+            <el-table-column prop="djCurrentLotNumber" label="原丝批号" header-align="center" align="center"></el-table-column>
+          </el-table-column>
+          <el-table-column prop="listOfPendingProduction" label="待生产产品列表" header-align="center" align="center" min-width="300"></el-table-column>
+          <el-table-column   fixed="right" label="操作" header-align="center" align="center"  min-width="120">
+            <template slot-scope="scope">
+              <el-dropdown>
+                <el-button type="primary">
+                  操作
+                  <i class="el-icon-arrow-down el-icon--right"></i>
+                </el-button>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item @click.native.prevent="handleAddPlan(scope.row)">新增计划</el-dropdown-item>
+                  <el-dropdown-item @click.native.prevent="handleEditPlan(scope.row)">修改计划</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </template>
+          </el-table-column>
+        </el-table>
+        <!--弹窗-->
+
+        <el-dialog title="新增计划产品"  :visible.sync="dialogTableVisible" width="1000px">
+          <el-table :data="tableData2" @row-click.self="handleRowClick">
+            <el-table-column prop="province" label="产品" header-align="center" align="center" width="180px">
+                <template v-slot:default="scope">
+                     <el-select  v-model="scope.row.product" placeholder="请选择待排产产品" @change="selectedChangeDate(scope.row,scope.row.product)">
+                           <el-option v-for="product in productsInfo" :key="product.id" :label="product.productName" :value="product.id" ></el-option>
+                     </el-select>
+                </template>
+            </el-table-column>
+
+            <el-table-column prop="currentColorCode" label="色号" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <!-- 如果当前行正在编辑,则显示输入框 -->
+                <el-input v-if="scope.row.isEditing"  disabled="disabled"  v-model="scope.row.currentColorCode" placeholder="请输入色号" @blur.stop.prevent="handleInputBlur(scope.row)" ></el-input>
+                <!-- 否则显示普通文本 -->
+                <span v-else>{{ scope.row.currentColorCode }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="currentSpecification" label="规格" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <!-- 如果当前行正在编辑,则显示输入框 -->
+                <el-input v-if="scope.row.isEditing" v-model="scope.row.currentSpecification" placeholder="请输入规格" @blur.stop.prevent="handleInputBlur(scope.row)">></el-input>
+                <!-- 否则显示普通文本 -->
+                <span v-else>{{ scope.row.currentSpecification }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="currentSpecification" label="产品类别" header-align="center" align="center"  width="100px">
+              <template v-slot:default="scope">
+                <el-select  v-model="scope.row.productType" placeholder="请选择产品类别" @change="selectedChangeDate(scope.row,scope.row.product)">
+                  <el-option v-for="product in productTypeList" :key="product.value" :label="product.lable" :value="product.value" ></el-option>
+                </el-select>
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="currentLotNumber" label="批号" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <el-input v-if="scope.row.isEditing"  v-model="scope.row.currentLotNumber" placeholder="请输入批号" @blur.stop.prevent="handleInputBlur(scope.row)">></el-input>
+                <span v-else>{{ scope.row.currentLotNumber }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="currentSpindleCount" label="锭数" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <el-input v-if="scope.row.isEditing" v-model="scope.row.currentSpindleCount" placeholder="请输入锭数" @blur.stop.prevent="handleInputBlur(scope.row)">></el-input>
+                <span v-else>{{ scope.row.currentSpindleCount }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="djNumber" label="数量" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <el-input v-if="scope.row.isEditing" v-model="scope.row.djNumber" placeholder="请输入数量" @blur.stop.prevent="handleInputBlur(scope.row)">></el-input>
+                <span v-else>{{ scope.row.djNumber }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="startTime" label="上机时间" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <el-input v-if="scope.row.isEditing" v-model="scope.row.startTime" placeholder="请输入上机时间" @blur.stop.prevent="handleInputBlur(scope.row)">></el-input>
+                <span v-else>{{ scope.row.startTime }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="plannedEndTime" label="计划下机时间" header-align="center" align="center">
+              <template v-slot:default="scope">
+                <el-input v-if="scope.row.isEditing" :ref="'input'+scope.$index" v-model="scope.row.plannedEndTime" placeholder="请输入计划下机时间" @blur="handleInputBlur(scope.row)">></el-input>
+                <span v-else>{{ scope.row.plannedEndTime }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="danger"
+                  @click.stop.prevent="handleDelete(scope.$index, scope.row)">删除</el-button>
+              </template>
+            </el-table-column>
+
+          </el-table>
+          <el-button type="primary" style="width: 100%;margin-top: 30px"  @click="addEditableRow">新增计划产品</el-button>
+          <span slot="footer" class="dialog-footer">
+            <el-button @click="dialogTableVisible = false">取 消</el-button>
+            <el-button type="primary" @click="dialogTableVisible = false">确 定</el-button>
+           </span>
+        </el-dialog>
+      </el-tab-pane>
+      <el-tab-pane label="北车间计划" name="北车间">配置管理</el-tab-pane>
+    </el-tabs>
+
+  </div>
+</template>
+<script>
+import {ammunitionPlanInfo,getProductsInfo,getMaterielInfo} from "@/api/plan/paln.js";
+export default {
+  data() {
+    return {
+      //选中的是那个车间
+      selectedWorkshop:"南车间",
+      tableData:[],
+      form: {
+        product:"",
+      },
+      previousMachineId: undefined,
+      currentRowspan: 1,
+      tableData2: [{
+        currentColorCode: '001浅绿',
+        currentSpecification: '15/36',
+        currentLotNumber: '24-1',
+        currentSpindleCount:'100',
+        djNumber:"11",
+        startTime:"03-28-16.40",
+        plannedEndTime:"03-28-16.40",
+        isEditing:false,
+        product:"",
+        productType:""
+      }],
+      dialogTableVisible:false,
+      editingRowIndex: -1,
+      lastEditLine:0,
+      queryParams:{ productionLineDepartment:"加弹部",
+                    productionLineWorkshop:"南车间"},
+      isEditLine:false,
+      productsInfo:[],
+      product:{},
+      materiel:{},
+      //产品类别
+      productTypeList:[{value:"1",lable:"A面"},{value:"2",lable:"B面"}],
+    }
+  },
+  mounted() {
+    this.getAmmunitionPlanInfo();
+    this.getProductsInfo();
+  },
+  methods: {
+    //查询排产信息
+    getAmmunitionPlanInfo() {
+      ammunitionPlanInfo(this.queryParams).then((response) => {
+        this.tableData = response.data
+        console.log(response.data)
+      });
+    },
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      // if (columnIndex === 0) {
+      //
+      //   if (rowIndex % 2 === 0) {
+      //     return {
+      //       rowspan: 2,
+      //       colspan: 1
+      //     };
+      //   } else {
+      //     return {
+      //       rowspan: 0,
+      //       colspan: 0
+      //     };
+      //   }
+      // }
+      if (columnIndex === 0 && this.previousMachineId !== undefined) {
+        // 比较当前行的machineId是否与上一行相同
+        if (row.machineId === this.previousMachineId) {
+          // 内容相同,跨行
+          this.currentRowspan++;
+          return {
+            rowspan: this.currentRowspan,
+            colspan: 1
+          };
+        } else {
+          // 内容不同,重置跨行计数
+          this.currentRowspan = 1;
+          this.previousMachineId = row.machineId;
+          return {
+            rowspan: 1,
+            colspan: 1
+          };
+        }
+      } else {
+        // 非第一列或者第一次渲染,初始化状态
+        this.previousMachineId = row.machineId;
+        this.currentRowspan = 1;
+        return {
+          rowspan: 1,
+          colspan: 1
+        };
+      }
+    },
+    //待投产的产品数据
+    getProductsInfo() {
+      getProductsInfo().then((response) => {
+        this.productsInfo = response.data;
+        this.productsInfo.forEach(item => {
+          // item.lotNumber == null ? item.lotNumber = "24-1" : item.lotNumber;
+          item.productName = item.productName+"—"+item.materieEncoding+item.materieColorNumber
+        });
+        console.log(this.productsInfo)
+      })
+    },
+    //下拉框数据改变查询色号批号信息
+    selectedChangeDate(row,selectedProduct) {
+      //选择的那个销售产品
+      // console.log(row,selectedProduct)
+      this.product = this.productsInfo.find(product => product.id === selectedProduct);
+      this.form.product=selectedProduct;
+      // console.log(this.product)
+      //通过母粒编码查询到对应的母粒信息
+      let queryParams = {
+        "materielCode": this.product.colourNumber
+      }
+      //得到对应的母粒信息
+      getMaterielInfo(queryParams).then((response) => {
+        if (response.data!=null) {
+          this.materiel = response.data;
+          console.log(this.materiel.materieEncoding)
+          //色号
+          row.currentColorCode = this.materiel.materieEncoding+"("+this.materiel.materieColorNumber+")";
+          //批次
+          // row.currentLotNumber=this.product.lotNumber==null?"XW121":this.product.lotNumber;
+        }
+      });
+
+      //色号
+      // console.log(this.materiel)
+
+    },
+    //新增计划产品信息
+    handleAddPlan(row) {
+      this.dialogTableVisible = true
+      this.tableData2=[]
+    },
+    //修改产品计划
+    handleEditPlan(row) {
+      //弹窗
+    },
+    //tab栏点击切换
+    tabClick(tab, event) {
+      // console.log('当前点击的标签名称:', tab.name);
+      this.selectedWorkshop = tab.name;
+      // productionLineName getProductionLineNo productionLineDepartment productionLineWorkshop
+      this.queryParams.productionLineWorkshop = tab.name;
+      this.getAmmunitionPlanInfo();
+    },
+    handleDelete(index, row) {
+      // console.log(index,row)
+      // this.tableData2[a];
+      this.tableData2.splice(index, 1);
+      // 把上一编辑行置回-1
+      this.editingRowIndex = -1;
+    },
+    //点击编辑行
+    handleRowClick(row) {
+
+      this.isEditLine = true;
+      // alert(this.lastEditLine+"编辑行")
+      //找到当前行的编辑索引
+      var rowIndex = this.tableData2.indexOf(row);
+
+      if (this.lastEditLine != 0 &&
+        this.editingRowIndex !== rowIndex &&
+        this.editingRowIndex !== -1 &&
+        !this.isRowFilled(this.tableData2[this.lastEditLine])) {
+        this.$message({
+          message: '请先完成上一条数据的填写',
+          type: 'warning'
+        });
+        return;
+      }
+
+      //编辑索引不等于当前编辑行索引
+      if (this.editingRowIndex !== rowIndex) {
+        // alert(this.editingRowIndex);
+        if (this.editingRowIndex !== -1) {
+          //把当前行变成不可编辑的
+          this.tableData2[this.editingRowIndex].isEditing = false;
+        }
+        //把当前行变成可编辑的
+        row.isEditing = true;
+        this.editingRowIndex = rowIndex;
+      }
+
+    },
+    //光标失去焦点变成不可编辑
+    handleInputBlur(row) {
+      let rowIndex = this.tableData2.indexOf(row);
+      //编辑索引不等于当前编辑行索引
+      if (this.editingRowIndex !== rowIndex) {
+        if (this.isRowFilled(row)) {
+          row.isEditing = false;
+          //对于整个表格来说
+          this.isEditLine = false;
+          //当前编辑行置为-1
+          this.editingRowIndex = -1;
+        }
+      }
+    },
+
+    // 检查行是否填写完毕的示例方法
+    isRowFilled(row) {
+      return row.currentSpecification && row.currentSpindleCount && row.djNumber && row.startTime && row.plannedEndTime;
+    },
+    // 新增一行标记为可编辑
+    addEditableRow() {
+      // 检查当前编辑行是否已填写完毕
+      if (this.editingRowIndex !== -1 && !this.isRowFilled(this.tableData2[this.editingRowIndex])) {
+        this.$message({
+          message: '请先完成上一条数据的填写',
+          type: 'warning'
+        });
+        return;
+      }
+      //新增行之前先让以前的行不能编辑
+      this.tableData2.forEach(item => {
+        item.isEditing = false;
+      })
+      // 新增一行,并标记为可编辑
+      //            <!--        // <el-table-column prop="currentColorCode" label="色号" header-align="center" align="center"></el-table-column>-->
+// <!--        // <el-table-column prop="currentSpecification" label="规格" header-align="center" align="center"></el-table-column>-->
+// <!--        // <el-table-column prop="currentLotNumber" label="批号" header-align="center" align="center"></el-table-column>-->
+// <!--        // <el-table-column prop="currentSpindleCount" label="锭数" header-align="center" align="center"></el-table-column>-->
+// <!--        //   <el-table-column prop="djNumber" label="数量" header-align="center" align="center"></el-table-column>-->
+// <!--        // <el-table-column prop="startTime" label="上机时间" header-align="center" align="center"></el-table-column>-->
+// <!--        // <el-table-column prop="plannedEndTime" label="计划下机时间" header-align="center" align="center"></el-table-column>-->
+      this.tableData2.push({
+        currentColorCode: '',
+        currentSpecification: '',
+        currentLotNumber: '',
+        currentSpindleCount: '',
+        djNumber: '',
+        startTime: '',
+        plannedEndTime:'',
+        isEditing: true // 标记为正在编辑状态
+      });
+      this.editingRowIndex = this.tableData2.length - 1; // 更新当前编辑的行索引
+      this.lastEditLine = this.tableData2.length - 1
+    },
+  }
+}
+</script>
+
+<style scoped>
+.el-tabs--border-card >>> .el-tabs__content {
+  padding: 0 !important;
+}
+
+.el-table__body-wrapper {
+  cursor: grab;
+}
+.el-table__body-wrapper.grabbing {
+  cursor: grabbing;
+}
+</style>