Browse Source

勾选导出,检验模版导入

lucky 6 months ago
parent
commit
ff4a4febb0
48 changed files with 5395 additions and 247 deletions
  1. 4 5
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/CustomerServiceImpl.java
  2. 4 4
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java
  3. 4 4
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleOrderServiceImpl.java
  4. 1 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/AutomaticSchedulingOnSiteController.java
  5. 107 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BpInspectionController.java
  6. 108 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BpLeaveFactoryController.java
  7. 107 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/JlIncomingInspectionController.java
  8. 1 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialBaseInfoController.java
  9. 17 5
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialInfoController.java
  10. 31 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/PlanTaskDetailsController.java
  11. 277 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/QualityinspectioninformationController.java
  12. 171 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BpInspection.java
  13. 173 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BpLeaveFactory.java
  14. 176 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/JlIncomingInspection.java
  15. 33 18
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialInfo.java
  16. 11 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialRetentionLog.java
  17. 319 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Qualityinspectioninformation.java
  18. 78 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BpInspectionMapper.java
  19. 79 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BpLeaveFactoryMapper.java
  20. 79 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/JlIncomingInspectionMapper.java
  21. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/QualityinspectioninformationMapper.java
  22. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBpInspectionService.java
  23. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBpLeaveFactoryService.java
  24. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IJlIncomingInspectionService.java
  25. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IQualityinspectioninformationService.java
  26. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BpInspectionServiceImpl.java
  27. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BpLeaveFactoryServiceImpl.java
  28. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/JlIncomingInspectionServiceImpl.java
  29. 93 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/QualityinspectioninformationServiceImpl.java
  30. 119 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/ExcelHeaderDataListener.java
  31. 202 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/MergeRowListener.java
  32. 131 0
      zkqy-fujian-amichi/src/main/resources/mapper/BpInspectionMapper.xml
  33. 135 0
      zkqy-fujian-amichi/src/main/resources/mapper/BpLeaveFactoryMapper.xml
  34. 133 0
      zkqy-fujian-amichi/src/main/resources/mapper/JlIncomingInspectionMapper.xml
  35. 14 7
      zkqy-fujian-amichi/src/main/resources/mapper/MaterialInfoMapper.xml
  36. 6 0
      zkqy-fujian-amichi/src/main/resources/mapper/MaterialRetentionLogMapper.xml
  37. 161 0
      zkqy-fujian-amichi/src/main/resources/mapper/QualityinspectioninformationMapper.xml
  38. 7 0
      zkqy-ui/src/api/amichi/planTask/planTaskDetails.js
  39. 44 0
      zkqy-ui/src/api/amichi/qualityinspectioninformation/inspection.js
  40. 44 0
      zkqy-ui/src/api/amichi/qualityinspectioninformation/qualityinspectioninformation.js
  41. 2 1
      zkqy-ui/src/views/amichi/MaterialRetentionLog/index.vue
  42. 112 190
      zkqy-ui/src/views/amichi/print/rkadyPrint.vue
  43. 346 0
      zkqy-ui/src/views/amichi/print/rkadyPrint3.vue
  44. 331 0
      zkqy-ui/src/views/amichi/qualityinspectioninformation/bp_inspection/index.vue
  45. 331 0
      zkqy-ui/src/views/amichi/qualityinspectioninformation/bp_leavefactory/index.vue
  46. 466 0
      zkqy-ui/src/views/amichi/qualityinspectioninformation/index.vue
  47. 331 0
      zkqy-ui/src/views/amichi/qualityinspectioninformation/jl_inspection/index.vue
  48. 12 13
      zkqy-ui/src/views/amichi/shopRoom/index.vue

+ 4 - 5
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/CustomerServiceImpl.java

@@ -109,20 +109,19 @@ public class CustomerServiceImpl implements ICustomerService
         List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
         //查看当前用户角色是否存在销售员角色
         boolean containsSalesman = roles.stream().anyMatch(role -> "salesman".equals(role.getRoleKey()));
-
+        //能看所有客户的角色
+        boolean containsChiefSalesman = roles.stream().anyMatch(role -> "chiefSalesman".equals(role.getRoleKey()));
         //查看当前用户是否是租户管理员,是返回全部销售单数据
         if(SecurityUtils.isLoginUserTenantAdmin()){
             customerList = customerMapper.customerList(customer);
-        }else if (SecurityUtils.getUserType().equals("05")) {
-            customerList = customerMapper.customerList(customer);
         }else if(containsSalesman){
             customer.setCreateById(SecurityUtils.getUserId());
             customerList = customerMapper.customerList(customer);
+        }else if(containsChiefSalesman){
+            customerList = customerMapper.customerList(customer);
         }else {
             customerList = customerMapper.customerList(customer);
         }
-
-
         return customerList;
     }
 

+ 4 - 4
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java

@@ -764,14 +764,15 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
             String msg = "";
             boolean returnState = false;
             int del = 0;
-            // 循环减当前库存
+            // 循环减当前库存()
             for (int i = 0; i < productInventoryList.size(); i++) {
                 //当前库存对象
                 ProductInventory productInventory = productInventoryList.get(i);
                 // 更新库存对象
                 ProductInventory editProductInventory = new ProductInventory();
                 editProductInventory.setId(productInventory.getId());
-                //箱数
+
+                //箱数(如果当前箱数减去一箱数小于0)
                 if (productInventory.getTotalBoxNum() - 1 < 0) {
                     // 判断当前循环是否到达最后
                     if (i == productInventoryList.size() - 1) {
@@ -782,7 +783,6 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
                     }
 
                 } else {
-
                     int totalBoxNum = productInventory.getTotalBoxNum() - item.getOldActualBoxNum();
                     // 判断当前减去
                     if (totalBoxNum <= 0) {
@@ -833,7 +833,7 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
                 //                    }
                 //                }
 
-                if (del == 2) {
+                if (del == 2) { //当库存等于0的时候删除对应的库存明细
                     editProductInventory.setDelFlag("2");
                 }
                 // 成品出库记录

+ 4 - 4
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleOrderServiceImpl.java

@@ -192,17 +192,17 @@ public class SaleOrderServiceImpl implements ISaleOrderService {
         List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
         //查看当前用户角色是否存在销售员角色
         boolean containsSalesman = roles.stream().anyMatch(role -> "salesman".equals(role.getRoleKey()));
-
+        //能看所有订单的大销售员角色
+        boolean containsChiefSalesman = roles.stream().anyMatch(role -> "chiefSalesman".equals(role.getRoleKey()));
         //查看当前用户是否是租户管理员,是返回全部销售单数据
         if (SecurityUtils.isLoginUserTenantAdmin()) {
             saleOrderVOS = saleOrderMapper.saleOrderList(saleOrder);
         } else if (containsSalesman) {
             saleOrder.setCreateById(SecurityUtils.getUserId());
             saleOrderVOS = saleOrderMapper.saleOrderList(saleOrder);
-        }else if (SecurityUtils.getUserType().equals("05")) {
-            saleOrder.setCreateById(SecurityUtils.getUserId());
+        } else if (containsChiefSalesman) {
             saleOrderVOS = saleOrderMapper.saleOrderList(saleOrder);
-        } else {
+        }else {
             saleOrderVOS = saleOrderMapper.saleOrderList(saleOrder);
         }
         return saleOrderVOS;

+ 1 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/AutomaticSchedulingOnSiteController.java

@@ -32,6 +32,7 @@ import com.zkqy.amichi.service.IAutomaticSchedulingOnSiteService;
 @RequestMapping("/automaticSchedulingOnSite/site")
 public class AutomaticSchedulingOnSiteController extends BaseController
 {
+
     @Autowired
     private IAutomaticSchedulingOnSiteService automaticSchedulingOnSiteService;
 

+ 107 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BpInspectionController.java

@@ -0,0 +1,107 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.service.IBpInspectionService;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+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.amichi.domain.BpInspection;
+
+
+/**
+ * 白胚检验信息Controller
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@RestController
+@RequestMapping("/system/inspection")
+public class BpInspectionController extends BaseController
+{
+    @Autowired
+    private IBpInspectionService bpInspectionService;
+
+    /**
+     * 查询白胚检验信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BpInspection bpInspection)
+    {
+        startPage();
+        List<BpInspection> list = bpInspectionService.selectBpInspectionList(bpInspection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出白胚检验信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:export')")
+    @Log(title = "白胚检验信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BpInspection bpInspection)
+    {
+        List<BpInspection> list = bpInspectionService.selectBpInspectionList(bpInspection);
+        ExcelUtil<BpInspection> util = new ExcelUtil<BpInspection>(BpInspection.class);
+        util.exportExcel(response, list, "白胚检验信息数据");
+    }
+
+    /**
+     * 获取白胚检验信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bpInspectionService.selectBpInspectionById(id));
+    }
+
+    /**
+     * 新增白胚检验信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:add')")
+    @Log(title = "白胚检验信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BpInspection bpInspection)
+    {
+        return toAjax(bpInspectionService.insertBpInspection(bpInspection));
+    }
+
+    /**
+     * 修改白胚检验信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:edit')")
+    @Log(title = "白胚检验信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BpInspection bpInspection)
+    {
+        return toAjax(bpInspectionService.updateBpInspection(bpInspection));
+    }
+
+    /**
+     * 删除白胚检验信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:inspection:remove')")
+    @Log(title = "白胚检验信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(bpInspectionService.deleteBpInspectionByIds(ids));
+    }
+}

+ 108 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BpLeaveFactoryController.java

@@ -0,0 +1,108 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+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.amichi.domain.BpLeaveFactory;
+import com.zkqy.amichi.service.IBpLeaveFactoryService;
+
+
+/**
+ * 出厂检验Controller
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@RestController
+@RequestMapping("/bpleavefactory/bpleavefactory")
+public class BpLeaveFactoryController extends BaseController
+{
+    @Autowired
+    private IBpLeaveFactoryService bpLeaveFactoryService;
+
+    /**
+     * 查询出厂检验列表
+     */
+    @PreAuthorize("@ss.hasPermi('bpleavefactory:bpleavefactory:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BpLeaveFactory bpLeaveFactory)
+    {
+        startPage();
+        List<BpLeaveFactory> list = bpLeaveFactoryService.selectBpLeaveFactoryList(bpLeaveFactory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出出厂检验列表
+     */
+    @PreAuthorize("@ss.hasPermi('bpleavefactory:bpleavefactory:export')")
+    @Log(title = "出厂检验", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BpLeaveFactory bpLeaveFactory)
+    {
+        List<BpLeaveFactory> list = bpLeaveFactoryService.selectBpLeaveFactoryList(bpLeaveFactory);
+        ExcelUtil<BpLeaveFactory> util = new ExcelUtil<BpLeaveFactory>(BpLeaveFactory.class);
+        util.exportExcel(response, list, "出厂检验数据");
+    }
+
+    /**
+     * 获取出厂检验详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bpleavefactory:bpleavefactory:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bpLeaveFactoryService.selectBpLeaveFactoryById(id));
+    }
+
+    /**
+     * 新增出厂检验
+     */
+    @PreAuthorize("@ss.hasPermi('bpleavefactory:bpleavefactory:add')")
+    @Log(title = "出厂检验", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BpLeaveFactory bpLeaveFactory)
+    {
+        return toAjax(bpLeaveFactoryService.insertBpLeaveFactory(bpLeaveFactory));
+    }
+
+    /**
+     * 修改出厂检验
+     */
+    @PreAuthorize("@ss.hasPermi('bpleavefactory:bpleavefactory:edit')")
+    @Log(title = "出厂检验", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BpLeaveFactory bpLeaveFactory)
+    {
+        return toAjax(bpLeaveFactoryService.updateBpLeaveFactory(bpLeaveFactory));
+    }
+
+    /**
+     * 删除出厂检验
+     */
+    @PreAuthorize("@ss.hasPermi('bpleavefactory:bpleavefactory:remove')")
+    @Log(title = "出厂检验", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(bpLeaveFactoryService.deleteBpLeaveFactoryByIds(ids));
+    }
+
+}

+ 107 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/JlIncomingInspectionController.java

@@ -0,0 +1,107 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+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.amichi.domain.JlIncomingInspection;
+import com.zkqy.amichi.service.IJlIncomingInspectionService;
+
+
+/**
+ * 进料日志详情Controller
+ * 
+ * @author ruoyi
+ * @date 2025-01-14
+ */
+@RestController
+@RequestMapping("/jl_inspection/inspection")
+public class JlIncomingInspectionController extends BaseController
+{
+    @Autowired
+    private IJlIncomingInspectionService jlIncomingInspectionService;
+
+    /**
+     * 查询进料日志详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('jl_inspection:inspection:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(JlIncomingInspection jlIncomingInspection)
+    {
+        startPage();
+        List<JlIncomingInspection> list = jlIncomingInspectionService.selectJlIncomingInspectionList(jlIncomingInspection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出进料日志详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('jl_inspection:inspection:export')")
+    @Log(title = "进料日志详情", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, JlIncomingInspection jlIncomingInspection)
+    {
+        List<JlIncomingInspection> list = jlIncomingInspectionService.selectJlIncomingInspectionList(jlIncomingInspection);
+        ExcelUtil<JlIncomingInspection> util = new ExcelUtil<JlIncomingInspection>(JlIncomingInspection.class);
+        util.exportExcel(response, list, "进料日志详情数据");
+    }
+
+    /**
+     * 获取进料日志详情详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('jl_inspection:inspection:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(jlIncomingInspectionService.selectJlIncomingInspectionById(id));
+    }
+
+    /**
+     * 新增进料日志详情
+     */
+    @PreAuthorize("@ss.hasPermi('jl_inspection:inspection:add')")
+    @Log(title = "进料日志详情", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody JlIncomingInspection jlIncomingInspection)
+    {
+        return toAjax(jlIncomingInspectionService.insertJlIncomingInspection(jlIncomingInspection));
+    }
+
+    /**
+     * 修改进料日志详情
+     */
+    @PreAuthorize("@ss.hasPermi('jl_inspection:inspection:edit')")
+    @Log(title = "进料日志详情", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody JlIncomingInspection jlIncomingInspection)
+    {
+        return toAjax(jlIncomingInspectionService.updateJlIncomingInspection(jlIncomingInspection));
+    }
+
+    /**
+     * 删除进料日志详情
+     */
+    @PreAuthorize("@ss.hasPermi('jl_inspection:inspection:remove')")
+    @Log(title = "进料日志详情", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(jlIncomingInspectionService.deleteJlIncomingInspectionByIds(ids));
+    }
+}

+ 1 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialBaseInfoController.java

@@ -33,6 +33,7 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/materialbaseinfo/info")
 public class MaterialBaseInfoController extends BaseController
 {
+
     @Autowired
     private IMaterialBaseInfoService materialBaseInfoService;
 

+ 17 - 5
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/MaterialInfoController.java

@@ -68,6 +68,8 @@ public class MaterialInfoController extends BaseController
         return getDataTable(list);
     }
 
+
+
     /**
      * 查询物料信息列表
      */
@@ -115,17 +117,27 @@ public class MaterialInfoController extends BaseController
     /**
      * 导出物料信息列表
      */
-    @PreAuthorize("@ss.hasPermi('system:materialInfo:export')")
+//    @PreAuthorize("@ss.hasPermi('system:materialInfo:export')")
     @Log(title = "物料信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    @ApiOperation(value = "导出物料信息列表")
+    @ApiOperation(value = "物料信息")
     public void export(HttpServletResponse response, MaterialInfo materialInfo)
     {
-        List<MaterialInfo> list = materialInfoService.selectMaterialInfoList(materialInfo);
-        ExcelUtil<MaterialInfo> util = new ExcelUtil<MaterialInfo>(MaterialInfo.class);
-        util.exportExcel(response, list, "物料信息数据");
+        //默认查原材料的条件我写死到了sql里
+        materialInfo.setCatType("1");
+        //如果前端传递了仓库搜索条件那么我就按照你给定的仓库类型去查询原材料
+        if(materialInfo.getCkNumber()!=""&&materialInfo.getCkNumber()!=null){
+            materialInfo.setCatType("");
+        }
+
+        List<MaterialInfo> as= materialInfoService.realTimeComputing(materialInfo);
+
+        ExcelUtil<MaterialInfo> util = new ExcelUtil<>(MaterialInfo.class);
+        util.exportExcel(response, as, "物料信息数据");
     }
 
+
+
     @Log(title = "物料管理", businessType = BusinessType.IMPORT)
     //@PreAuthorize("@ss.hasPermi('system:user:import')")
     @PostMapping("/importData")

+ 31 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/PlanTaskDetailsController.java

@@ -110,6 +110,37 @@ public class PlanTaskDetailsController extends BaseController
         return getDataTable(list);
     }
 
+    @GetMapping("/listInfoRkK")
+    @Anonymous
+    @ApiOperation(value = "查询生产任务单明细列表")
+    public TableDataInfo listInfoRkK(PlanTaskDetailsListAndFlowCardDataVo planTaskDetailsListAndFlowCardDataVo)
+    {
+        startPage();
+        List<PlanTaskDetailsListAndFlowCardDataVo> list = planTaskDetailsService.selectPlanTaskDetailsListAndFlowCardData(planTaskDetailsListAndFlowCardDataVo.getOrderNumberList());
+        list.stream().map(item->{
+            // 要生成二维码的数据
+            String content = item.getSerialNumber();
+            // 定子
+            String DText="D"+content;
+            // 转子
+            String ZText="Z"+content;
+            //定子转子生Base
+            String s1 = MaUtils.generateQRCodeConfig(DText,90,90);
+            String s2 = MaUtils.generateQRCodeConfig(ZText,90,90);
+
+            item.setBase46MaD("data:image/png;base64,"+s1);
+            item.setBase46MaZ("data:image/png;base64,"+s2);
+            //格式化
+            if(StringUtils.isNotNull(item.getXqrq())){
+                String s = DateUtils.formatToYMD(item.getXqrq());
+                item.setXqrq(s);
+            }
+            return item;
+        }).collect(Collectors.toList());
+        //List<PlanTaskDetailsListAndFlowCardDataVo> collect = list.stream().limit(2).collect(Collectors.toList());
+//        Map<String, List<PlanTaskDetailsListAndFlowCardDataVo>> stringListMap = this.convertToListOfLists(list);
+        return getDataTable(list);
+    }
 
     @GetMapping("/flowWeldCardList")
     @Anonymous

+ 277 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/QualityinspectioninformationController.java

@@ -0,0 +1,277 @@
+package com.zkqy.amichi.controller;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.zkqy.amichi.domain.*;
+import com.zkqy.amichi.mapper.BpInspectionMapper;
+import com.zkqy.amichi.mapper.BpLeaveFactoryMapper;
+import com.zkqy.amichi.mapper.JlIncomingInspectionMapper;
+import com.zkqy.amichi.utils.ExcelHeaderDataListener;
+import com.zkqy.amichi.utils.MergeRowListener;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.entity.SysUser;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.common.utils.poi.ExcelUtil;
+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.*;
+
+import com.zkqy.amichi.service.IQualityinspectioninformationService;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * 质检信息Controller
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@RestController
+@RequestMapping("/qualityinspectioninformation/qualityinspectioninformation")
+public class QualityinspectioninformationController extends BaseController
+{
+    @Autowired
+    private IQualityinspectioninformationService qualityinspectioninformationService;
+
+    @Autowired
+    private JlIncomingInspectionMapper jlIncomingInspectionMapper;
+
+    @Autowired
+    private BpInspectionMapper bpInspectionMapper;
+
+    @Autowired
+    private BpLeaveFactoryMapper bpLeaveFactoryMapper;
+
+
+    /**
+     * 查询质检信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('qualityinspectioninformation:qualityinspectioninformation:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(Qualityinspectioninformation qualityinspectioninformation)
+    {
+        startPage();
+        List<Qualityinspectioninformation> list = qualityinspectioninformationService.selectQualityinspectioninformationList(qualityinspectioninformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出质检信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('qualityinspectioninformation:qualityinspectioninformation:export')")
+    @Log(title = "质检信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Qualityinspectioninformation qualityinspectioninformation)
+    {
+        List<Qualityinspectioninformation> list = qualityinspectioninformationService.selectQualityinspectioninformationList(qualityinspectioninformation);
+        ExcelUtil<Qualityinspectioninformation> util = new ExcelUtil<>(Qualityinspectioninformation.class);
+        util.exportExcel(response, list, "质检信息数据");
+    }
+
+    /**
+     * 获取质检信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('qualityinspectioninformation:qualityinspectioninformation:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(qualityinspectioninformationService.selectQualityinspectioninformationById(id));
+    }
+
+    /**
+     * 新增质检信息
+     */
+    @PreAuthorize("@ss.hasPermi('qualityinspectioninformation:qualityinspectioninformation:add')")
+    @Log(title = "质检信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Qualityinspectioninformation qualityinspectioninformation)
+    {
+        return toAjax(qualityinspectioninformationService.insertQualityinspectioninformation(qualityinspectioninformation));
+    }
+
+    /**
+     * 修改质检信息
+     */
+    @PreAuthorize("@ss.hasPermi('qualityinspectioninformation:qualityinspectioninformation:edit')")
+    @Log(title = "质检信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Qualityinspectioninformation qualityinspectioninformation)
+    {
+        return toAjax(qualityinspectioninformationService.updateQualityinspectioninformation(qualityinspectioninformation));
+    }
+
+    /**
+     * 删除质检信息
+     */
+    @PreAuthorize("@ss.hasPermi('qualityinspectioninformation:qualityinspectioninformation:remove')")
+    @Log(title = "质检信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(qualityinspectioninformationService.deleteQualityinspectioninformationByIds(ids));
+    }
+
+    @PreAuthorize("@ss.hasPermi('amichi:onSiteProgramDetails:add')")
+    @Log(title = "场内计划详情crud", businessType = BusinessType.INSERT)
+    @PostMapping("/importExcelData")
+    @ApiOperation(value = "导入Excel数据")
+    public AjaxResult importExcelData(@RequestParam("file") MultipartFile file) {
+        try {
+
+            // 工作表名称列表
+            String[] sheetNames = {"进料", "白胚检验", "出厂检验"};
+
+            for (String sheetName : sheetNames) {
+                // 创建一个自定义监听器来读取第三行数据
+                ExcelHeaderDataListener headerListener = new ExcelHeaderDataListener();
+
+                // 先读取表头信息
+                EasyExcel.read(file.getInputStream())
+                        .sheet(sheetName)
+                        .registerReadListener(headerListener)
+                        .doRead();
+
+                //添加数据
+                Qualityinspectioninformation qualityinspectioninformation = new Qualityinspectioninformation();
+                qualityinspectioninformation.setManufacturingProcess(headerListener.getProcess());
+                qualityinspectioninformation.setReportName(headerListener.getYear()+"/"+headerListener.getMonth()+"/"+sheetName);
+                qualityinspectioninformation.setReportDate(headerListener.getYear()+"/"+headerListener.getMonth());
+                qualityinspectioninformation.setInspector(headerListener.getInspector());//检验员
+                qualityinspectioninformation.setExamine(headerListener.getReviewer());//审核人
+                qualityinspectioninformation.setInspectorDate(headerListener.getInspectDate()); //检验人签署时间
+                qualityinspectioninformation.setInspectorDate(headerListener.getReviewDate()); //审核人审核时间
+                qualityinspectioninformation.setType(sheetName);//类型
+                //判断数据解析是否正确😒
+                if(StringUtils.isNull(headerListener.getProcess())){
+                    return AjaxResult.error("导入失败😊:"+"制程数据格式");
+                }
+                //进switch进行不同字段判断填充😘😘😘
+                switch(headerListener.getProcess()) {
+                    case "来料检验":
+                        qualityinspectioninformation.setJlOneFailedBatch(headerListener.getOne()); //一次不合格批次
+                        qualityinspectioninformation.setJlTotalBatchForInspection(headerListener.getTwo()); //报检总批次
+                        qualityinspectioninformation.setJlQuantityOfRejectsReturns(headerListener.getTwo().equals("null")?"0":headerListener.getTwo()); //废品/退换货数量
+                        qualityinspectioninformation.setJlQualifiedRateOfTheMonth(headerListener.getFour()); //本月合格率批次
+                        System.out.println("1");
+                        break;
+                    case "白胚检验":
+                        qualityinspectioninformation.setBpNumberOfFailures(headerListener.getOne()); //一次不合格数
+                        qualityinspectioninformation.setBpScrapQuantity(headerListener.getTwo().equals("null")?"0":headerListener.getTwo()); //报废数量
+                        qualityinspectioninformation.setBpTotalForTheMonth(headerListener.getThree()); //本月总数
+                        qualityinspectioninformation.setBpPassRateThisMonth(headerListener.getFour()); //本月合格率
+                        System.out.println("2");
+                        break;
+                    case "出厂检验":
+                        qualityinspectioninformation.setCcNumberOfFailures(headerListener.getOne()); //一次不合格数
+                        qualityinspectioninformation.setCcScrapQuantity(headerListener.getTwo().equals("null")?"0":headerListener.getTwo()); //报废数量
+                        qualityinspectioninformation.setCcTotalForTheMonth(headerListener.getThree()); //本月总数
+                        qualityinspectioninformation.setCcPassRateThisMonth(headerListener.getFour()); //本月合格率
+                        System.out.println("3");
+                        break;
+                }
+                //检测存不存在如果存在就先删除
+                Qualityinspectioninformation qualityinspectioninformation1 = new Qualityinspectioninformation();
+                qualityinspectioninformation1.setReportName(headerListener.getYear()+"/"+headerListener.getMonth()+"/"+sheetName);
+                List<Qualityinspectioninformation> qualityinspectioninformations = qualityinspectioninformationService.selectQualityinspectioninformationList(qualityinspectioninformation1);
+                if(qualityinspectioninformations.size()>0){
+                    //删除逻辑
+                    qualityinspectioninformationService.deleteQualityinspectioninformationById(qualityinspectioninformations.get(0).getId());
+                    if(headerListener.getProcess().equals("来料检验")){
+                        //删除子明细
+                        jlIncomingInspectionMapper.deleteJlIncomingInspectionByfId(qualityinspectioninformations.get(0).getId());
+                    }else  if (headerListener.getProcess().equals("白胚检验")){
+                        bpInspectionMapper.deleteBpInspectionByfIds(qualityinspectioninformations.get(0).getId());
+                    }else  if (headerListener.getProcess().equals("出厂检验")){
+                        bpLeaveFactoryMapper.deleteBpLeaveFactoryByfIds(qualityinspectioninformations.get(0).getId().toString());
+                    }
+                }
+                //添加逻辑
+                qualityinspectioninformationService.insertQualityinspectioninformation(qualityinspectioninformation);
+
+                if(sheetName.equals("进料")){
+                    MergeRowListener<JlIncomingInspection> mergeRowListener = new MergeRowListener();
+                    // 再读取实际数据
+                    List<JlIncomingInspection> list = EasyExcel.read(file.getInputStream())
+                            .head(JlIncomingInspection.class)  // 指定实体类
+                            .sheet(sheetName)
+                            .headRowNumber(4)  // 设置第4行为表头
+                            .registerReadListener(mergeRowListener)
+                            .doReadSync();
+                    // 移除最后三个元素
+                    if (list.size() >= 3) {
+                        list = list.subList(0, list.size() - 3);
+                    }
+
+                    list.stream().map(item->{
+                        item.setCreateTime(new Date());
+                        item.setCreateBy(SecurityUtils.getUsername());
+                        item.setFid(qualityinspectioninformation.getId().toString());
+                        return item;
+                    }).collect(Collectors.toList());
+                    //插入数据
+                    jlIncomingInspectionMapper.insertJlIncomingInspectionBatch(list);
+                }
+
+                if(sheetName.equals("白胚检验")){
+                    MergeRowListener<BpInspection> mergeRowListener = new MergeRowListener();
+                    // 再读取实际数据
+                    List<BpInspection> list = EasyExcel.read(file.getInputStream())
+                            .head(BpInspection.class)  // 指定实体类
+                            .sheet(sheetName)
+                            .headRowNumber(4)  // 设置第4行为表头
+                            .registerReadListener(mergeRowListener)
+                            .doReadSync();
+                    // 移除最后三个元素
+                    if (list.size() >= 3) {
+                        list = list.subList(0, list.size() - 3);
+                    }
+                    list.stream().map(item->{
+                        item.setCreateTime(new Date());
+                        item.setCreateBy(SecurityUtils.getUsername());
+                        item.setFid(qualityinspectioninformation.getId().toString());
+                        return item;
+                    }).collect(Collectors.toList());
+                    //插入数据
+                    bpInspectionMapper.insertBpInspectionBatch(list);
+                }
+
+                if(sheetName.equals("出厂检验")){
+                    MergeRowListener<BpLeaveFactory> mergeRowListener = new MergeRowListener();
+                    // 再读取实际数据
+                    List<BpLeaveFactory> list = EasyExcel.read(file.getInputStream())
+                            .head(BpLeaveFactory.class)  // 指定实体类
+                            .sheet(sheetName)
+                            .headRowNumber(4)  // 设置第4行为表头
+                            .registerReadListener(mergeRowListener)
+                            .doReadSync();
+                    // 移除最后三个元素
+                    if (list.size() >= 3) {
+                        list = list.subList(0, list.size() - 3);
+                    }
+                    list.stream().map(item->{
+                        item.setCreateTime(new Date());
+                        item.setCreateBy(SecurityUtils.getUsername());
+                        item.setFid(qualityinspectioninformation.getId().toString());
+                        return item;
+                    }).collect(Collectors.toList());
+                    //插入数据
+                    bpLeaveFactoryMapper.insertBpLeaveFactoryBatch(list);
+                }
+            }
+        } catch (Exception e) {
+            return AjaxResult.error("导入失败:" + e.getMessage());
+        }
+          return AjaxResult.success("导入成功:");
+    }
+}

+ 171 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BpInspection.java

@@ -0,0 +1,171 @@
+package com.zkqy.amichi.domain;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 白胚检验信息对象 bp_inspection
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+public class BpInspection
+{
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private static final long serialVersionUID = 1L;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private Date createTime;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private String fid;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private String createBy;
+
+
+    /** 主键id */
+    @ExcelIgnore
+    private Long id;
+
+    /** 订单号 */
+    @ExcelProperty(value = "订单号")
+    private String orderNumber;
+
+    /** 型号名称 */
+    @ExcelProperty(value = "型号/名称")
+    private String modelName;
+
+    /** 不合格原因 */
+    @ExcelProperty(value = "不合格原因")
+    private String causeOfNonconformity;
+
+    /** 不合格数量 */
+    @ExcelProperty(value = "不合格数")
+    private String disqualificationNumber;
+
+    /** 处理情况 */
+    @ExcelProperty(value = "处理情况")
+    private String handlingSituation;
+
+    /** 工号 */
+    @ExcelProperty(value = "工号")
+    private String jobNumber;
+
+    /** 检验日期 */
+    @ExcelProperty(value = "检验日期")
+    private String dateOfInspection;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setModelName(String modelName) 
+    {
+        this.modelName = modelName;
+    }
+
+    public String getModelName() 
+    {
+        return modelName;
+    }
+    public void setCauseOfNonconformity(String causeOfNonconformity) 
+    {
+        this.causeOfNonconformity = causeOfNonconformity;
+    }
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getFid() {
+        return fid;
+    }
+
+    public void setFid(String fid) {
+        this.fid = fid;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getCauseOfNonconformity() 
+    {
+        return causeOfNonconformity;
+    }
+    public void setDisqualificationNumber(String disqualificationNumber) 
+    {
+        this.disqualificationNumber = disqualificationNumber;
+    }
+
+    public String getDisqualificationNumber() 
+    {
+        return disqualificationNumber;
+    }
+    public void setHandlingSituation(String handlingSituation) 
+    {
+        this.handlingSituation = handlingSituation;
+    }
+
+    public String getHandlingSituation() 
+    {
+        return handlingSituation;
+    }
+    public void setJobNumber(String jobNumber) 
+    {
+        this.jobNumber = jobNumber;
+    }
+
+    public String getJobNumber() 
+    {
+        return jobNumber;
+    }
+    public void setDateOfInspection(String dateOfInspection) 
+    {
+        this.dateOfInspection = dateOfInspection;
+    }
+
+    public String getDateOfInspection() 
+    {
+        return dateOfInspection;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNumber", getOrderNumber())
+            .append("modelName", getModelName())
+            .append("causeOfNonconformity", getCauseOfNonconformity())
+            .append("disqualificationNumber", getDisqualificationNumber())
+            .append("handlingSituation", getHandlingSituation())
+            .append("jobNumber", getJobNumber())
+            .append("dateOfInspection", getDateOfInspection())
+            .append("createTime", getCreateTime())
+            .append("createBy", getCreateBy())
+            .toString();
+    }
+}

+ 173 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BpLeaveFactory.java

@@ -0,0 +1,173 @@
+package com.zkqy.amichi.domain;
+
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+import java.util.Date;
+
+/**
+ * 出厂检验对象 bp_leave_factory
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+public class BpLeaveFactory
+{
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private static final long serialVersionUID = 1L;
+
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private Date createTime;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private String fid;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private String createBy;
+    /** 主键id */
+    @ExcelIgnore
+    private Long id;
+
+    /** 订单号 */
+    @ExcelProperty(value = "订单号")
+    private String orderNumber;
+
+    /** 型号名称 */
+    @ExcelProperty(value = "型号/名称")
+    private String modelName;
+
+    /** 不合格原因 */
+    @ExcelProperty(value = "不合格原因")
+    private String causeOfNonconformity;
+
+    /** 不合格数量 */
+    @ExcelProperty(value = "不合格数")
+    private String disqualificationNumber;
+
+    /** 处理情况 */
+    @ExcelProperty(value = "处理情况")
+    private String handlingSituation;
+
+    /** 工号 */
+    @ExcelProperty(value = "工号")
+    private String jobNumber;
+
+    /** 检验日期 */
+    @ExcelProperty(value = "检验日期")
+    private String dateOfInspection;
+
+
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getFid() {
+        return fid;
+    }
+
+    public void setFid(String fid) {
+        this.fid = fid;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setModelName(String modelName) 
+    {
+        this.modelName = modelName;
+    }
+
+    public String getModelName() 
+    {
+        return modelName;
+    }
+    public void setCauseOfNonconformity(String causeOfNonconformity) 
+    {
+        this.causeOfNonconformity = causeOfNonconformity;
+    }
+
+    public String getCauseOfNonconformity() 
+    {
+        return causeOfNonconformity;
+    }
+    public void setDisqualificationNumber(String disqualificationNumber) 
+    {
+        this.disqualificationNumber = disqualificationNumber;
+    }
+
+    public String getDisqualificationNumber() 
+    {
+        return disqualificationNumber;
+    }
+    public void setHandlingSituation(String handlingSituation) 
+    {
+        this.handlingSituation = handlingSituation;
+    }
+
+    public String getHandlingSituation() 
+    {
+        return handlingSituation;
+    }
+    public void setJobNumber(String jobNumber) 
+    {
+        this.jobNumber = jobNumber;
+    }
+
+    public String getJobNumber() 
+    {
+        return jobNumber;
+    }
+    public void setDateOfInspection(String dateOfInspection) 
+    {
+        this.dateOfInspection = dateOfInspection;
+    }
+
+    public String getDateOfInspection() 
+    {
+        return dateOfInspection;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNumber", getOrderNumber())
+            .append("modelName", getModelName())
+            .append("causeOfNonconformity", getCauseOfNonconformity())
+            .append("disqualificationNumber", getDisqualificationNumber())
+            .append("handlingSituation", getHandlingSituation())
+            .append("jobNumber", getJobNumber())
+            .append("dateOfInspection", getDateOfInspection())
+            .toString();
+    }
+}

+ 176 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/JlIncomingInspection.java

@@ -0,0 +1,176 @@
+package com.zkqy.amichi.domain;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+
+/**
+ * 进料日志详情对象 jl_incoming_inspection
+ * 
+ * @author ruoyi
+ * @date 2025-01-14
+ */
+public class JlIncomingInspection
+{
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private static final long serialVersionUID = 1L;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private Date createTime;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private String fid;
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private String createBy;
+
+
+    public String getFid() {
+        return fid;
+    }
+
+    public void setFid(String fid) {
+        this.fid = fid;
+    }
+
+
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    /** 主键 */
+    @ExcelIgnore  // 明确告诉 EasyExcel 忽略这个字段
+    private Long id;
+
+    /** 订单号/  数量 */
+    @ExcelProperty("订单号/  数量")
+    private String orderNumber;
+
+    /** 型号/名称 */
+    @ExcelProperty("型号/名称")
+    private String modelName;
+
+    /** 数量 */
+    @ExcelProperty("数量")
+    private String quantity;
+
+    /** 不合格原因 */
+    @ExcelProperty("不合格原因")
+    private String causeOfNonconformity;
+
+    /** 不合格数 */
+    @ExcelProperty("不合格数")
+    private String disqualificationNumber;
+
+    /** 处理情况 */
+    @ExcelProperty("处理情况")
+    private String handlingSituation;
+
+    /** 检验日期 */
+    @ExcelProperty("检验日期")
+    private String dateOfInspection;
+
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrderNumber(String orderNumber) 
+    {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getOrderNumber() 
+    {
+        return orderNumber;
+    }
+    public void setModelName(String modelName) 
+    {
+        this.modelName = modelName;
+    }
+
+    public String getModelName() 
+    {
+        return modelName;
+    }
+    public void setQuantity(String quantity) 
+    {
+        this.quantity = quantity;
+    }
+
+    public String getQuantity() 
+    {
+        return quantity;
+    }
+    public void setCauseOfNonconformity(String causeOfNonconformity) 
+    {
+        this.causeOfNonconformity = causeOfNonconformity;
+    }
+
+    public String getCauseOfNonconformity() 
+    {
+        return causeOfNonconformity;
+    }
+    public void setDisqualificationNumber(String disqualificationNumber) 
+    {
+        this.disqualificationNumber = disqualificationNumber;
+    }
+
+    public String getDisqualificationNumber() 
+    {
+        return disqualificationNumber;
+    }
+    public void setHandlingSituation(String handlingSituation) 
+    {
+        this.handlingSituation = handlingSituation;
+    }
+
+    public String getHandlingSituation() 
+    {
+        return handlingSituation;
+    }
+    public void setDateOfInspection(String dateOfInspection) 
+    {
+        this.dateOfInspection = dateOfInspection;
+    }
+
+    public String getDateOfInspection() 
+    {
+        return dateOfInspection;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("orderNumber", getOrderNumber())
+            .append("modelName", getModelName())
+            .append("quantity", getQuantity())
+            .append("causeOfNonconformity", getCauseOfNonconformity())
+            .append("disqualificationNumber", getDisqualificationNumber())
+            .append("handlingSituation", getHandlingSituation())
+            .append("dateOfInspection", getDateOfInspection())
+            .toString();
+    }
+}

+ 33 - 18
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialInfo.java

@@ -5,6 +5,8 @@ import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.util.List;
+
 
 /**
  * 物料及时库存对象 materialinfo
@@ -19,6 +21,11 @@ public class MaterialInfo extends BaseEntity
     /** 主键 */
     private Long id;
 
+
+    private List<String> ids;
+
+
+
     /** 物料编码 */
     @Excel(name = "物料编码")
     private String materialCode;
@@ -36,11 +43,11 @@ public class MaterialInfo extends BaseEntity
     private String model;
 
     /** 图号 */
-    @Excel(name = "图号")
+//    @Excel(name = "图号")
     private String mapNumber;
 
     /** 描述 */
-    @Excel(name = "描述")
+//    @Excel(name = "描述")
     private String description;
 
     /** 仓库仓库编码 */
@@ -52,7 +59,7 @@ public class MaterialInfo extends BaseEntity
     private String ckName;
 
     /** 批号 */
-    @Excel(name = "批号")
+//    @Excel(name = "批号")
     private String lotNumber;
 
     /** 库存主单位 */
@@ -60,52 +67,56 @@ public class MaterialInfo extends BaseEntity
     private String unit;
 
     /** 库存量(主单位) */
-    @Excel(name = "库存量", readConverterExp = "主=单位")
-    private Double stockQuantity;
+    @Excel(name = "库存量")
+    private double stockQuantity;
 
     /** 可用量(主单位) */
-    @Excel(name = "可用量", readConverterExp = "主=单位")
+//    @Excel(name = "可用量", readConverterExp = "主=单位")
     private String availableAmount;
 
     /** 库存状态 */
-    @Excel(name = "库存状态")
+//    @Excel(name = "库存状态")
     private String stockStatus;
 
     /** 货主类型 */
-    @Excel(name = "货主类型")
+//    @Excel(name = "货主类型")
     private String ownerType;
 
     /** 货主编码 */
-    @Excel(name = "货主编码")
+//    @Excel(name = "货主编码")
     private String ownerNumber;
 
     /** 货主名称 */
-    @Excel(name = "货主名称")
+//    @Excel(name = "货主名称")
     private String ownerName;
 
     /** 保管者类型 */
-    @Excel(name = "保管者类型")
+//    @Excel(name = "保管者类型")
     private String custodianType;
 
     /** 保管者编码 */
-    @Excel(name = "保管者编码")
+//    @Excel(name = "保管者编码")
     private String custodianCode;
 
     /** 保管者名称 */
-    @Excel(name = "保管者名称")
+//    @Excel(name = "保管者名称")
     private String custodianName;
 
     /** 创建者id  */
-    @Excel(name = "创建者id ")
+//    @Excel(name = "创建者id ")
     private Long createById;
 
     /** 更新者id */
-    @Excel(name = "更新者id")
+//    @Excel(name = "更新者id")
     private Long updateById;
 
     /** 删除标志(0代表存在 2代表删除) */
     private String delFlag;
 
+    /** 1、原材料 2、成品 */
+//    @Excel(name="catType")
+    private  String  catType;
+
 
     public String getCatType() {
         return catType;
@@ -115,11 +126,15 @@ public class MaterialInfo extends BaseEntity
         this.catType = catType;
     }
 
-    /** 1、原材料 2、成品 */
-    @Excel(name="catType")
-    private  String  catType;
 
 
+    public List<String> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<String> ids) {
+        this.ids = ids;
+    }
     public void setId(Long id)
     {
         this.id = id;

+ 11 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialRetentionLog.java

@@ -27,6 +27,17 @@ public class MaterialRetentionLog extends BaseEntity
     /** 主键 */
     private Long id;
 
+    /** 主键 */
+    private List<String> ids;
+
+    public List<String> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<String> ids) {
+        this.ids = ids;
+    }
+
     private  String  process;
 
 

+ 319 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Qualityinspectioninformation.java

@@ -0,0 +1,319 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 质检信息对象 qualityinspectioninformation
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+public class Qualityinspectioninformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 制程 */
+    @Excel(name = "制程")
+    private String manufacturingProcess;
+
+    /** 报表名称 */
+    @Excel(name = "报表名称")
+    private String reportName;
+
+    /** 检验日期 */
+    @Excel(name = "检验日期")
+    private String reportDate;
+
+    /** 检验员 */
+    @Excel(name = "检验员")
+    private String inspector;
+
+    /** 审核人 */
+    @Excel(name = "审核人")
+    private String examine;
+
+    /** 审核人签字日期 */
+    @Excel(name = "审核人签字日期")
+    private String examineDate;
+
+    /** 检验员签字日期 */
+    @Excel(name = "检验员签字日期")
+    private String inspectorDate;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** (进料)一次不合格批次 */
+    @Excel(name = "(进料)一次不合格批次")
+    private String jlOneFailedBatch;
+
+    /** (进料)报检总批次 */
+    @Excel(name = "(进料)报检总批次")
+    private String jlTotalBatchForInspection;
+
+    /** (进料)废品/退换货数量 */
+    @Excel(name = "(进料)废品/退换货数量")
+    private String jlQuantityOfRejectsReturns;
+
+    /** (进料)本月合格率批次 */
+    @Excel(name = "(进料)本月合格率批次")
+    private String jlQualifiedRateOfTheMonth;
+
+    /** (白胚)一次不合格数 */
+    @Excel(name = "(白胚)一次不合格数")
+    private String bpNumberOfFailures;
+
+    /** (白胚)报废数量 */
+    @Excel(name = "(白胚)报废数量")
+    private String bpScrapQuantity;
+
+    /** (白胚)本月总数 */
+    @Excel(name = "(白胚)本月总数")
+    private String bpTotalForTheMonth;
+
+    /** (白胚)本月合格率 */
+    @Excel(name = "(白胚)本月合格率")
+    private String bpPassRateThisMonth;
+
+    /** (出厂)一次不合格数 */
+    @Excel(name = "(出厂)一次不合格数")
+    private String ccNumberOfFailures;
+
+    /** (出厂)报废数量 */
+    @Excel(name = "(出厂)报废数量")
+    private String ccScrapQuantity;
+
+    /** (出厂)本月总数 */
+    @Excel(name = "(出厂)本月总数")
+    private String ccTotalForTheMonth;
+
+    /** (出厂)本月合格率 */
+    @Excel(name = "(出厂)本月合格率")
+    private String ccPassRateThisMonth;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setManufacturingProcess(String manufacturingProcess) 
+    {
+        this.manufacturingProcess = manufacturingProcess;
+    }
+
+    public String getManufacturingProcess() 
+    {
+        return manufacturingProcess;
+    }
+    public void setReportName(String reportName) 
+    {
+        this.reportName = reportName;
+    }
+
+    public String getReportName() 
+    {
+        return reportName;
+    }
+    public void setReportDate(String reportDate) 
+    {
+        this.reportDate = reportDate;
+    }
+
+    public String getReportDate() 
+    {
+        return reportDate;
+    }
+    public void setInspector(String inspector) 
+    {
+        this.inspector = inspector;
+    }
+
+    public String getInspector() 
+    {
+        return inspector;
+    }
+    public void setExamine(String examine) 
+    {
+        this.examine = examine;
+    }
+
+    public String getExamine() 
+    {
+        return examine;
+    }
+    public void setExamineDate(String examineDate) 
+    {
+        this.examineDate = examineDate;
+    }
+
+    public String getExamineDate() 
+    {
+        return examineDate;
+    }
+    public void setInspectorDate(String inspectorDate) 
+    {
+        this.inspectorDate = inspectorDate;
+    }
+
+    public String getInspectorDate() 
+    {
+        return inspectorDate;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setJlOneFailedBatch(String jlOneFailedBatch) 
+    {
+        this.jlOneFailedBatch = jlOneFailedBatch;
+    }
+
+    public String getJlOneFailedBatch() 
+    {
+        return jlOneFailedBatch;
+    }
+    public void setJlTotalBatchForInspection(String jlTotalBatchForInspection) 
+    {
+        this.jlTotalBatchForInspection = jlTotalBatchForInspection;
+    }
+
+    public String getJlTotalBatchForInspection() 
+    {
+        return jlTotalBatchForInspection;
+    }
+    public void setJlQuantityOfRejectsReturns(String jlQuantityOfRejectsReturns) 
+    {
+        this.jlQuantityOfRejectsReturns = jlQuantityOfRejectsReturns;
+    }
+
+    public String getJlQuantityOfRejectsReturns() 
+    {
+        return jlQuantityOfRejectsReturns;
+    }
+    public void setJlQualifiedRateOfTheMonth(String jlQualifiedRateOfTheMonth) 
+    {
+        this.jlQualifiedRateOfTheMonth = jlQualifiedRateOfTheMonth;
+    }
+
+    public String getJlQualifiedRateOfTheMonth() 
+    {
+        return jlQualifiedRateOfTheMonth;
+    }
+    public void setBpNumberOfFailures(String bpNumberOfFailures) 
+    {
+        this.bpNumberOfFailures = bpNumberOfFailures;
+    }
+
+    public String getBpNumberOfFailures() 
+    {
+        return bpNumberOfFailures;
+    }
+    public void setBpScrapQuantity(String bpScrapQuantity) 
+    {
+        this.bpScrapQuantity = bpScrapQuantity;
+    }
+
+    public String getBpScrapQuantity() 
+    {
+        return bpScrapQuantity;
+    }
+    public void setBpTotalForTheMonth(String bpTotalForTheMonth) 
+    {
+        this.bpTotalForTheMonth = bpTotalForTheMonth;
+    }
+
+    public String getBpTotalForTheMonth() 
+    {
+        return bpTotalForTheMonth;
+    }
+    public void setBpPassRateThisMonth(String bpPassRateThisMonth) 
+    {
+        this.bpPassRateThisMonth = bpPassRateThisMonth;
+    }
+
+    public String getBpPassRateThisMonth() 
+    {
+        return bpPassRateThisMonth;
+    }
+    public void setCcNumberOfFailures(String ccNumberOfFailures) 
+    {
+        this.ccNumberOfFailures = ccNumberOfFailures;
+    }
+
+    public String getCcNumberOfFailures() 
+    {
+        return ccNumberOfFailures;
+    }
+    public void setCcScrapQuantity(String ccScrapQuantity) 
+    {
+        this.ccScrapQuantity = ccScrapQuantity;
+    }
+
+    public String getCcScrapQuantity() 
+    {
+        return ccScrapQuantity;
+    }
+    public void setCcTotalForTheMonth(String ccTotalForTheMonth) 
+    {
+        this.ccTotalForTheMonth = ccTotalForTheMonth;
+    }
+
+    public String getCcTotalForTheMonth() 
+    {
+        return ccTotalForTheMonth;
+    }
+    public void setCcPassRateThisMonth(String ccPassRateThisMonth) 
+    {
+        this.ccPassRateThisMonth = ccPassRateThisMonth;
+    }
+
+    public String getCcPassRateThisMonth() 
+    {
+        return ccPassRateThisMonth;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("manufacturingProcess", getManufacturingProcess())
+            .append("reportName", getReportName())
+            .append("reportDate", getReportDate())
+            .append("inspector", getInspector())
+            .append("examine", getExamine())
+            .append("examineDate", getExamineDate())
+            .append("inspectorDate", getInspectorDate())
+            .append("createTime", getCreateTime())
+            .append("createBy", getCreateBy())
+            .append("type", getType())
+            .append("jlOneFailedBatch", getJlOneFailedBatch())
+            .append("jlTotalBatchForInspection", getJlTotalBatchForInspection())
+            .append("jlQuantityOfRejectsReturns", getJlQuantityOfRejectsReturns())
+            .append("jlQualifiedRateOfTheMonth", getJlQualifiedRateOfTheMonth())
+            .append("bpNumberOfFailures", getBpNumberOfFailures())
+            .append("bpScrapQuantity", getBpScrapQuantity())
+            .append("bpTotalForTheMonth", getBpTotalForTheMonth())
+            .append("bpPassRateThisMonth", getBpPassRateThisMonth())
+            .append("ccNumberOfFailures", getCcNumberOfFailures())
+            .append("ccScrapQuantity", getCcScrapQuantity())
+            .append("ccTotalForTheMonth", getCcTotalForTheMonth())
+            .append("ccPassRateThisMonth", getCcPassRateThisMonth())
+            .toString();
+    }
+}

+ 78 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BpInspectionMapper.java

@@ -0,0 +1,78 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BpInspection;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 白胚检验信息Mapper接口
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@Mapper
+public interface BpInspectionMapper 
+{
+    /**
+     * 查询白胚检验信息
+     * 
+     * @param id 白胚检验信息主键
+     * @return 白胚检验信息
+     */
+    public BpInspection selectBpInspectionById(Long id);
+
+    /**
+     * 查询白胚检验信息列表
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 白胚检验信息集合
+     */
+    public List<BpInspection> selectBpInspectionList(BpInspection bpInspection);
+
+    /**
+     * 新增白胚检验信息
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 结果
+     */
+    public int insertBpInspection(BpInspection bpInspection);
+
+    /**
+     * 修改白胚检验信息
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 结果
+     */
+    public int updateBpInspection(BpInspection bpInspection);
+
+    /**
+     * 删除白胚检验信息
+     * 
+     * @param id 白胚检验信息主键
+     * @return 结果
+     */
+    public int deleteBpInspectionById(Long id);
+
+    /**
+     * 批量删除白胚检验信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBpInspectionByIds(Long[] ids);
+
+    /**
+     * 批量删除白胚检验信息
+     *
+     * @param id 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBpInspectionByfIds(Long id);
+
+    /**
+     * 批量插入
+     * @param list
+     * @return
+     */
+    int insertBpInspectionBatch(List<BpInspection> list);
+}

+ 79 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BpLeaveFactoryMapper.java

@@ -0,0 +1,79 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BpLeaveFactory;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 出厂检验Mapper接口
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@Mapper
+public interface BpLeaveFactoryMapper 
+{
+    /**
+     * 查询出厂检验
+     * 
+     * @param id 出厂检验主键
+     * @return 出厂检验
+     */
+    public BpLeaveFactory selectBpLeaveFactoryById(Long id);
+
+    /**
+     * 查询出厂检验列表
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 出厂检验集合
+     */
+    public List<BpLeaveFactory> selectBpLeaveFactoryList(BpLeaveFactory bpLeaveFactory);
+
+    /**
+     * 新增出厂检验
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 结果
+     */
+    public int insertBpLeaveFactory(BpLeaveFactory bpLeaveFactory);
+
+    /**
+     * 批量新增
+     * @param bpLeaveFactory
+     * @return
+     */
+    public int insertBpLeaveFactoryBatch(List<BpLeaveFactory> bpLeaveFactory);
+
+    /**
+     * 修改出厂检验
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 结果
+     */
+    public int updateBpLeaveFactory(BpLeaveFactory bpLeaveFactory);
+
+    /**
+     * 删除出厂检验
+     * 
+     * @param id 出厂检验主键
+     * @return 结果
+     */
+    public int deleteBpLeaveFactoryById(Long id);
+
+    /**
+     * 批量删除出厂检验
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBpLeaveFactoryByIds(Long[] ids);
+
+
+    /**
+     * 批量删除
+     * @param id
+     * @return
+     */
+    public int deleteBpLeaveFactoryByfIds(String id);
+
+}

+ 79 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/JlIncomingInspectionMapper.java

@@ -0,0 +1,79 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.JlIncomingInspection;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 进料日志详情Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-14
+ */
+@Mapper
+public interface JlIncomingInspectionMapper 
+{
+    /**
+     * 查询进料日志详情
+     * 
+     * @param id 进料日志详情主键
+     * @return 进料日志详情
+     */
+    public JlIncomingInspection selectJlIncomingInspectionById(Long id);
+
+    /**
+     * 查询进料日志详情列表
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 进料日志详情集合
+     */
+    public List<JlIncomingInspection> selectJlIncomingInspectionList(JlIncomingInspection jlIncomingInspection);
+
+    /**
+     * 新增进料日志详情
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    public int insertJlIncomingInspection(JlIncomingInspection jlIncomingInspection);
+
+    /**
+     * 新增进料日志详情
+     *
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    public int insertJlIncomingInspectionBatch(List<JlIncomingInspection> jlIncomingInspection);
+
+
+    /**
+     * 修改进料日志详情
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    public int updateJlIncomingInspection(JlIncomingInspection jlIncomingInspection);
+
+    /**
+     * 删除进料日志详情
+     * 
+     * @param id 进料日志详情主键
+     * @return 结果
+     */
+    public int deleteJlIncomingInspectionById(Long id);
+
+    /**
+     * 批量删除进料日志详情
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteJlIncomingInspectionByIds(Long[] ids);
+
+    /**
+     * 根据fid删除
+     * @param id
+     * @return
+     */
+    int deleteJlIncomingInspectionByfId(Long id);
+}

+ 63 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/QualityinspectioninformationMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Qualityinspectioninformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 质检信息Mapper接口
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@Mapper
+public interface QualityinspectioninformationMapper 
+{
+    /**
+     * 查询质检信息
+     * 
+     * @param id 质检信息主键
+     * @return 质检信息
+     */
+    public Qualityinspectioninformation selectQualityinspectioninformationById(Long id);
+
+    /**
+     * 查询质检信息列表
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 质检信息集合
+     */
+    public List<Qualityinspectioninformation> selectQualityinspectioninformationList(Qualityinspectioninformation qualityinspectioninformation);
+
+    /**
+     * 新增质检信息
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 结果
+     */
+    public int insertQualityinspectioninformation(Qualityinspectioninformation qualityinspectioninformation);
+
+    /**
+     * 修改质检信息
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 结果
+     */
+    public int updateQualityinspectioninformation(Qualityinspectioninformation qualityinspectioninformation);
+
+    /**
+     * 删除质检信息
+     * 
+     * @param id 质检信息主键
+     * @return 结果
+     */
+    public int deleteQualityinspectioninformationById(Long id);
+
+    /**
+     * 批量删除质检信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteQualityinspectioninformationByIds(Long[] ids);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBpInspectionService.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BpInspection;
+
+/**
+ * 白胚检验信息Service接口
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+public interface IBpInspectionService 
+{
+    /**
+     * 查询白胚检验信息
+     * 
+     * @param id 白胚检验信息主键
+     * @return 白胚检验信息
+     */
+    public BpInspection selectBpInspectionById(Long id);
+
+    /**
+     * 查询白胚检验信息列表
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 白胚检验信息集合
+     */
+    public List<BpInspection> selectBpInspectionList(BpInspection bpInspection);
+
+    /**
+     * 新增白胚检验信息
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 结果
+     */
+    public int insertBpInspection(BpInspection bpInspection);
+
+    /**
+     * 修改白胚检验信息
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 结果
+     */
+    public int updateBpInspection(BpInspection bpInspection);
+
+    /**
+     * 批量删除白胚检验信息
+     * 
+     * @param ids 需要删除的白胚检验信息主键集合
+     * @return 结果
+     */
+    public int deleteBpInspectionByIds(Long[] ids);
+
+    /**
+     * 删除白胚检验信息信息
+     * 
+     * @param id 白胚检验信息主键
+     * @return 结果
+     */
+    public int deleteBpInspectionById(Long id);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBpLeaveFactoryService.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BpLeaveFactory;
+
+/**
+ * 出厂检验Service接口
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+public interface IBpLeaveFactoryService 
+{
+    /**
+     * 查询出厂检验
+     * 
+     * @param id 出厂检验主键
+     * @return 出厂检验
+     */
+    public BpLeaveFactory selectBpLeaveFactoryById(Long id);
+
+    /**
+     * 查询出厂检验列表
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 出厂检验集合
+     */
+    public List<BpLeaveFactory> selectBpLeaveFactoryList(BpLeaveFactory bpLeaveFactory);
+
+    /**
+     * 新增出厂检验
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 结果
+     */
+    public int insertBpLeaveFactory(BpLeaveFactory bpLeaveFactory);
+
+    /**
+     * 修改出厂检验
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 结果
+     */
+    public int updateBpLeaveFactory(BpLeaveFactory bpLeaveFactory);
+
+    /**
+     * 批量删除出厂检验
+     * 
+     * @param ids 需要删除的出厂检验主键集合
+     * @return 结果
+     */
+    public int deleteBpLeaveFactoryByIds(Long[] ids);
+
+    /**
+     * 删除出厂检验信息
+     * 
+     * @param id 出厂检验主键
+     * @return 结果
+     */
+    public int deleteBpLeaveFactoryById(Long id);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IJlIncomingInspectionService.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.JlIncomingInspection;
+
+/**
+ * 进料日志详情Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-01-14
+ */
+public interface IJlIncomingInspectionService 
+{
+    /**
+     * 查询进料日志详情
+     * 
+     * @param id 进料日志详情主键
+     * @return 进料日志详情
+     */
+    public JlIncomingInspection selectJlIncomingInspectionById(Long id);
+
+    /**
+     * 查询进料日志详情列表
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 进料日志详情集合
+     */
+    public List<JlIncomingInspection> selectJlIncomingInspectionList(JlIncomingInspection jlIncomingInspection);
+
+    /**
+     * 新增进料日志详情
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    public int insertJlIncomingInspection(JlIncomingInspection jlIncomingInspection);
+
+    /**
+     * 修改进料日志详情
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    public int updateJlIncomingInspection(JlIncomingInspection jlIncomingInspection);
+
+    /**
+     * 批量删除进料日志详情
+     * 
+     * @param ids 需要删除的进料日志详情主键集合
+     * @return 结果
+     */
+    public int deleteJlIncomingInspectionByIds(Long[] ids);
+
+    /**
+     * 删除进料日志详情信息
+     * 
+     * @param id 进料日志详情主键
+     * @return 结果
+     */
+    public int deleteJlIncomingInspectionById(Long id);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IQualityinspectioninformationService.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Qualityinspectioninformation;
+
+/**
+ * 质检信息Service接口
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+public interface IQualityinspectioninformationService 
+{
+    /**
+     * 查询质检信息
+     * 
+     * @param id 质检信息主键
+     * @return 质检信息
+     */
+    public Qualityinspectioninformation selectQualityinspectioninformationById(Long id);
+
+    /**
+     * 查询质检信息列表
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 质检信息集合
+     */
+    public List<Qualityinspectioninformation> selectQualityinspectioninformationList(Qualityinspectioninformation qualityinspectioninformation);
+
+    /**
+     * 新增质检信息
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 结果
+     */
+    public int insertQualityinspectioninformation(Qualityinspectioninformation qualityinspectioninformation);
+
+    /**
+     * 修改质检信息
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 结果
+     */
+    public int updateQualityinspectioninformation(Qualityinspectioninformation qualityinspectioninformation);
+
+    /**
+     * 批量删除质检信息
+     * 
+     * @param ids 需要删除的质检信息主键集合
+     * @return 结果
+     */
+    public int deleteQualityinspectioninformationByIds(Long[] ids);
+
+    /**
+     * 删除质检信息信息
+     * 
+     * @param id 质检信息主键
+     * @return 结果
+     */
+    public int deleteQualityinspectioninformationById(Long id);
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BpInspectionServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zkqy.amichi.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.amichi.mapper.BpInspectionMapper;
+import com.zkqy.amichi.domain.BpInspection;
+import com.zkqy.amichi.service.IBpInspectionService;
+
+/**
+ * 白胚检验信息Service业务层处理
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@Service
+public class BpInspectionServiceImpl implements IBpInspectionService 
+{
+    @Autowired
+    private BpInspectionMapper bpInspectionMapper;
+
+    /**
+     * 查询白胚检验信息
+     * 
+     * @param id 白胚检验信息主键
+     * @return 白胚检验信息
+     */
+    @Override
+    public BpInspection selectBpInspectionById(Long id)
+    {
+        return bpInspectionMapper.selectBpInspectionById(id);
+    }
+
+    /**
+     * 查询白胚检验信息列表
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 白胚检验信息
+     */
+    @Override
+    public List<BpInspection> selectBpInspectionList(BpInspection bpInspection)
+    {
+        return bpInspectionMapper.selectBpInspectionList(bpInspection);
+    }
+
+    /**
+     * 新增白胚检验信息
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 结果
+     */
+    @Override
+    public int insertBpInspection(BpInspection bpInspection)
+    {
+        bpInspection.setCreateTime(DateUtils.getNowDate());
+        return bpInspectionMapper.insertBpInspection(bpInspection);
+    }
+
+    /**
+     * 修改白胚检验信息
+     * 
+     * @param bpInspection 白胚检验信息
+     * @return 结果
+     */
+    @Override
+    public int updateBpInspection(BpInspection bpInspection)
+    {
+        return bpInspectionMapper.updateBpInspection(bpInspection);
+    }
+
+    /**
+     * 批量删除白胚检验信息
+     * 
+     * @param ids 需要删除的白胚检验信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBpInspectionByIds(Long[] ids)
+    {
+        return bpInspectionMapper.deleteBpInspectionByIds(ids);
+    }
+
+    /**
+     * 删除白胚检验信息信息
+     * 
+     * @param id 白胚检验信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBpInspectionById(Long id)
+    {
+        return bpInspectionMapper.deleteBpInspectionById(id);
+    }
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BpLeaveFactoryServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zkqy.amichi.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.amichi.mapper.BpLeaveFactoryMapper;
+import com.zkqy.amichi.domain.BpLeaveFactory;
+import com.zkqy.amichi.service.IBpLeaveFactoryService;
+
+/**
+ * 出厂检验Service业务层处理
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@Service
+public class BpLeaveFactoryServiceImpl implements IBpLeaveFactoryService 
+{
+    @Autowired
+    private BpLeaveFactoryMapper bpLeaveFactoryMapper;
+
+    /**
+     * 查询出厂检验
+     * 
+     * @param id 出厂检验主键
+     * @return 出厂检验
+     */
+    @Override
+    public BpLeaveFactory selectBpLeaveFactoryById(Long id)
+    {
+        return bpLeaveFactoryMapper.selectBpLeaveFactoryById(id);
+    }
+
+    /**
+     * 查询出厂检验列表
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 出厂检验
+     */
+    @Override
+    public List<BpLeaveFactory> selectBpLeaveFactoryList(BpLeaveFactory bpLeaveFactory)
+    {
+        return bpLeaveFactoryMapper.selectBpLeaveFactoryList(bpLeaveFactory);
+    }
+
+    /**
+     * 新增出厂检验
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 结果
+     */
+    @Override
+    public int insertBpLeaveFactory(BpLeaveFactory bpLeaveFactory)
+    {
+        bpLeaveFactory.setCreateTime(DateUtils.getNowDate());
+        return bpLeaveFactoryMapper.insertBpLeaveFactory(bpLeaveFactory);
+    }
+
+    /**
+     * 修改出厂检验
+     * 
+     * @param bpLeaveFactory 出厂检验
+     * @return 结果
+     */
+    @Override
+    public int updateBpLeaveFactory(BpLeaveFactory bpLeaveFactory)
+    {
+        return bpLeaveFactoryMapper.updateBpLeaveFactory(bpLeaveFactory);
+    }
+
+    /**
+     * 批量删除出厂检验
+     * 
+     * @param ids 需要删除的出厂检验主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBpLeaveFactoryByIds(Long[] ids)
+    {
+        return bpLeaveFactoryMapper.deleteBpLeaveFactoryByIds(ids);
+    }
+
+    /**
+     * 删除出厂检验信息
+     * 
+     * @param id 出厂检验主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBpLeaveFactoryById(Long id)
+    {
+        return bpLeaveFactoryMapper.deleteBpLeaveFactoryById(id);
+    }
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/JlIncomingInspectionServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zkqy.amichi.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.amichi.mapper.JlIncomingInspectionMapper;
+import com.zkqy.amichi.domain.JlIncomingInspection;
+import com.zkqy.amichi.service.IJlIncomingInspectionService;
+
+/**
+ * 进料日志详情Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-01-14
+ */
+@Service
+public class JlIncomingInspectionServiceImpl implements IJlIncomingInspectionService 
+{
+    @Autowired
+    private JlIncomingInspectionMapper jlIncomingInspectionMapper;
+
+    /**
+     * 查询进料日志详情
+     * 
+     * @param id 进料日志详情主键
+     * @return 进料日志详情
+     */
+    @Override
+    public JlIncomingInspection selectJlIncomingInspectionById(Long id)
+    {
+        return jlIncomingInspectionMapper.selectJlIncomingInspectionById(id);
+    }
+
+    /**
+     * 查询进料日志详情列表
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 进料日志详情
+     */
+    @Override
+    public List<JlIncomingInspection> selectJlIncomingInspectionList(JlIncomingInspection jlIncomingInspection)
+    {
+        return jlIncomingInspectionMapper.selectJlIncomingInspectionList(jlIncomingInspection);
+    }
+
+    /**
+     * 新增进料日志详情
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    @Override
+    public int insertJlIncomingInspection(JlIncomingInspection jlIncomingInspection)
+    {
+        jlIncomingInspection.setCreateTime(DateUtils.getNowDate());
+        return jlIncomingInspectionMapper.insertJlIncomingInspection(jlIncomingInspection);
+    }
+
+    /**
+     * 修改进料日志详情
+     * 
+     * @param jlIncomingInspection 进料日志详情
+     * @return 结果
+     */
+    @Override
+    public int updateJlIncomingInspection(JlIncomingInspection jlIncomingInspection)
+    {
+        return jlIncomingInspectionMapper.updateJlIncomingInspection(jlIncomingInspection);
+    }
+
+    /**
+     * 批量删除进料日志详情
+     * 
+     * @param ids 需要删除的进料日志详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteJlIncomingInspectionByIds(Long[] ids)
+    {
+        return jlIncomingInspectionMapper.deleteJlIncomingInspectionByIds(ids);
+    }
+
+    /**
+     * 删除进料日志详情信息
+     * 
+     * @param id 进料日志详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteJlIncomingInspectionById(Long id)
+    {
+        return jlIncomingInspectionMapper.deleteJlIncomingInspectionById(id);
+    }
+}

+ 93 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/QualityinspectioninformationServiceImpl.java

@@ -0,0 +1,93 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.QualityinspectioninformationMapper;
+import com.zkqy.amichi.domain.Qualityinspectioninformation;
+import com.zkqy.amichi.service.IQualityinspectioninformationService;
+
+/**
+ * 质检信息Service业务层处理
+ * 
+ * @author hmc
+ * @date 2025-01-14
+ */
+@Service
+public class QualityinspectioninformationServiceImpl implements IQualityinspectioninformationService 
+{
+    @Autowired
+    private QualityinspectioninformationMapper qualityinspectioninformationMapper;
+
+    /**
+     * 查询质检信息
+     * 
+     * @param id 质检信息主键
+     * @return 质检信息
+     */
+    @Override
+    public Qualityinspectioninformation selectQualityinspectioninformationById(Long id)
+    {
+        return qualityinspectioninformationMapper.selectQualityinspectioninformationById(id);
+    }
+
+    /**
+     * 查询质检信息列表
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 质检信息
+     */
+    @Override
+    public List<Qualityinspectioninformation> selectQualityinspectioninformationList(Qualityinspectioninformation qualityinspectioninformation)
+    {
+        return qualityinspectioninformationMapper.selectQualityinspectioninformationList(qualityinspectioninformation);
+    }
+
+    /**
+     * 新增质检信息
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 结果
+     */
+    @Override
+    public int insertQualityinspectioninformation(Qualityinspectioninformation qualityinspectioninformation)
+    {
+        return qualityinspectioninformationMapper.insertQualityinspectioninformation(qualityinspectioninformation);
+    }
+
+    /**
+     * 修改质检信息
+     * 
+     * @param qualityinspectioninformation 质检信息
+     * @return 结果
+     */
+    @Override
+    public int updateQualityinspectioninformation(Qualityinspectioninformation qualityinspectioninformation)
+    {
+        return qualityinspectioninformationMapper.updateQualityinspectioninformation(qualityinspectioninformation);
+    }
+
+    /**
+     * 批量删除质检信息
+     * 
+     * @param ids 需要删除的质检信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteQualityinspectioninformationByIds(Long[] ids)
+    {
+        return qualityinspectioninformationMapper.deleteQualityinspectioninformationByIds(ids);
+    }
+
+    /**
+     * 删除质检信息信息
+     * 
+     * @param id 质检信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteQualityinspectioninformationById(Long id)
+    {
+        return qualityinspectioninformationMapper.deleteQualityinspectioninformationById(id);
+    }
+}

+ 119 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/ExcelHeaderDataListener.java

@@ -0,0 +1,119 @@
+package com.zkqy.amichi.utils;
+
+
+
+import com.alibaba.excel.context.AnalysisContext;
+
+import com.alibaba.excel.event.AnalysisEventListener;
+
+import com.zkqy.common.utils.StringUtils;
+import lombok.Data;
+
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+@Data
+public class ExcelHeaderDataListener extends AnalysisEventListener<Object> {
+
+    private String process;    // 制程
+    private String year;       // 年份
+    private String month;      // 月份
+
+    private String inspector;  // 检验员
+    private String reviewer;   // 审核人
+    private String inspectDate; // 检验日期
+    private String reviewDate;  // 审核日期
+
+    private List<?>   thirdLastRow;  // 倒数第三行
+    private List<?>   fourthLastRow; // 倒数第四行
+
+    private String one; //值1
+    private String two; //值2
+    private String three; //值3
+    private String four; //值4
+
+    // 添加一个列表来存储最近的行数据
+    private Map<Integer, Object> allRows = new HashMap<>();
+
+    @Override
+    public void invoke(Object data, AnalysisContext context) {
+        // 只处理第三行数据
+        if (context.readRowHolder().getRowIndex() == 2) {
+            String rowData = data.toString();
+            // 解析"制程:来料检验 2024年 月份:12月"格式的数据
+            if (rowData.contains("制程:")) {
+                // 提取制程
+                process = rowData.substring(
+                        rowData.indexOf("制程:") + 3,
+                        rowData.indexOf(" ", rowData.indexOf("制程:"))
+                ).trim();
+
+                // 提取年份
+                year = rowData.substring(
+                        rowData.indexOf(" ") + 1,
+                        rowData.indexOf("年")
+                ).trim();
+
+
+                // 提取月份
+                month = rowData.substring(
+                        rowData.indexOf("月份:") + 3,
+                        rowData.lastIndexOf("月")+1
+                ).trim();
+            }
+        }
+
+        //当前行数据
+        String currentRow = data.toString();
+        // 获取当前行索引
+        int currentIndex = context.readRowHolder().getRowIndex();
+
+        // 索引和当前行数据(你要存Date) 转成String就变不成List
+        allRows.put(currentIndex, data);
+
+        // 只保留最近的4行数据(当前行加上前3行)
+        if (allRows.size() > 4) {
+            allRows.remove(currentIndex-4);//保留最近操作的四行数据避免内存溢出
+        }
+
+        if (currentRow.contains("检验员:")) {
+
+            Object o1 = allRows.get(currentIndex - 3);
+            if ( o1 instanceof LinkedHashMap) {
+                LinkedHashMap<?,?> rowList = (LinkedHashMap<?,?>) o1;
+                one = String.valueOf(rowList.get(3));  // 第二列
+                two = String.valueOf(rowList.get(7));  // 第四列
+            }
+
+
+            Object o2 = allRows.get(currentIndex - 2);
+             if ( o2 instanceof LinkedHashMap) {
+                 LinkedHashMap<?,?> rowList = (LinkedHashMap<?,?>) o2;
+                 three = String.valueOf(rowList.get(3));  // 第二列
+                 four = String.valueOf(rowList.get(7));  // 第四列
+                 if(StringUtils.isNull(four)||four.equals("null")){
+                     four = String.valueOf(rowList.get(8));
+                 }
+             }
+            //使用正则表达式提取检验员和审核人信息
+            Pattern pattern = Pattern.compile("检验员:(.*?)\\s+(\\d{4}/\\d{1,2}/\\d{1,2})\\s+审核:(.*?)\\s+(\\d{4}/\\d{1,2}/\\d{1,2})");
+            Matcher matcher = pattern.matcher(currentRow);
+            if (matcher.find()) {
+                inspector = matcher.group(1);    // 检验员姓名
+                inspectDate = matcher.group(2);  // 检验日期
+                reviewer = matcher.group(3);     // 审核人姓名
+                reviewDate = matcher.group(4);   // 审核日期
+            }
+        }
+    }
+
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        // 解析完成后的操作
+        allRows.clear();
+    }
+
+}

+ 202 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/MergeRowListener.java

@@ -0,0 +1,202 @@
+package com.zkqy.amichi.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.zkqy.amichi.domain.BpLeaveFactory;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class MergeRowListener<T> extends AnalysisEventListener<T> {
+
+    private List<T> list = new ArrayList<>();
+
+    private T lastRow; // 保存上一行的所有数据
+
+    @Override
+
+    public void invoke(T data, AnalysisContext context) {
+
+        if (lastRow != null) {
+
+            // 获取所有字段,包括父类的字段
+
+            List<Field> allFields = getAllFields(data.getClass());
+
+
+
+            for (Field field : allFields) {
+
+                try {
+
+                    // 设置字段可访问
+
+                    field.setAccessible(true);
+
+
+
+                    // 获取当前行的字段值
+
+                    Object currentValue = field.get(data);
+
+
+
+                    // 如果当前值为空或者是空字符串,使用上一行的值
+
+                    if (isEmptyValue(currentValue)) {
+
+                        // 获取上一行的值
+
+                        Object lastValue = field.get(lastRow);
+
+                        // 如果上一行的值不为空,则设置到当前行
+
+                        if (!isEmptyValue(lastValue)) {
+
+                            field.set(data, lastValue);
+
+                        }
+
+                    }
+
+                } catch (IllegalAccessException e) {
+
+                    // 处理异常
+
+                    e.printStackTrace();
+
+                }
+
+            }
+
+        }
+
+
+
+        // 保存当前行数据作为下一行的参考
+
+        lastRow = data;
+
+        list.add(data);
+
+    }
+
+
+
+    @Override
+
+    public void doAfterAllAnalysed(AnalysisContext context) {
+
+        // 清理资源
+
+        lastRow = null;
+
+    }
+
+
+
+    /**
+
+     * 获取类的所有字段,包括父类的字段
+
+     */
+
+    private List<Field> getAllFields(Class<?> clazz) {
+
+        List<Field> fields = new ArrayList<>();
+
+
+
+        // 遍历类层次结构
+
+        while (clazz != null && clazz != Object.class) {
+
+            // 添加当前类的字段
+
+            fields.addAll(Arrays.asList(clazz.getDeclaredFields()));
+
+            // 获取父类
+
+            clazz = clazz.getSuperclass();
+
+        }
+
+
+
+        return fields;
+
+    }
+
+
+
+    /**
+
+     * 检查值是否为空
+
+     */
+
+    private boolean isEmptyValue(Object value) {
+
+        if (value == null) {
+
+            return true;
+
+        }
+
+
+
+        // 如果是字符串类型,检查是否为空字符串
+
+        if (value instanceof String) {
+
+            return ((String) value).trim().isEmpty();
+
+        }
+
+
+
+        // 如果是数字类型
+
+        if (value instanceof Number) {
+
+            if (value instanceof Integer) {
+
+                return ((Integer) value) == 0;
+
+            }
+
+            if (value instanceof Long) {
+
+                return ((Long) value) == 0L;
+
+            }
+
+            if (value instanceof Double) {
+
+                return ((Double) value) == 0.0;
+
+            }
+
+            if (value instanceof Float) {
+
+                return ((Float) value) == 0.0f;
+
+            }
+
+        }
+
+
+
+        // 如果是集合类型,检查是否为空集合
+
+        if (value instanceof List) {
+            return ((List<?>) value).isEmpty();
+        }
+        // 其他类型默认不为空
+        return false;
+
+    }
+}

+ 131 - 0
zkqy-fujian-amichi/src/main/resources/mapper/BpInspectionMapper.xml

@@ -0,0 +1,131 @@
+<?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.amichi.mapper.BpInspectionMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.BpInspection" id="BpInspectionResult">
+        <result property="id"    column="id"    />
+        <result property="orderNumber"    column="order_number"    />
+        <result property="modelName"    column="model_name"    />
+        <result property="causeOfNonconformity"    column="cause_of_nonconformity"    />
+        <result property="disqualificationNumber"    column="disqualification_number"    />
+        <result property="handlingSituation"    column="handling_situation"    />
+        <result property="jobNumber"    column="job_number"    />
+        <result property="dateOfInspection"    column="date_of_inspection"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+    </resultMap>
+
+    <sql id="selectBpInspectionVo">
+        select id, order_number, model_name, cause_of_nonconformity, disqualification_number, handling_situation, job_number, date_of_inspection, create_time, create_by from  fjqydb.bp_inspection
+    </sql>
+
+    <select id="selectBpInspectionList" parameterType="com.zkqy.amichi.domain.BpInspection" resultMap="BpInspectionResult">
+        <include refid="selectBpInspectionVo"/>
+        <where>  
+            <if test="orderNumber != null  and orderNumber != ''"> and order_number = #{orderNumber}</if>
+            <if test="modelName != null  and modelName != ''"> and model_name like concat('%', #{modelName}, '%')</if>
+            <if test="causeOfNonconformity != null  and causeOfNonconformity != ''"> and cause_of_nonconformity = #{causeOfNonconformity}</if>
+            <if test="disqualificationNumber != null  and disqualificationNumber != ''"> and disqualification_number = #{disqualificationNumber}</if>
+            <if test="handlingSituation != null  and handlingSituation != ''"> and handling_situation = #{handlingSituation}</if>
+            <if test="jobNumber != null  and jobNumber != ''"> and job_number = #{jobNumber}</if>
+            <if test="dateOfInspection != null  and dateOfInspection != ''"> and date_of_inspection = #{dateOfInspection}</if>
+            <if test="fid != null  and fid != ''"> and fid = #{fid}</if>
+        </where>
+    </select>
+    
+    <select id="selectBpInspectionById" parameterType="Long" resultMap="BpInspectionResult">
+        <include refid="selectBpInspectionVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBpInspection" parameterType="com.zkqy.amichi.domain.BpInspection">
+        insert into  fjqydb.bp_inspection
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="orderNumber != null">order_number,</if>
+            <if test="modelName != null">model_name,</if>
+            <if test="causeOfNonconformity != null">cause_of_nonconformity,</if>
+            <if test="disqualificationNumber != null">disqualification_number,</if>
+            <if test="handlingSituation != null">handling_situation,</if>
+            <if test="jobNumber != null">job_number,</if>
+            <if test="dateOfInspection != null">date_of_inspection,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="orderNumber != null">#{orderNumber},</if>
+            <if test="modelName != null">#{modelName},</if>
+            <if test="causeOfNonconformity != null">#{causeOfNonconformity},</if>
+            <if test="disqualificationNumber != null">#{disqualificationNumber},</if>
+            <if test="handlingSituation != null">#{handlingSituation},</if>
+            <if test="jobNumber != null">#{jobNumber},</if>
+            <if test="dateOfInspection != null">#{dateOfInspection},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBpInspectionBatch">
+        <foreach collection ="list" item="item" separator =";">
+            INSERT INTO fjqydb.bp_inspection
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.orderNumber != null">order_number,</if>
+                <if test="item.modelName != null">model_name,</if>
+                <if test="item.causeOfNonconformity != null">cause_of_nonconformity,</if>
+                <if test="item.disqualificationNumber != null">disqualification_number,</if>
+                <if test="item.handlingSituation != null">handling_situation,</if>
+                <if test="item.jobNumber != null">job_number,</if>
+                <if test="item.dateOfInspection != null">date_of_inspection,</if>
+                <if test="item.createTime != null">create_time,</if>
+                <if test="item.createBy != null">create_by,</if>
+                <if test="item.fid != null">fid,</if>
+            </trim>
+            VALUES
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.orderNumber != null">#{item.orderNumber},</if>
+                <if test="item.modelName != null">#{item.modelName},</if>
+                <if test="item.causeOfNonconformity != null">#{item.causeOfNonconformity},</if>
+                <if test="item.disqualificationNumber != null">#{item.disqualificationNumber},</if>
+                <if test="item.handlingSituation != null">#{item.handlingSituation},</if>
+                <if test="item.jobNumber != null">#{item.jobNumber},</if>
+                <if test="item.dateOfInspection != null">#{item.dateOfInspection},</if>
+                <if test="item.createTime != null">#{item.createTime},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+                <if test="item.fid != null">#{item.fid},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateBpInspection" parameterType="com.zkqy.amichi.domain.BpInspection">
+        update  fjqydb.bp_inspection
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderNumber != null">order_number = #{orderNumber},</if>
+            <if test="modelName != null">model_name = #{modelName},</if>
+            <if test="causeOfNonconformity != null">cause_of_nonconformity = #{causeOfNonconformity},</if>
+            <if test="disqualificationNumber != null">disqualification_number = #{disqualificationNumber},</if>
+            <if test="handlingSituation != null">handling_situation = #{handlingSituation},</if>
+            <if test="jobNumber != null">job_number = #{jobNumber},</if>
+            <if test="dateOfInspection != null">date_of_inspection = #{dateOfInspection},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBpInspectionById" parameterType="Long">
+        delete from fjqydb.bp_inspection where id = #{id}
+    </delete>
+
+    <delete id="deleteBpInspectionByIds" parameterType="String">
+        delete from  fjqydb.bp_inspection where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <delete id="deleteBpInspectionByfIds">
+        delete from  fjqydb.bp_inspection where fid= #{id}
+    </delete>
+</mapper>

+ 135 - 0
zkqy-fujian-amichi/src/main/resources/mapper/BpLeaveFactoryMapper.xml

@@ -0,0 +1,135 @@
+<?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.amichi.mapper.BpLeaveFactoryMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.BpLeaveFactory" id="BpLeaveFactoryResult">
+        <result property="id"    column="id"    />
+        <result property="orderNumber"    column="order_number"    />
+        <result property="modelName"    column="model_name"    />
+        <result property="causeOfNonconformity"    column="cause_of_nonconformity"    />
+        <result property="disqualificationNumber"    column="disqualification_number"    />
+        <result property="handlingSituation"    column="handling_situation"    />
+        <result property="jobNumber"    column="job_number"    />
+        <result property="dateOfInspection"    column="date_of_inspection"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+    </resultMap>
+
+    <sql id="selectBpLeaveFactoryVo">
+        select id, order_number, model_name, cause_of_nonconformity, disqualification_number, handling_situation, job_number, date_of_inspection, create_time, create_by from fjqydb.bp_leave_factory
+    </sql>
+
+    <select id="selectBpLeaveFactoryList" parameterType="com.zkqy.amichi.domain.BpLeaveFactory" resultMap="BpLeaveFactoryResult">
+        <include refid="selectBpLeaveFactoryVo"/>
+        <where>  
+            <if test="orderNumber != null  and orderNumber != ''"> and order_number = #{orderNumber}</if>
+            <if test="modelName != null  and modelName != ''"> and model_name like concat('%', #{modelName}, '%')</if>
+            <if test="causeOfNonconformity != null  and causeOfNonconformity != ''"> and cause_of_nonconformity = #{causeOfNonconformity}</if>
+            <if test="disqualificationNumber != null  and disqualificationNumber != ''"> and disqualification_number = #{disqualificationNumber}</if>
+            <if test="handlingSituation != null  and handlingSituation != ''"> and handling_situation = #{handlingSituation}</if>
+            <if test="jobNumber != null  and jobNumber != ''"> and job_number = #{jobNumber}</if>
+            <if test="dateOfInspection != null  and dateOfInspection != ''"> and date_of_inspection = #{dateOfInspection}</if>
+            <if test="fid != null  and fid != ''"> and fid = #{fid}</if>
+        </where>
+    </select>
+    
+    <select id="selectBpLeaveFactoryById" parameterType="Long" resultMap="BpLeaveFactoryResult">
+        <include refid="selectBpLeaveFactoryVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBpLeaveFactory" parameterType="com.zkqy.amichi.domain.BpLeaveFactory">
+        insert into fjqydb.bp_leave_factory
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="orderNumber != null">order_number,</if>
+            <if test="modelName != null">model_name,</if>
+            <if test="causeOfNonconformity != null">cause_of_nonconformity,</if>
+            <if test="disqualificationNumber != null">disqualification_number,</if>
+            <if test="handlingSituation != null">handling_situation,</if>
+            <if test="jobNumber != null">job_number,</if>
+            <if test="dateOfInspection != null">date_of_inspection,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="orderNumber != null">#{orderNumber},</if>
+            <if test="modelName != null">#{modelName},</if>
+            <if test="causeOfNonconformity != null">#{causeOfNonconformity},</if>
+            <if test="disqualificationNumber != null">#{disqualificationNumber},</if>
+            <if test="handlingSituation != null">#{handlingSituation},</if>
+            <if test="jobNumber != null">#{jobNumber},</if>
+            <if test="dateOfInspection != null">#{dateOfInspection},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBpLeaveFactoryBatch">
+        <foreach collection ="list" item="item" separator =";">
+            INSERT INTO fjqydb.bp_leave_factory
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.id != null">id,</if>
+                <if test="item.orderNumber != null">order_number,</if>
+                <if test="item.modelName != null">model_name,</if>
+                <if test="item.causeOfNonconformity != null">cause_of_nonconformity,</if>
+                <if test="item.disqualificationNumber != null">disqualification_number,</if>
+                <if test="item.handlingSituation != null">handling_situation,</if>
+                <if test="item.jobNumber != null">job_number,</if>
+                <if test="item.dateOfInspection != null">date_of_inspection,</if>
+                <if test="item.createTime != null">create_time,</if>
+                <if test="item.createBy != null">create_by,</if>
+                <if test="item.fid != null">fid,</if>
+            </trim>
+            VALUES
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.id != null">#{item.id},</if>
+                <if test="item.orderNumber != null">#{item.orderNumber},</if>
+                <if test="item.modelName != null">#{item.modelName},</if>
+                <if test="item.causeOfNonconformity != null">#{item.causeOfNonconformity},</if>
+                <if test="item.disqualificationNumber != null">#{item.disqualificationNumber},</if>
+                <if test="item.handlingSituation != null">#{item.handlingSituation},</if>
+                <if test="item.jobNumber != null">#{item.jobNumber},</if>
+                <if test="item.dateOfInspection != null">#{item.dateOfInspection},</if>
+                <if test="item.createTime != null">#{item.createTime},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+                <if test="item.fid != null">#{item.fid},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateBpLeaveFactory" parameterType="com.zkqy.amichi.domain.BpLeaveFactory">
+        update  fjqydb.bp_leave_factory
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderNumber != null">order_number = #{orderNumber},</if>
+            <if test="modelName != null">model_name = #{modelName},</if>
+            <if test="causeOfNonconformity != null">cause_of_nonconformity = #{causeOfNonconformity},</if>
+            <if test="disqualificationNumber != null">disqualification_number = #{disqualificationNumber},</if>
+            <if test="handlingSituation != null">handling_situation = #{handlingSituation},</if>
+            <if test="jobNumber != null">job_number = #{jobNumber},</if>
+            <if test="dateOfInspection != null">date_of_inspection = #{dateOfInspection},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBpLeaveFactoryById" parameterType="Long">
+        delete from fjqydb.bp_leave_factory where id = #{id}
+    </delete>
+
+    <delete id="deleteBpLeaveFactoryByIds" parameterType="String">
+        delete from fjqydb.bp_leave_factory where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <delete id="deleteBpLeaveFactoryByfIds" parameterType="String">
+        delete from fjqydb.bp_leave_factory where fid =  #{id}
+    </delete>
+
+</mapper>

+ 133 - 0
zkqy-fujian-amichi/src/main/resources/mapper/JlIncomingInspectionMapper.xml

@@ -0,0 +1,133 @@
+<?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.amichi.mapper.JlIncomingInspectionMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.JlIncomingInspection" id="JlIncomingInspectionResult">
+        <result property="id"    column="id"    />
+        <result property="orderNumber"    column="order_number"    />
+        <result property="modelName"    column="model_name"    />
+        <result property="quantity"    column="quantity"    />
+        <result property="causeOfNonconformity"    column="cause_of_nonconformity"    />
+        <result property="disqualificationNumber"    column="disqualification_number"    />
+        <result property="handlingSituation"    column="handling_situation"    />
+        <result property="dateOfInspection"    column="date_of_inspection"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+
+    </resultMap>
+
+    <sql id="selectJlIncomingInspectionVo">
+        select id, order_number, model_name, quantity, cause_of_nonconformity, disqualification_number, handling_situation, date_of_inspection, create_time, create_by from fjqydb.jl_incoming_inspection
+    </sql>
+
+    <select id="selectJlIncomingInspectionList" parameterType="com.zkqy.amichi.domain.JlIncomingInspection" resultMap="JlIncomingInspectionResult">
+        <include refid="selectJlIncomingInspectionVo"/>
+        <where>  
+            <if test="orderNumber != null  and orderNumber != ''"> and order_number = #{orderNumber}</if>
+            <if test="modelName != null  and modelName != ''"> and model_name like concat('%', #{modelName}, '%')</if>
+            <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</if>
+            <if test="causeOfNonconformity != null  and causeOfNonconformity != ''"> and cause_of_nonconformity = #{causeOfNonconformity}</if>
+            <if test="disqualificationNumber != null  and disqualificationNumber != ''"> and disqualification_number = #{disqualificationNumber}</if>
+            <if test="handlingSituation != null  and handlingSituation != ''"> and handling_situation = #{handlingSituation}</if>
+            <if test="dateOfInspection != null  and dateOfInspection != ''"> and date_of_inspection = #{dateOfInspection}</if>
+            <if test="fid != null  and fid != ''"> and fid = #{fid}</if>
+        </where>
+    </select>
+    
+    <select id="selectJlIncomingInspectionById" parameterType="Long" resultMap="JlIncomingInspectionResult">
+        <include refid="selectJlIncomingInspectionVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertJlIncomingInspection" parameterType="com.zkqy.amichi.domain.JlIncomingInspection">
+        insert into fjqydb.jl_incoming_inspection
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="orderNumber != null">order_number,</if>
+            <if test="modelName != null">model_name,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="causeOfNonconformity != null">cause_of_nonconformity,</if>
+            <if test="disqualificationNumber != null">disqualification_number,</if>
+            <if test="handlingSituation != null">handling_situation,</if>
+            <if test="dateOfInspection != null">date_of_inspection,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="orderNumber != null">#{orderNumber},</if>
+            <if test="modelName != null">#{modelName},</if>
+            <if test="quantity != null">#{quantity},</if>
+            <if test="causeOfNonconformity != null">#{causeOfNonconformity},</if>
+            <if test="disqualificationNumber != null">#{disqualificationNumber},</if>
+            <if test="handlingSituation != null">#{handlingSituation},</if>
+            <if test="dateOfInspection != null">#{dateOfInspection},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+         </trim>
+    </insert>
+
+
+    <insert id="insertJlIncomingInspectionBatch">
+        <foreach collection ="list" item="item" separator =";">
+            INSERT INTO fjqydb.jl_incoming_inspection
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.orderNumber != null">order_number,</if>
+                <if test="item.modelName != null">model_name,</if>
+                <if test="item.quantity != null">quantity,</if>
+                <if test="item.causeOfNonconformity != null">cause_of_nonconformity,</if>
+                <if test="item.disqualificationNumber != null">disqualification_number,</if>
+                <if test="item.handlingSituation != null">handling_situation,</if>
+                <if test="item.dateOfInspection != null">date_of_inspection,</if>
+                <if test="item.createTime != null">create_time,</if>
+                <if test="item.createBy != null">create_by,</if>
+                <if test="item.fid != null">fid,</if>
+            </trim>
+            VALUES
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.orderNumber != null">#{item.orderNumber},</if>
+                <if test="item.modelName != null">#{item.modelName},</if>
+                <if test="item.quantity != null">#{item.quantity},</if>
+                <if test="item.causeOfNonconformity != null">#{item.causeOfNonconformity},</if>
+                <if test="item.disqualificationNumber != null">#{item.disqualificationNumber},</if>
+                <if test="item.handlingSituation != null">#{item.handlingSituation},</if>
+                <if test="item.dateOfInspection != null">#{item.dateOfInspection},</if>
+                <if test="item.createTime != null">#{item.createTime},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+                <if test="item.fid != null">#{item.fid},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateJlIncomingInspection" parameterType="com.zkqy.amichi.domain.JlIncomingInspection">
+        update fjqydb.jl_incoming_inspection
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderNumber != null">order_number = #{orderNumber},</if>
+            <if test="modelName != null">model_name = #{modelName},</if>
+            <if test="quantity != null">quantity = #{quantity},</if>
+            <if test="causeOfNonconformity != null">cause_of_nonconformity = #{causeOfNonconformity},</if>
+            <if test="disqualificationNumber != null">disqualification_number = #{disqualificationNumber},</if>
+            <if test="handlingSituation != null">handling_situation = #{handlingSituation},</if>
+            <if test="dateOfInspection != null">date_of_inspection = #{dateOfInspection},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteJlIncomingInspectionById" parameterType="Long">
+        delete from fjqydb.jl_incoming_inspection where id = #{id}
+    </delete>
+
+    <delete id="deleteJlIncomingInspectionByIds" parameterType="String">
+        delete from fjqydb.jl_incoming_inspection where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <delete id="deleteJlIncomingInspectionByfId">
+        delete from fjqydb.jl_incoming_inspection where fid=#{id}
+    </delete>
+</mapper>

+ 14 - 7
zkqy-fujian-amichi/src/main/resources/mapper/MaterialInfoMapper.xml

@@ -33,10 +33,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
         <result property="delFlag"    column="del_flag"    />
+        <result property="stockQuantity" column="stock_quantity"/>
     </resultMap>
 
     <sql id="selectMaterialInfoVo">
-        select id, material_code, material_name, specification, model, map_number, description, ck_number, ck_name, lot_number, unit, stockQuantity, available_amount, stock_status, owner_type, owner_number, owner_name, custodian_type, custodian_code, custodian_name, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag from fjqydb.materialinfo
+        select id, material_code, material_name, specification, model, map_number, description, ck_number, ck_name, lot_number, unit, stock_quantity, available_amount, stock_status, owner_type, owner_number, owner_name, custodian_type, custodian_code, custodian_name, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag from fjqydb.materialinfo
     </sql>
 
     <select id="selectMaterialInfoList" parameterType="com.zkqy.amichi.domain.MaterialInfo" resultMap="MaterialInfoResult">
@@ -52,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ckName != null  and ckName != ''"> and ck_name like concat('%', #{ckName}, '%')</if>
             <if test="lotNumber != null  and lotNumber != ''"> and lot_number = #{lotNumber}</if>
             <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
-            <if test="stockQuantity != null "> and stockQuantity = #{stockQuantity}</if>
+            <if test="stockQuantity != null "> and stock_quantity = #{stockQuantity}</if>
             <if test="availableAmount != null  and availableAmount != ''"> and available_amount = #{availableAmount}</if>
             <if test="stockStatus != null  and stockStatus != ''"> and stock_status = #{stockStatus}</if>
             <if test="ownerType != null  and ownerType != ''"> and owner_type = #{ownerType}</if>
@@ -66,6 +67,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="catType != null and catType!='' and catType==1"> and (ck_number!='CK005' or  ck_name!='成品仓' or  ck_number!='利库仓')</if>
             <if test="catType != null and catType!='' and catType==2"> and ck_name='成品仓' </if>
             and del_flag =0
+            <if test="ids != null">
+                and id in
+                <foreach collection="ids" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
         </where>
     </select>
 
@@ -87,7 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ckName != null">ck_name,</if>
             <if test="lotNumber != null">lot_number,</if>
             <if test="unit != null">unit,</if>
-            <if test="stockQuantity != null">stockQuantity,</if>
+            <if test="stockQuantity != null">stock_quantity,</if>
             <if test="availableAmount != null">available_amount,</if>
             <if test="stockStatus != null">stock_status,</if>
             <if test="ownerType != null">owner_type,</if>
@@ -150,7 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.ckName != null">ck_name,</if>
                 <if test="item.lotNumber != null">lot_number,</if>
                 <if test="item.unit != null">unit,</if>
-                <if test="item.stockQuantity != null">stockQuantity,</if>
+                <if test="item.stockQuantity != null">stock_quantity,</if>
                 <if test="item.availableAmount != null">available_amount,</if>
                 <if test="item.stockStatus != null">stock_status,</if>
                 <if test="item.ownerType != null">owner_type,</if>
@@ -215,7 +222,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.ckName != null">ck_name,</if>
                 <if test="item.lotNumber != null">lot_number,</if>
                 <if test="item.unit != null">unit,</if>
-                <if test="item.stockQuantity != null">stockQuantity,</if>
+                <if test="item.stockQuantity != null">stock_quantity,</if>
                 <if test="item.availableAmount != null">available_amount,</if>
                 <if test="item.stockStatus != null">stock_status,</if>
                 <if test="item.ownerType != null">owner_type,</if>
@@ -278,7 +285,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ckName != null">ck_name = #{ckName},</if>
             <if test="lotNumber != null">lot_number = #{lotNumber},</if>
             <if test="unit != null">unit = #{unit},</if>
-            <if test="stockQuantity != null">stockQuantity = #{stockQuantity},</if>
+            <if test="stockQuantity != null">stock_quantity = #{stockQuantity},</if>
             <if test="availableAmount != null">available_amount = #{availableAmount},</if>
             <if test="stockStatus != null">stock_status = #{stockStatus},</if>
             <if test="ownerType != null">owner_type = #{ownerType},</if>
@@ -311,7 +318,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="ckName != null">ck_name = #{ckName},</if>
             <if test="lotNumber != null">lot_number = #{lotNumber},</if>
             <if test="unit != null">unit = #{unit},</if>
-            <if test="stockQuantity != null">stockQuantity = #{stockQuantity},</if>
+            <if test="stockQuantity != null">stock_quantity = #{stockQuantity},</if>
             <if test="availableAmount != null">available_amount = #{availableAmount},</if>
             <if test="stockStatus != null">stock_status = #{stockStatus},</if>
             <if test="ownerType != null">owner_type = #{ownerType},</if>

+ 6 - 0
zkqy-fujian-amichi/src/main/resources/mapper/MaterialRetentionLogMapper.xml

@@ -93,6 +93,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTimeString != null and createTimeString[1] != null and createTimeString[1] != ''">
                 and DATE_FORMAT(create_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{createTimeString[1]}
             </if>
+            <if test="ids != null">
+                and id in
+                <foreach collection="ids" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
         </where>
         order by create_time desc
     </select>

+ 161 - 0
zkqy-fujian-amichi/src/main/resources/mapper/QualityinspectioninformationMapper.xml

@@ -0,0 +1,161 @@
+<?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.amichi.mapper.QualityinspectioninformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.Qualityinspectioninformation" id="QualityinspectioninformationResult">
+        <result property="id"    column="id"    />
+        <result property="manufacturingProcess"    column="manufacturing_process"    />
+        <result property="reportName"    column="report_name"    />
+        <result property="reportDate"    column="report_date"    />
+        <result property="inspector"    column="inspector"    />
+        <result property="examine"    column="examine"    />
+        <result property="examineDate"    column="examine_date"    />
+        <result property="inspectorDate"    column="inspector_date"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="type"    column="type"    />
+        <result property="jlOneFailedBatch"    column="jl_one_failed_batch"    />
+        <result property="jlTotalBatchForInspection"    column="jl_total_batch_for_inspection"    />
+        <result property="jlQuantityOfRejectsReturns"    column="jl_quantity_of_rejects_returns"    />
+        <result property="jlQualifiedRateOfTheMonth"    column="jl_qualified_rate_of_the_month"    />
+        <result property="bpNumberOfFailures"    column="bp_number_of_failures"    />
+        <result property="bpScrapQuantity"    column="bp_scrap_quantity"    />
+        <result property="bpTotalForTheMonth"    column="bp_total_for_the_month"    />
+        <result property="bpPassRateThisMonth"    column="bp_pass_rate_this_month"    />
+        <result property="ccNumberOfFailures"    column="cc_number_of_failures"    />
+        <result property="ccScrapQuantity"    column="cc_scrap_quantity"    />
+        <result property="ccTotalForTheMonth"    column="cc_total_for_the_month"    />
+        <result property="ccPassRateThisMonth"    column="cc_pass_rate_this_month"    />
+    </resultMap>
+
+    <sql id="selectQualityinspectioninformationVo">
+        select id, manufacturing_process, report_name, report_date, inspector, examine, examine_date, inspector_date, create_time, create_by, type, jl_one_failed_batch, jl_total_batch_for_inspection, jl_quantity_of_rejects_returns, jl_qualified_rate_of_the_month, bp_number_of_failures, bp_scrap_quantity, bp_total_for_the_month, bp_pass_rate_this_month, cc_number_of_failures, cc_scrap_quantity, cc_total_for_the_month, cc_pass_rate_this_month from fjqydb.qualityinspectioninformation
+    </sql>
+
+    <select id="selectQualityinspectioninformationList" parameterType="Qualityinspectioninformation" resultMap="QualityinspectioninformationResult">
+        <include refid="selectQualityinspectioninformationVo"/>
+        <where>  
+            <if test="manufacturingProcess != null  and manufacturingProcess != '' and manufacturingProcess != '全部'"> and manufacturing_process = #{manufacturingProcess}</if>
+            <if test="reportName != null  and reportName != ''"> and report_name like concat('%', #{reportName}, '%')</if>
+            <if test="reportDate != null  and reportDate != ''"> and report_date = #{reportDate}</if>
+            <if test="inspector != null  and inspector != ''"> and inspector = #{inspector}</if>
+            <if test="examine != null  and examine != ''"> and examine = #{examine}</if>
+            <if test="examineDate != null  and examineDate != ''"> and examine_date = #{examineDate}</if>
+            <if test="inspectorDate != null  and inspectorDate != ''"> and inspector_date = #{inspectorDate}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="jlOneFailedBatch != null  and jlOneFailedBatch != ''"> and jl_one_failed_batch = #{jlOneFailedBatch}</if>
+            <if test="jlTotalBatchForInspection != null  and jlTotalBatchForInspection != ''"> and jl_total_batch_for_inspection = #{jlTotalBatchForInspection}</if>
+            <if test="jlQuantityOfRejectsReturns != null  and jlQuantityOfRejectsReturns != ''"> and jl_quantity_of_rejects_returns = #{jlQuantityOfRejectsReturns}</if>
+            <if test="jlQualifiedRateOfTheMonth != null  and jlQualifiedRateOfTheMonth != ''"> and jl_qualified_rate_of_the_month = #{jlQualifiedRateOfTheMonth}</if>
+            <if test="bpNumberOfFailures != null  and bpNumberOfFailures != ''"> and bp_number_of_failures = #{bpNumberOfFailures}</if>
+            <if test="bpScrapQuantity != null  and bpScrapQuantity != ''"> and bp_scrap_quantity = #{bpScrapQuantity}</if>
+            <if test="bpTotalForTheMonth != null  and bpTotalForTheMonth != ''"> and bp_total_for_the_month = #{bpTotalForTheMonth}</if>
+            <if test="bpPassRateThisMonth != null  and bpPassRateThisMonth != ''"> and bp_pass_rate_this_month = #{bpPassRateThisMonth}</if>
+            <if test="ccNumberOfFailures != null  and ccNumberOfFailures != ''"> and cc_number_of_failures = #{ccNumberOfFailures}</if>
+            <if test="ccScrapQuantity != null  and ccScrapQuantity != ''"> and cc_scrap_quantity = #{ccScrapQuantity}</if>
+            <if test="ccTotalForTheMonth != null  and ccTotalForTheMonth != ''"> and cc_total_for_the_month = #{ccTotalForTheMonth}</if>
+            <if test="ccPassRateThisMonth != null  and ccPassRateThisMonth != ''"> and cc_pass_rate_this_month = #{ccPassRateThisMonth}</if>
+        </where>
+    </select>
+    
+    <select id="selectQualityinspectioninformationById" parameterType="Long" resultMap="QualityinspectioninformationResult">
+        <include refid="selectQualityinspectioninformationVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertQualityinspectioninformation" parameterType="Qualityinspectioninformation" keyProperty="id" useGeneratedKeys="true">
+        insert into fjqydb.qualityinspectioninformation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="manufacturingProcess != null">manufacturing_process,</if>
+            <if test="reportName != null">report_name,</if>
+            <if test="reportDate != null">report_date,</if>
+            <if test="inspector != null">inspector,</if>
+            <if test="examine != null">examine,</if>
+            <if test="examineDate != null">examine_date,</if>
+            <if test="inspectorDate != null">inspector_date,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="type != null">type,</if>
+            <if test="jlOneFailedBatch != null">jl_one_failed_batch,</if>
+            <if test="jlTotalBatchForInspection != null">jl_total_batch_for_inspection,</if>
+            <if test="jlQuantityOfRejectsReturns != null">jl_quantity_of_rejects_returns,</if>
+            <if test="jlQualifiedRateOfTheMonth != null">jl_qualified_rate_of_the_month,</if>
+            <if test="bpNumberOfFailures != null">bp_number_of_failures,</if>
+            <if test="bpScrapQuantity != null">bp_scrap_quantity,</if>
+            <if test="bpTotalForTheMonth != null">bp_total_for_the_month,</if>
+            <if test="bpPassRateThisMonth != null">bp_pass_rate_this_month,</if>
+            <if test="ccNumberOfFailures != null">cc_number_of_failures,</if>
+            <if test="ccScrapQuantity != null">cc_scrap_quantity,</if>
+            <if test="ccTotalForTheMonth != null">cc_total_for_the_month,</if>
+            <if test="ccPassRateThisMonth != null">cc_pass_rate_this_month,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="manufacturingProcess != null">#{manufacturingProcess},</if>
+            <if test="reportName != null">#{reportName},</if>
+            <if test="reportDate != null">#{reportDate},</if>
+            <if test="inspector != null">#{inspector},</if>
+            <if test="examine != null">#{examine},</if>
+            <if test="examineDate != null">#{examineDate},</if>
+            <if test="inspectorDate != null">#{inspectorDate},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="type != null">#{type},</if>
+            <if test="jlOneFailedBatch != null">#{jlOneFailedBatch},</if>
+            <if test="jlTotalBatchForInspection != null">#{jlTotalBatchForInspection},</if>
+            <if test="jlQuantityOfRejectsReturns != null">#{jlQuantityOfRejectsReturns},</if>
+            <if test="jlQualifiedRateOfTheMonth != null">#{jlQualifiedRateOfTheMonth},</if>
+            <if test="bpNumberOfFailures != null">#{bpNumberOfFailures},</if>
+            <if test="bpScrapQuantity != null">#{bpScrapQuantity},</if>
+            <if test="bpTotalForTheMonth != null">#{bpTotalForTheMonth},</if>
+            <if test="bpPassRateThisMonth != null">#{bpPassRateThisMonth},</if>
+            <if test="ccNumberOfFailures != null">#{ccNumberOfFailures},</if>
+            <if test="ccScrapQuantity != null">#{ccScrapQuantity},</if>
+            <if test="ccTotalForTheMonth != null">#{ccTotalForTheMonth},</if>
+            <if test="ccPassRateThisMonth != null">#{ccPassRateThisMonth},</if>
+         </trim>
+    </insert>
+
+    <update id="updateQualityinspectioninformation" parameterType="Qualityinspectioninformation">
+        update fjqydb.qualityinspectioninformation
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="manufacturingProcess != null">manufacturing_process = #{manufacturingProcess},</if>
+            <if test="reportName != null">report_name = #{reportName},</if>
+            <if test="reportDate != null">report_date = #{reportDate},</if>
+            <if test="inspector != null">inspector = #{inspector},</if>
+            <if test="examine != null">examine = #{examine},</if>
+            <if test="examineDate != null">examine_date = #{examineDate},</if>
+            <if test="inspectorDate != null">inspector_date = #{inspectorDate},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="jlOneFailedBatch != null">jl_one_failed_batch = #{jlOneFailedBatch},</if>
+            <if test="jlTotalBatchForInspection != null">jl_total_batch_for_inspection = #{jlTotalBatchForInspection},</if>
+            <if test="jlQuantityOfRejectsReturns != null">jl_quantity_of_rejects_returns = #{jlQuantityOfRejectsReturns},</if>
+            <if test="jlQualifiedRateOfTheMonth != null">jl_qualified_rate_of_the_month = #{jlQualifiedRateOfTheMonth},</if>
+            <if test="bpNumberOfFailures != null">bp_number_of_failures = #{bpNumberOfFailures},</if>
+            <if test="bpScrapQuantity != null">bp_scrap_quantity = #{bpScrapQuantity},</if>
+            <if test="bpTotalForTheMonth != null">bp_total_for_the_month = #{bpTotalForTheMonth},</if>
+            <if test="bpPassRateThisMonth != null">bp_pass_rate_this_month = #{bpPassRateThisMonth},</if>
+            <if test="ccNumberOfFailures != null">cc_number_of_failures = #{ccNumberOfFailures},</if>
+            <if test="ccScrapQuantity != null">cc_scrap_quantity = #{ccScrapQuantity},</if>
+            <if test="ccTotalForTheMonth != null">cc_total_for_the_month = #{ccTotalForTheMonth},</if>
+            <if test="ccPassRateThisMonth != null">cc_pass_rate_this_month = #{ccPassRateThisMonth},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteQualityinspectioninformationById" parameterType="Long">
+        delete from fjqydb.qualityinspectioninformation where id = #{id}
+    </delete>
+
+    <delete id="deleteQualityinspectioninformationByIds" parameterType="String">
+        delete from fjqydb.qualityinspectioninformation where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 7 - 0
zkqy-ui/src/api/amichi/planTask/planTaskDetails.js

@@ -24,6 +24,13 @@ export function flowCardList(data) {
     params: data
   })
 }
+export function listInfoRkK(data) {
+  return request({
+    url: '/planTaskDetails/Details/listInfoRkK',
+    method: 'get',
+    params: data
+  })
+}
 
 export function generateEmployeeCodeList(data) {
   return request({

+ 44 - 0
zkqy-ui/src/api/amichi/qualityinspectioninformation/inspection.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询白胚检验信息列表
+export function listInspection(query) {
+  return request({
+    url: '/system/inspection/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询白胚检验信息详细
+export function getInspection(id) {
+  return request({
+    url: '/system/inspection/' + id,
+    method: 'get'
+  })
+}
+
+// 新增白胚检验信息
+export function addInspection(data) {
+  return request({
+    url: '/system/inspection',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改白胚检验信息
+export function updateInspection(data) {
+  return request({
+    url: '/system/inspection',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除白胚检验信息
+export function delInspection(id) {
+  return request({
+    url: '/system/inspection/' + id,
+    method: 'delete'
+  })
+}

+ 44 - 0
zkqy-ui/src/api/amichi/qualityinspectioninformation/qualityinspectioninformation.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询质检信息列表
+export function listQualityinspectioninformation(query) {
+  return request({
+    url: '/qualityinspectioninformation/qualityinspectioninformation/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询质检信息详细
+export function getQualityinspectioninformation(id) {
+  return request({
+    url: '/qualityinspectioninformation/qualityinspectioninformation/' + id,
+    method: 'get'
+  })
+}
+
+// 新增质检信息
+export function addQualityinspectioninformation(data) {
+  return request({
+    url: '/qualityinspectioninformation/qualityinspectioninformation',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改质检信息
+export function updateQualityinspectioninformation(data) {
+  return request({
+    url: '/qualityinspectioninformation/qualityinspectioninformation',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除质检信息
+export function delQualityinspectioninformation(id) {
+  return request({
+    url: '/qualityinspectioninformation/qualityinspectioninformation/' + id,
+    method: 'delete'
+  })
+}

+ 2 - 1
zkqy-ui/src/views/amichi/MaterialRetentionLog/index.vue

@@ -413,7 +413,8 @@ export default {
     /** 导出按钮操作 */
     handleExport() {
       this.download('materialRetentionLog/log/export', {
-        ...this.queryParams
+        ...this.queryParams,
+        ids: this.ids
       }, `log_${new Date().getTime()}.xlsx`)
     }
   }

+ 112 - 190
zkqy-ui/src/views/amichi/print/rkadyPrint.vue

@@ -18,18 +18,28 @@
       </div>
     </div>
     <div class="base" id="printView" >
-      <div class="box" style="page-break-after:always;margin-top: 10px;">
-         <div  class="bj" v-for="(item,index) in listDate" style="margin-top: 20px">
-             <div class="erweima"><img :src="item.base46MaD"  alt=""></div>
-             <div class="xh">{{item.serialNumber}}</div>
-         </div>
+<!--      <div class="box" style="page-break-after:always;margin-top: 10px;">-->
+<!--        <div  class="bj" v-for="(item,index) in listDate" style="margin-top: 20px">-->
+<!--          <div class="erweima"><img :src="item.base46MaD"  alt=""></div>-->
+<!--          <div class="xh">{{item.serialNumber}}</div>-->
+<!--        </div>-->
+<!--      </div>-->
+      <div class="fj">
+        <div class="abc" v-for="(item,index) in listDate" >
+          <div class="label-container">
+            <div class="content-inner">
+              <div id="qrcode1"><img :src="item.base46MaD"  :alt="item.serialNumber"></div>
+              <div class="order-number">{{item.serialNumber}}</div>
+            </div>
+          </div>
+        </div>
       </div>
     </div>
   </div>
 </template>
 
 <script>
-import {flowCardList} from "@/api/amichi/planTask/planTaskDetails.js";
+import {listInfoRkK} from "@/api/amichi/planTask/planTaskDetails.js";
 
 export default {
   name: "rkadyPrint",
@@ -81,7 +91,7 @@ export default {
 
     //渲染表格内容
     async flowCardListApi(){
-      let res = await flowCardList(this.queryParams)
+      let res = await listInfoRkK(this.queryParams)
       if (res.code == 200) {
         this.listDate = res.rows;
         this.total = res.total;
@@ -141,206 +151,118 @@ export default {
 ::v-deep .pagination-container {
   margin-top: -10px;
 }
-.bj{
-  //margin-left: 15px;
-  //float: left;
-  //margin-bottom: 15px;
-  border: 1px solid black;
-  height: 130px;
-  //margin-right: 15px;
-  width: 17%;
+body {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+  background-color: #2c2b2b;
 }
-.bzx{
-  width: 454px;
-  max-height: 115px;
-  overflow: hidden;
-  font-size: 21px;
+
+.fj {
+  width: 220mm;  /* 足够放下5个标签的宽度 */
+  margin: 20px auto;
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+  justify-content: flex-start;
 }
-.bs{
-  height: 115px;
-  min-height: 115px;
+
+.abc {
+  width: 40mm;
+  height: 30mm;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: 15px;
 }
-.bzxsm{
-  width: 180px;
-  max-height: 50px;
-  overflow: hidden;
-  font-size: 21px;
+
+.label-container {
+  width: 38mm;
+  height: 28mm;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  box-sizing: border-box;
+  border: 1px dashed #000;
+  page-break-after: always;
 }
-@media print {
 
-  /* 隐藏页眉页脚 */
-  @page {
-    size: auto;
-    margin: 3mm;
-    margin-top: 5mm;
-    .box{
-      margin-top: 10px;
-    }
-  }
-  html {
-    zoom: 90%; /* 缩放比例设置 */
-  }
-  .noprint {
-    display: none; /* 隐藏打印区域不需要打印的内容 */
-  }
+.content-inner {
+  transform: rotate(270deg);
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 38mm;
+  height: 28mm;
+  position: relative;
 }
-.base{
-  .heg{
-    height: 30px;
-  }
-  .heg td{
-    height: 30px;
-  }
-  .jc{
-    font-weight: bold;
-    font-size: 50px;
-  }
-  .page-break {
-    page-break-after: always;
-    position: relative;
+
+#qrcode1, #qrcode2, #qrcode3, #qrcode4, #qrcode5 {
+  width: 24mm;
+  height: 24mm;
+  margin: 0;
+  position: relative;
+  top: -0.5mm;
+}
+
+.order-number {
+  display: flex;
+  flex-direction: column;
+  font-size: 14px;
+  position: absolute;
+  right: -8mm;
+  top: 50%;
+  transform: translateY(-50%) rotate(90deg);
+  line-height: 1.2;
+  background: white;
+}
+
+@media print {
+  .fj {
+    width: 40mm;
+    margin: 0;
+    gap: 0;
   }
-  .tools {
-    margin-top: 10px;
-    display: flex;
-    justify-content: flex-end;
-    margin-bottom: 10px;
+
+  @page {
+    size: 40mm 30mm;
+    margin: 0;
   }
-  *{
-    //margin: 0 auto;
+
+  body {
+    width: 40mm;
+    margin: 0;
     padding: 0;
   }
-  .box{
-    font-size: 21px;
-    width: 800px;
-    margin: 0 auto;
-    /* border: 1px solid red; */
-    display: flex;
-    justify-content: space-evenly;
-    flex-wrap: wrap;
-    margin-bottom: 15px;
-  }
-  td{
-    text-align: center;
 
+  .abc {
+    width: 40mm;
+    height: 30mm;
+    margin: 0;
+    page-break-after: always;
+    overflow: hidden;
+    margin-top: 0px;
   }
-  .left{
-    width: 48%;
-  }
-  .right{
-    width: 48%;
-  }
-  .left-top-table{
-    width: 100%;
-    border: 2px solid black;
-    border-collapse: collapse;
-    color: black;
-    font-weight: bold;
-  }
-  .left-top-table tr td{
-    padding: 4px 4px;
-    word-wrap:break-word;
-    word-break:break-all;
-    color: black;
-    font-weight: bold;
-  }
-  .right-top-table{
-    width: 100%;
-    border: 1px solid black;
-    border-collapse: collapse;
-    color: black;
-    font-weight: bold;
-    color: black;
-    font-weight: bold;
-  }
-  .right-top-table tr td{
-    padding: 4px 4px;
-    word-wrap:break-word;
-    word-break:break-all;
-    color: black;
-    font-weight: bold;
+
+  .label-container {
+    border: 1px dashed #000;
+    transform: scale(0.95);
   }
-  .erweima{
-    width: 100px;
-    height: 100px;;
-    background-color: red;
-    margin: 0 auto;
+
+  .content-inner {
+    transform: rotate(270deg);
   }
-  .xh{
+
+  .order-number {
+    display: block;
+    position: static;
+    transform: none;
+    margin-top: 2mm;
     text-align: center;
-    width: 100%;
-  }
-  .titleBox{
-    display: flex;
+    font-size: 17px;
+    background: none;
     color: black;
-    width: 100%;
-    height: 120px;
     font-weight: bold;
   }
-
-  .left-top-table .titleBox .xh{
-    position: relative;
-  }
-  .left-top-table .titleBox .xh span{
-    position: absolute;
-    width: 80px;
-    left: -421px;
-    top: 80px;
-  }
-  .left-top-table .titleBox .time span{
-    position: absolute;
-    left: 290px;
-    top: 75px;
-  }
-  .right-top-table .titleBox .time span{
-    position: absolute;
-    left: 290px;
-    top: 82px;
-  }
-  .titleBox .time span i{
-    font-style: normal;
-  }
-  .titleBox .title{
-    margin-left: 60px;
-    margin-top: 7px;
-    font-family: 'Courier New', Courier, monospace;
-  }
-  .abc{
-    color: rebeccapurple;
-    font-size: 15px;
-    /* word-wrap: break-word; */
-    /* white-space: pre-wrap; */
-  }
-  .right-top-table .titleBox .xh{
-    position: relative;
-  }
-  .right-top-table .titleBox .xh span{
-    position: absolute;
-    width: 80px;
-    left: -424px;
-    top: 80px;
-  }
-
-  .right-top-table .titleBox .time span{
-    position: absolute;
-    left: 290px;
-    top: 82px;
-  }
-  .right-top-table .titleBox .time span{
-    position: absolute;
-    left: 290px;
-    top: 82px;
-  }
-  .left-top-table td{
-    border: 3px solid black;
-  }
-  .right-top-table td{
-    border: 3px solid black;
-  }
-  .right-top-table td{
-    border: 3px solid black;
-  }
-  .right-top-table td{
-    border: 3px solid black;
-  }
 }
 </style>

+ 346 - 0
zkqy-ui/src/views/amichi/print/rkadyPrint3.vue

@@ -0,0 +1,346 @@
+<template>
+  <div>
+    <div class="tools" style="width: 100%;height:80px;margin: 0 auto">
+      <div style="width:800px;height:80px;display: flex; justify-content: space-between; align-items: center;margin: 0 auto">
+        <div style="width: 800px;height: 40px">
+          <pagination
+            v-show="total>0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="flowCardListApi"
+            :page-sizes="[5,10,30]"
+          />
+        </div>
+        <div style="width: 200px;height: 40px">
+          <el-button type="primary" icon="el-icon-search"  size="mini"  v-print="printViewInfo">打印</el-button>
+        </div>
+      </div>
+    </div>
+    <div class="base" id="printView" >
+      <div class="box" style="page-break-after:always;margin-top: 10px;">
+         <div  class="bj" v-for="(item,index) in listDate" style="margin-top: 20px">
+             <div class="erweima"><img :src="item.base46MaD"  alt=""></div>
+             <div class="xh">{{item.serialNumber}}</div>
+         </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {flowCardList} from "@/api/amichi/planTask/planTaskDetails.js";
+
+export default {
+  name: "rkadyPrint",
+  data () {
+    return {
+      queryParams:{
+        pageNum: 1,
+        pageSize: 30,
+        orderNumberList:[],
+      },
+      total:0,
+      listDate:[],
+      dialogVisible: false,
+      msg: "打印",
+      printViewInfo: {
+        id: "printView", //打印区域的唯一的id属性
+        // popTitle: '配置页眉标题', // 页眉文字 (不设置时显示undifined)(页眉页脚可以在打印页面的更多设置的选项中取消勾选)
+        // extraHead: '打印,印刷', // 最左上方的头部文字,附加在head标签上的额外标签,使用逗号分割
+        preview: false, // 是否启动预览模式,默认是false (开启预览模式ture会占满整个屏幕,不建议开启,除非业务需要)
+        // previewTitle: '预览的标题', // 打印预览的标题(预览模式preview为true时才显示)
+        // previewPrintBtnLabel: '预览结束,开始打印', // 打印预览的标题下方的按钮文本,点击可进入打印(预览模式preview为true时才显示)
+        zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高
+        previewBeforeOpenCallback (that) { console.log('正在加载预览窗口!'); console.log(that.msg, this) }, // 预览窗口打开之前的callback (预览模式preview为true时才执行) (that可以取到data里的变量值)
+        previewOpenCallback () { console.log('已经加载完预览窗口,预览打开了!') }, // 预览窗口打开时的callback (预览模式preview为true时才执行)
+        beforeOpenCallback () { console.log('开始打印之前!') }, // 开始打印之前的callback
+        openCallback () { console.log('执行打印了!') }, // 调用打印时的callback
+        closeCallback () { console.log('关闭了打印工具!') }, // 关闭打印的callback(无法区分确认or取消)
+        clickMounted () { console.log('点击v-print绑定的按钮了!') },
+        // url: 'http://localhost:8080/', // 打印指定的URL,确保同源策略相同
+        // asyncUrl (reslove) {
+        //   setTimeout(() => {
+        //     reslove('http://localhost:8080/')
+        //   }, 2000)
+        // },
+        standard: '',
+        extarCss: '',
+        isDataLoaded: false,
+      }
+    }
+  },
+  methods: {
+    getNextOrderNumber(index) {
+      if (index < this.listDate.length - 1) {
+        return this.listDate[index + 1];
+      } else {
+        return 0
+      }
+    },
+
+    //渲染表格内容
+    async flowCardListApi(){
+      let res = await flowCardList(this.queryParams)
+      if (res.code == 200) {
+        this.listDate = res.rows;
+        this.total = res.total;
+        this.isDataLoaded = true;
+        this.$nextTick(()=>{
+          this.adjustFontSize();
+          this.adjustFontSizebzxsm()
+        })
+
+      }
+    },
+
+    adjustFontSize() {
+      const element = this.$refs.bzx;
+      if (!element) return; // 如果元素不存在,直接返回
+
+      for (let i=0;i<element.length;i++) {
+        const maxHeight = 115;
+        let currentFontSize = 21;
+        while (element[i].scrollHeight > maxHeight && currentFontSize > 8) {
+          currentFontSize -= 0.5; // 每次减少0.5px
+          element[i].style.fontSize = `${currentFontSize}px`;
+        }
+      }
+      console.log(element[0].style)
+    },
+    adjustFontSizebzxsm() {
+      const element = this.$refs.bzxsm;
+      console.log(element.length)
+      if (!element) return; // 如果元素不存在,直接返回
+      for (let i=0;i<element.length;i++){
+        const maxHeight = 50;
+        let currentFontSize = 21;
+        while (element[i].scrollHeight > maxHeight && currentFontSize > 8) {
+          currentFontSize -= 0.5; // 每次减少0.5px
+          element[i].style.fontSize = `${currentFontSize}px`;
+        }
+      }
+
+      console.log(element[0].style)
+    }
+  },
+  mounted() {
+    // this.adjustFontSize();
+  },
+  created(){
+    // console.log(this.$route.query.orderNumberS)
+    // this.queryParams.orderNumberList =this.$route.query.orderNumberS;
+    this.queryParams.orderNumberList =this.$route.query.orderNumberSTwo;
+    // console.log(this.queryParams.orderNumberList)
+    this.flowCardListApi();
+  },
+}
+
+</script>
+<style media="print" scoped>
+::v-deep .pagination-container {
+  margin-top: -10px;
+}
+.bj{
+  //margin-left: 15px;
+  //float: left;
+  //margin-bottom: 15px;
+  border: 1px solid black;
+  height: 130px;
+  //margin-right: 15px;
+  width: 17%;
+}
+.bzx{
+  width: 454px;
+  max-height: 115px;
+  overflow: hidden;
+  font-size: 21px;
+}
+.bs{
+  height: 115px;
+  min-height: 115px;
+}
+.bzxsm{
+  width: 180px;
+  max-height: 50px;
+  overflow: hidden;
+  font-size: 21px;
+}
+@media print {
+
+  /* 隐藏页眉页脚 */
+  @page {
+    size: auto;
+    margin: 3mm;
+    margin-top: 5mm;
+    .box{
+      margin-top: 10px;
+    }
+  }
+  html {
+    zoom: 90%; /* 缩放比例设置 */
+  }
+  .noprint {
+    display: none; /* 隐藏打印区域不需要打印的内容 */
+  }
+}
+.base{
+  .heg{
+    height: 30px;
+  }
+  .heg td{
+    height: 30px;
+  }
+  .jc{
+    font-weight: bold;
+    font-size: 50px;
+  }
+  .page-break {
+    page-break-after: always;
+    position: relative;
+  }
+  .tools {
+    margin-top: 10px;
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 10px;
+  }
+  *{
+    //margin: 0 auto;
+    padding: 0;
+  }
+  .box{
+    font-size: 21px;
+    width: 800px;
+    margin: 0 auto;
+    /* border: 1px solid red; */
+    display: flex;
+    justify-content: space-evenly;
+    flex-wrap: wrap;
+    margin-bottom: 15px;
+  }
+  td{
+    text-align: center;
+
+  }
+  .left{
+    width: 48%;
+  }
+  .right{
+    width: 48%;
+  }
+  .left-top-table{
+    width: 100%;
+    border: 2px solid black;
+    border-collapse: collapse;
+    color: black;
+    font-weight: bold;
+  }
+  .left-top-table tr td{
+    padding: 4px 4px;
+    word-wrap:break-word;
+    word-break:break-all;
+    color: black;
+    font-weight: bold;
+  }
+  .right-top-table{
+    width: 100%;
+    border: 1px solid black;
+    border-collapse: collapse;
+    color: black;
+    font-weight: bold;
+    color: black;
+    font-weight: bold;
+  }
+  .right-top-table tr td{
+    padding: 4px 4px;
+    word-wrap:break-word;
+    word-break:break-all;
+    color: black;
+    font-weight: bold;
+  }
+  .erweima{
+    width: 100px;
+    height: 100px;;
+    background-color: red;
+    margin: 0 auto;
+  }
+  .xh{
+    text-align: center;
+    width: 100%;
+  }
+  .titleBox{
+    display: flex;
+    color: black;
+    width: 100%;
+    height: 120px;
+    font-weight: bold;
+  }
+
+  .left-top-table .titleBox .xh{
+    position: relative;
+  }
+  .left-top-table .titleBox .xh span{
+    position: absolute;
+    width: 80px;
+    left: -421px;
+    top: 80px;
+  }
+  .left-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 75px;
+  }
+  .right-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 82px;
+  }
+  .titleBox .time span i{
+    font-style: normal;
+  }
+  .titleBox .title{
+    margin-left: 60px;
+    margin-top: 7px;
+    font-family: 'Courier New', Courier, monospace;
+  }
+  .abc{
+    color: rebeccapurple;
+    font-size: 15px;
+    /* word-wrap: break-word; */
+    /* white-space: pre-wrap; */
+  }
+  .right-top-table .titleBox .xh{
+    position: relative;
+  }
+  .right-top-table .titleBox .xh span{
+    position: absolute;
+    width: 80px;
+    left: -424px;
+    top: 80px;
+  }
+
+  .right-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 82px;
+  }
+  .right-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 82px;
+  }
+  .left-top-table td{
+    border: 3px solid black;
+  }
+  .right-top-table td{
+    border: 3px solid black;
+  }
+  .right-top-table td{
+    border: 3px solid black;
+  }
+  .right-top-table td{
+    border: 3px solid black;
+  }
+}
+</style>

+ 331 - 0
zkqy-ui/src/views/amichi/qualityinspectioninformation/bp_inspection/index.vue

@@ -0,0 +1,331 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="订单号" prop="orderNumber">
+        <el-input
+          v-model="queryParams.orderNumber"
+          placeholder="请输入订单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="型号名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入型号名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="不合格原因" prop="causeOfNonconformity">
+        <el-input
+          v-model="queryParams.causeOfNonconformity"
+          placeholder="请输入不合格原因"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="不合格数量" prop="disqualificationNumber">
+        <el-input
+          v-model="queryParams.disqualificationNumber"
+          placeholder="请输入不合格数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="处理情况" prop="handlingSituation">
+        <el-input
+          v-model="queryParams.handlingSituation"
+          placeholder="请输入处理情况"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工号" prop="jobNumber">
+        <el-input
+          v-model="queryParams.jobNumber"
+          placeholder="请输入工号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检验日期" prop="dateOfInspection">
+        <el-input
+          v-model="queryParams.dateOfInspection"
+          placeholder="请输入检验日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:inspection:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:inspection:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:inspection:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:inspection:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="inspectionList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+<!--      <el-table-column label="主键id" align="center" prop="id" />-->
+      <el-table-column label="订单号" align="center" prop="orderNumber" />
+      <el-table-column label="型号名称" align="center" prop="modelName" />
+      <el-table-column label="不合格原因" align="center" prop="causeOfNonconformity" />
+      <el-table-column label="不合格数量" align="center" prop="disqualificationNumber" />
+      <el-table-column label="处理情况" align="center" prop="handlingSituation" />
+      <el-table-column label="工号" align="center" prop="jobNumber" />
+      <el-table-column label="检验日期" align="center" prop="dateOfInspection" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:inspection:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:inspection:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改白胚检验信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="订单号" prop="orderNumber">
+          <el-input v-model="form.orderNumber" placeholder="请输入订单号" />
+        </el-form-item>
+        <el-form-item label="型号名称" prop="modelName">
+          <el-input v-model="form.modelName" placeholder="请输入型号名称" />
+        </el-form-item>
+        <el-form-item label="不合格原因" prop="causeOfNonconformity">
+          <el-input v-model="form.causeOfNonconformity" placeholder="请输入不合格原因" />
+        </el-form-item>
+        <el-form-item label="不合格数量" prop="disqualificationNumber">
+          <el-input v-model="form.disqualificationNumber" placeholder="请输入不合格数量" />
+        </el-form-item>
+        <el-form-item label="处理情况" prop="handlingSituation">
+          <el-input v-model="form.handlingSituation" placeholder="请输入处理情况" />
+        </el-form-item>
+        <el-form-item label="工号" prop="jobNumber">
+          <el-input v-model="form.jobNumber" placeholder="请输入工号" />
+        </el-form-item>
+        <el-form-item label="检验日期" prop="dateOfInspection">
+          <el-input v-model="form.dateOfInspection" placeholder="请输入检验日期" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listInspection, getInspection, delInspection, addInspection, updateInspection } from "@/api/system/inspection";
+
+export default {
+  name: "Inspection",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 白胚检验信息表格数据
+      inspectionList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orderNumber: null,
+        modelName: null,
+        causeOfNonconformity: null,
+        disqualificationNumber: null,
+        handlingSituation: null,
+        jobNumber: null,
+        dateOfInspection: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询白胚检验信息列表 */
+    getList() {
+      this.loading = true;
+      listInspection(this.queryParams).then(response => {
+        this.inspectionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orderNumber: null,
+        modelName: null,
+        causeOfNonconformity: null,
+        disqualificationNumber: null,
+        handlingSituation: null,
+        jobNumber: null,
+        dateOfInspection: null,
+        createTime: null,
+        createBy: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加白胚检验信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInspection(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改白胚检验信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateInspection(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInspection(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除白胚检验信息编号为"' + ids + '"的数据项?').then(function() {
+        return delInspection(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/inspection/export', {
+        ...this.queryParams
+      }, `inspection_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 331 - 0
zkqy-ui/src/views/amichi/qualityinspectioninformation/bp_leavefactory/index.vue

@@ -0,0 +1,331 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="订单号" prop="orderNumber">
+        <el-input
+          v-model="queryParams.orderNumber"
+          placeholder="请输入订单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="型号名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入型号名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="不合格原因" prop="causeOfNonconformity">
+        <el-input
+          v-model="queryParams.causeOfNonconformity"
+          placeholder="请输入不合格原因"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="不合格数量" prop="disqualificationNumber">
+        <el-input
+          v-model="queryParams.disqualificationNumber"
+          placeholder="请输入不合格数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="处理情况" prop="handlingSituation">
+        <el-input
+          v-model="queryParams.handlingSituation"
+          placeholder="请输入处理情况"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工号" prop="jobNumber">
+        <el-input
+          v-model="queryParams.jobNumber"
+          placeholder="请输入工号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检验日期" prop="dateOfInspection">
+        <el-input
+          v-model="queryParams.dateOfInspection"
+          placeholder="请输入检验日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['bpleavefactory:bpleavefactory:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['bpleavefactory:bpleavefactory:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['bpleavefactory:bpleavefactory:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['bpleavefactory:bpleavefactory:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="bpleavefactoryList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="主键id" align="center" prop="id" />
+      <el-table-column label="订单号" align="center" prop="orderNumber" />
+      <el-table-column label="型号名称" align="center" prop="modelName" />
+      <el-table-column label="不合格原因" align="center" prop="causeOfNonconformity" />
+      <el-table-column label="不合格数量" align="center" prop="disqualificationNumber" />
+      <el-table-column label="处理情况" align="center" prop="handlingSituation" />
+      <el-table-column label="工号" align="center" prop="jobNumber" />
+      <el-table-column label="检验日期" align="center" prop="dateOfInspection" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['bpleavefactory:bpleavefactory:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['bpleavefactory:bpleavefactory:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改出厂检验对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="订单号" prop="orderNumber">
+          <el-input v-model="form.orderNumber" placeholder="请输入订单号" />
+        </el-form-item>
+        <el-form-item label="型号名称" prop="modelName">
+          <el-input v-model="form.modelName" placeholder="请输入型号名称" />
+        </el-form-item>
+        <el-form-item label="不合格原因" prop="causeOfNonconformity">
+          <el-input v-model="form.causeOfNonconformity" placeholder="请输入不合格原因" />
+        </el-form-item>
+        <el-form-item label="不合格数量" prop="disqualificationNumber">
+          <el-input v-model="form.disqualificationNumber" placeholder="请输入不合格数量" />
+        </el-form-item>
+        <el-form-item label="处理情况" prop="handlingSituation">
+          <el-input v-model="form.handlingSituation" placeholder="请输入处理情况" />
+        </el-form-item>
+        <el-form-item label="工号" prop="jobNumber">
+          <el-input v-model="form.jobNumber" placeholder="请输入工号" />
+        </el-form-item>
+        <el-form-item label="检验日期" prop="dateOfInspection">
+          <el-input v-model="form.dateOfInspection" placeholder="请输入检验日期" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listBpleavefactory, getBpleavefactory, delBpleavefactory, addBpleavefactory, updateBpleavefactory } from "@/api/bpleavefactory/bpleavefactory";
+
+export default {
+  name: "Bpleavefactory",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 出厂检验表格数据
+      bpleavefactoryList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orderNumber: null,
+        modelName: null,
+        causeOfNonconformity: null,
+        disqualificationNumber: null,
+        handlingSituation: null,
+        jobNumber: null,
+        dateOfInspection: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询出厂检验列表 */
+    getList() {
+      this.loading = true;
+      listBpleavefactory(this.queryParams).then(response => {
+        this.bpleavefactoryList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orderNumber: null,
+        modelName: null,
+        causeOfNonconformity: null,
+        disqualificationNumber: null,
+        handlingSituation: null,
+        jobNumber: null,
+        dateOfInspection: null,
+        createTime: null,
+        createBy: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加出厂检验";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getBpleavefactory(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改出厂检验";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateBpleavefactory(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addBpleavefactory(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除出厂检验编号为"' + ids + '"的数据项?').then(function() {
+        return delBpleavefactory(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('bpleavefactory/bpleavefactory/export', {
+        ...this.queryParams
+      }, `bpleavefactory_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 466 - 0
zkqy-ui/src/views/amichi/qualityinspectioninformation/index.vue

@@ -0,0 +1,466 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="报表名称" prop="reportName">
+        <el-input
+          v-model="queryParams.reportName"
+          placeholder="请输入报表名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检验日期" prop="reportDate">
+        <el-input
+          v-model="queryParams.reportDate"
+          placeholder="请输入检验日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检验员" prop="inspector">
+        <el-input
+          v-model="queryParams.inspector"
+          placeholder="请输入检验员"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="审核人" prop="examine">
+        <el-input
+          v-model="queryParams.examine"
+          placeholder="请输入审核人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['qualityinspectioninformation:qualityinspectioninformation:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['qualityinspectioninformation:qualityinspectioninformation:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['qualityinspectioninformation:qualityinspectioninformation:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['qualityinspectioninformation:qualityinspectioninformation:export']"
+        >导出</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['qualityinspectioninformation:qualityinspectioninformation:export']"
+        >导入</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+
+    </el-row>
+    <el-row :gutter="10" class="mb8">
+      <el-radio-group v-model="queryParams.manufacturingProcess" style="float: right" @change="handleQuery">
+<!--        <el-radio-button label="全部">全部</el-radio-button>-->
+        <el-radio-button label="来料检验">来料检验</el-radio-button>
+        <el-radio-button label="白胚检验">白胚检验</el-radio-button>
+        <el-radio-button label="出厂检验">出厂检验</el-radio-button>
+      </el-radio-group>
+    </el-row>
+    <el-table v-loading="loading" :data="qualityinspectioninformationList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+<!--      <el-table-column label="序号" align="center" prop="id" />-->
+      <el-table-column label="制程" align="center" prop="manufacturingProcess" />
+<!--      <el-table-column label="类型" align="center" prop="type" />-->
+      <el-table-column label="报表名称" align="center" prop="reportName" />
+      <el-table-column label="检验日期" align="center" prop="reportDate" />
+      <el-table-column label="检验员" align="center" prop="inspector" />
+      <el-table-column label="审核人" align="center" prop="examine" />
+
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='来料检验'" label="一次不合格批次" align="center" prop="jlOneFailedBatch" />-->
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='来料检验'" label="报检总批次" align="center" prop="jlTotalBatchForInspection" />-->
+<!--      <el-table-column  v-show="queryParams.manufacturingProcess=='来料检验'" label="废品/退换货数量" align="center" prop="jlQuantityOfRejectsReturns" />-->
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='来料检验'" label="本月合格率批次" align="center" prop="jlQualifiedRateOfTheMonth" />-->
+
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='白胚检验'" label="一次不合格数" align="center" prop="bpNumberOfFailures" />-->
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='白胚检验'" label="报废数量" align="center" prop="bpScrapQuantity" />-->
+<!--      <el-table-column  v-show="queryParams.manufacturingProcess=='白胚检验'" label="本月总数" align="center" prop="bpTotalForThe_month" />-->
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='白胚检验'" label="本月合格率" align="center" prop="bpPassRateThisMonth" />-->
+
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='出厂检验'" label="一次不合格数" align="center" prop="ccNumberOfFailures" />-->
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='出厂检验'" label="报废数量" align="center" prop="ccScrapQuantity" />-->
+<!--      <el-table-column  v-show="queryParams.manufacturingProcess=='出厂检验'" label="本月总数" align="center" prop="ccTotalForTheMonth" />-->
+<!--      <el-table-column v-show="queryParams.manufacturingProcess=='出厂检验'" label="本月合格率" align="center" prop="ccPassRateThisMonth" />-->
+
+      <template>
+          <el-table-column
+            v-for="(column, index) in tableColumns"
+            :key="index"
+            :label="column.label"
+            :align="column.align"
+            :prop="column.prop">
+          </el-table-column>
+      </template>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
+            <el-button type="warning">
+              操作<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item  icon="el-icon-edit"  command="handleUpdate">修改</el-dropdown-item>
+              <el-dropdown-item  icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改质检信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="制程" prop="manufacturingProcess">
+          <el-input v-model="form.manufacturingProcess" placeholder="请输入制程" />
+        </el-form-item>
+        <el-form-item label="报表名称" prop="reportName">
+          <el-input v-model="form.reportName" placeholder="请输入报表名称" />
+        </el-form-item>
+        <el-form-item label="检验日期" prop="reportDate">
+          <el-input v-model="form.reportDate" placeholder="请输入检验日期" />
+        </el-form-item>
+        <el-form-item label="检验员" prop="inspector">
+          <el-input v-model="form.inspector" placeholder="请输入检验员" />
+        </el-form-item>
+        <el-form-item label="审核人" prop="examine">
+          <el-input v-model="form.examine" placeholder="请输入审核人" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+
+    <!-- 质检导入对话框 -->
+    <el-dialog
+      :title="upload.title"
+      :visible.sync="upload.open"
+      width="400px"
+      append-to-body
+    >
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <span>仅允许导入xls、xlsx格式文件。</span>
+<!--          <el-link-->
+<!--            type="primary"-->
+<!--            :underline="false"-->
+<!--            style="font-size: 12px; vertical-align: baseline"-->
+<!--            @click="importTemplate"-->
+<!--          >下载模板-->
+<!--          </el-link>-->
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listQualityinspectioninformation, getQualityinspectioninformation, delQualityinspectioninformation, addQualityinspectioninformation, updateQualityinspectioninformation } from "@/api/amichi/qualityinspectioninformation/qualityinspectioninformation";
+import {getToken} from "@/utils/auth";
+
+export default {
+  name: "Qualityinspectioninformation",
+  data() {
+    return {
+      manufacturingProcess:"来料检验",
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 质检信息表格数据
+      qualityinspectioninformationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        manufacturingProcess: "来料检验",
+        reportName: null,
+        reportDate: null,
+        inspector: null,
+        examine: null
+      },
+      // 质检导入参数
+      upload: {
+        // 是否显示弹出层(质检导入)
+        open: false,
+        // 弹出层标题(质检导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/qualityinspectioninformation/qualityinspectioninformation/importExcelData",
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  computed: {
+    tableColumns() {
+      const columns = [];
+      const process = this.queryParams.manufacturingProcess;
+
+      // 来料检验相关的列
+      if (process === '来料检验') {
+        columns.push(
+          { label: '一次不合格批次', align: 'center', prop: 'jlOneFailedBatch' },
+          { label: '报检总批次', align: 'center', prop: 'jlTotalBatchForInspection' },
+          { label: '废品/退换货数量', align: 'center', prop: 'jlQuantityOfRejectsReturns' },
+          { label: '本月合格率批次', align: 'center', prop: 'jlQualifiedRateOfTheMonth' }
+        );
+      }
+
+      // 白胚检验相关的列
+      if (process === '白胚检验') {
+        columns.push(
+          { label: '一次不合格数', align: 'center', prop: 'bpNumberOfFailures' },
+          { label: '报废数量', align: 'center', prop: 'bpScrapQuantity' },
+          { label: '本月总数', align: 'center', prop: 'bpTotalForTheMonth' },
+          { label: '本月合格率', align: 'center', prop: 'bpPassRateThisMonth' }
+        );
+      }
+
+      // 出厂检验相关的列
+      if (process === '出厂检验') {
+        columns.push(
+          { label: '一次不合格数', align: 'center', prop: 'ccNumberOfFailures' },
+          { label: '报废数量', align: 'center', prop: 'ccScrapQuantity' },
+          { label: '本月总数', align: 'center', prop: 'ccTotalForTheMonth' },
+          { label: '本月合格率', align: 'center', prop: 'ccPassRateThisMonth' }
+        );
+      }
+
+      return columns;
+    }
+  },
+  methods: {
+    //下拉菜单点击事件
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleUpdate":
+          this.handleUpdate(row)
+          break;
+        case "handleDelete":
+          this.handleDelete(row)
+          break;
+        default:
+          break;
+      }
+    },
+    /** 查询质检信息列表 */
+    getList() {
+      this.loading = true;
+      listQualityinspectioninformation(this.queryParams).then(response => {
+        this.qualityinspectioninformationList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        manufacturingProcess: null,
+        reportName: null,
+        reportDate: null,
+        inspector: null,
+        examine: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加质检信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getQualityinspectioninformation(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改质检信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateQualityinspectioninformation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addQualityinspectioninformation(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除质检信息编号为"' + ids + '"的数据项?').then(function() {
+        return delQualityinspectioninformation(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('qualityinspectioninformation/qualityinspectioninformation/export', {
+        ...this.queryParams
+      }, `qualityinspectioninformation_${new Date().getTime()}.xlsx`)
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    /** 导入按钮从按钮操作 */
+    handleImport() {
+        this.upload.title = "质检信息导入";
+        this.upload.open = true;
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+        response.msg +
+        "</div>",
+        "导入结果",
+        { dangerouslyUseHTMLString: true }
+      );
+      this.getList();
+    },
+  }
+};
+</script>

+ 331 - 0
zkqy-ui/src/views/amichi/qualityinspectioninformation/jl_inspection/index.vue

@@ -0,0 +1,331 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="订单号/  数量" prop="orderNumber">
+        <el-input
+          v-model="queryParams.orderNumber"
+          placeholder="请输入订单号/  数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="型号/名称" prop="modelName">
+        <el-input
+          v-model="queryParams.modelName"
+          placeholder="请输入型号/名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="数量" prop="quantity">
+        <el-input
+          v-model="queryParams.quantity"
+          placeholder="请输入数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="不合格原因" prop="causeOfNonconformity">
+        <el-input
+          v-model="queryParams.causeOfNonconformity"
+          placeholder="请输入不合格原因"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="不合格数" prop="disqualificationNumber">
+        <el-input
+          v-model="queryParams.disqualificationNumber"
+          placeholder="请输入不合格数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="处理情况" prop="handlingSituation">
+        <el-input
+          v-model="queryParams.handlingSituation"
+          placeholder="请输入处理情况"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检验日期" prop="dateOfInspection">
+        <el-input
+          v-model="queryParams.dateOfInspection"
+          placeholder="请输入检验日期"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['jl_inspection:inspection:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['jl_inspection:inspection:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['jl_inspection:inspection:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['jl_inspection:inspection:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="inspectionList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="主键" align="center" prop="id" />
+      <el-table-column label="订单号/  数量" align="center" prop="orderNumber" />
+      <el-table-column label="型号/名称" align="center" prop="modelName" />
+      <el-table-column label="数量" align="center" prop="quantity" />
+      <el-table-column label="不合格原因" align="center" prop="causeOfNonconformity" />
+      <el-table-column label="不合格数" align="center" prop="disqualificationNumber" />
+      <el-table-column label="处理情况" align="center" prop="handlingSituation" />
+      <el-table-column label="检验日期" align="center" prop="dateOfInspection" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['jl_inspection:inspection:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['jl_inspection:inspection:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改进料日志详情对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="订单号/  数量" prop="orderNumber">
+          <el-input v-model="form.orderNumber" placeholder="请输入订单号/  数量" />
+        </el-form-item>
+        <el-form-item label="型号/名称" prop="modelName">
+          <el-input v-model="form.modelName" placeholder="请输入型号/名称" />
+        </el-form-item>
+        <el-form-item label="数量" prop="quantity">
+          <el-input v-model="form.quantity" placeholder="请输入数量" />
+        </el-form-item>
+        <el-form-item label="不合格原因" prop="causeOfNonconformity">
+          <el-input v-model="form.causeOfNonconformity" placeholder="请输入不合格原因" />
+        </el-form-item>
+        <el-form-item label="不合格数" prop="disqualificationNumber">
+          <el-input v-model="form.disqualificationNumber" placeholder="请输入不合格数" />
+        </el-form-item>
+        <el-form-item label="处理情况" prop="handlingSituation">
+          <el-input v-model="form.handlingSituation" placeholder="请输入处理情况" />
+        </el-form-item>
+        <el-form-item label="检验日期" prop="dateOfInspection">
+          <el-input v-model="form.dateOfInspection" placeholder="请输入检验日期" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listInspection, getInspection, delInspection, addInspection, updateInspection } from "@/api/jl_inspection/inspection";
+
+export default {
+  name: "Inspection",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 进料日志详情表格数据
+      inspectionList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        orderNumber: null,
+        modelName: null,
+        quantity: null,
+        causeOfNonconformity: null,
+        disqualificationNumber: null,
+        handlingSituation: null,
+        dateOfInspection: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询进料日志详情列表 */
+    getList() {
+      this.loading = true;
+      listInspection(this.queryParams).then(response => {
+        this.inspectionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        orderNumber: null,
+        modelName: null,
+        quantity: null,
+        causeOfNonconformity: null,
+        disqualificationNumber: null,
+        handlingSituation: null,
+        dateOfInspection: null,
+        createTime: null,
+        createBy: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加进料日志详情";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInspection(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改进料日志详情";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateInspection(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInspection(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除进料日志详情编号为"' + ids + '"的数据项?').then(function() {
+        return delInspection(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('jl_inspection/inspection/export', {
+        ...this.queryParams
+      }, `inspection_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 12 - 13
zkqy-ui/src/views/amichi/shopRoom/index.vue

@@ -91,16 +91,15 @@
 <!--        >-->
 <!--      </el-col>-->
 
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="warning"-->
-<!--          plain-->
-<!--          icon="el-icon-download"-->
-<!--          size="mini"-->
-<!--          @click="handleExport"-->
-<!--          v-hasPermi="['system:materialInfo:export']"-->
-<!--        >导出</el-button>-->
-<!--      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+        >导出</el-button>
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -548,9 +547,9 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
-
-      this.download('system/materialInfo/export', {
-        ...this.queryParams
+      this.download('amichi/materialInfo/export', {
+        ...this.queryParams,
+        ids: this.ids
       }, `materialInfo_${new Date().getTime()}.xlsx`)
     }
   }