Browse Source

feat:金蝶数据接口拉取

hmc 8 months ago
parent
commit
e4173ab95c
100 changed files with 11427 additions and 1396 deletions
  1. 8 0
      zkqy-admin/pom.xml
  2. 6 1
      zkqy-admin/src/main/java/com/zkqy/web/ljj.java
  3. 120 0
      zkqy-admin/src/test/java/com/zkqy/Test01.java
  4. 2 0
      zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java
  5. 3 0
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragFormServiceImpl.java
  6. 1 0
      zkqy-fujian-amichi/pom.xml
  7. 121 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BomGroupController.java
  8. 105 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BomVersionDetailController.java
  9. 106 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BomVersionListController.java
  10. 9 16
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionBomsController.java
  11. 28 49
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionBomsDetailsController.java
  12. 2 2
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionPlanningManagementController.java
  13. 118 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/RingScanInformationController.java
  14. 15 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StationInformationController.java
  15. 135 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TerminalInformationController.java
  16. 126 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BomGroup.java
  17. 406 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BomVersionDetail.java
  18. 209 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BomVersionList.java
  19. 164 121
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialInfo.java
  20. 149 192
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/PlanTaskDetails.java
  21. 407 249
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionBoms.java
  22. 331 133
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionBomsDetails.java
  23. 9 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionPlanningManagement.java
  24. 98 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/RingScanInformation.java
  25. 167 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TerminalInformation.java
  26. 17 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/BomGroupVo.java
  27. 37 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/StationProductScanningRingVo.java
  28. 46 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdBomGroupController.java
  29. 27 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdMaterialInfoController.java
  30. 34 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdProductionBomsController.java
  31. 121 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdProductionOrderController.java
  32. 62 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdBomGroupVo.java
  33. 426 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdBomVersionDetailVo.java
  34. 219 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdBomVersionListVo.java
  35. 370 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdMaterialInfoVo.java
  36. 477 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionBomsDetailsVo.java
  37. 429 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionBomsVo.java
  38. 369 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionOrder.java
  39. 78 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/mapper/JdProductionOrderMapper.java
  40. 23 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdBomGroupService.java
  41. 11 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdMaterialInfoService.java
  42. 17 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdProductionBomsService.java
  43. 73 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdProductionOrderService.java
  44. 147 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdBomGroupServiceImpl.java
  45. 75 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdMaterialInfoServiceImpl.java
  46. 127 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionBomsImpl.java
  47. 363 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionOrderServiceImpl.java
  48. 70 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BomGroupMapper.java
  49. 71 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BomVersionDetailMapper.java
  50. 73 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BomVersionListMapper.java
  51. 8 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/MaterialInfoMapper.java
  52. 4 2
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionBomsDetailsMapper.java
  53. 9 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionBomsMapper.java
  54. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/RingScanInformationMapper.java
  55. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/TerminalInformationMapper.java
  56. 71 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBomGroupService.java
  57. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBomVersionDetailService.java
  58. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBomVersionListService.java
  59. 25 26
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionBomsDetailsService.java
  60. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IRingScanInformationService.java
  61. 13 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStationInformationService.java
  62. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/ITerminalInformationService.java
  63. 150 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BomGroupServiceImpl.java
  64. 93 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BomVersionDetailServiceImpl.java
  65. 97 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BomVersionListServiceImpl.java
  66. 1 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialInfoServiceImpl.java
  67. 26 31
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionBomsDetailsServiceImpl.java
  68. 1 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionBomsServiceImpl.java
  69. 14 11
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionPlanningManagementServiceImpl.java
  70. 1 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionTasksServiceImpl.java
  71. 93 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/RingScanInformationServiceImpl.java
  72. 202 16
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java
  73. 11 2
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamPersonnelInformationServiceImpl.java
  74. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TerminalInformationServiceImpl.java
  75. 51 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/QueryUtils.java
  76. 134 0
      zkqy-fujian-amichi/src/main/resources/mapper/BomGroupMapper.xml
  77. 240 0
      zkqy-fujian-amichi/src/main/resources/mapper/BomVersionDetailMapper.xml
  78. 172 0
      zkqy-fujian-amichi/src/main/resources/mapper/BomVersionListMapper.xml
  79. 242 0
      zkqy-fujian-amichi/src/main/resources/mapper/JdProductionOrderMapper.xml
  80. 186 97
      zkqy-fujian-amichi/src/main/resources/mapper/MaterialInfoMapper.xml
  81. 28 44
      zkqy-fujian-amichi/src/main/resources/mapper/PlanTaskDetailsMapper.xml
  82. 225 198
      zkqy-fujian-amichi/src/main/resources/mapper/ProductionBomsDetailsMapper.xml
  83. 143 20
      zkqy-fujian-amichi/src/main/resources/mapper/ProductionBomsMapper.xml
  84. 1 1
      zkqy-fujian-amichi/src/main/resources/mapper/ProductionCardFlowMapper.xml
  85. 12 6
      zkqy-fujian-amichi/src/main/resources/mapper/ProductionPlanningManagementMapper.xml
  86. 71 0
      zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml
  87. 115 0
      zkqy-fujian-amichi/src/main/resources/mapper/TerminalInformationMapper.xml
  88. 19 3
      zkqy-ui/src/api/amichi/BOMList/index.js
  89. 44 0
      zkqy-ui/src/api/amichi/jdProductionOrder/order.js
  90. 1 1
      zkqy-ui/src/api/amichi/productionBoms/details.js
  91. 44 0
      zkqy-ui/src/api/amichi/terminalInformation/terminalInformation.js
  92. 2 0
      zkqy-ui/src/store/modules/permission.js
  93. 4 4
      zkqy-ui/src/utils/print/LaboratoryLabelsPrint100100.js
  94. 78 0
      zkqy-ui/src/views/amichi/BOMList/components/operateTable.vue
  95. 201 0
      zkqy-ui/src/views/amichi/BOMList/components/selsetHeader.vue
  96. 288 112
      zkqy-ui/src/views/amichi/BOMList/index.vue
  97. 707 0
      zkqy-ui/src/views/amichi/BOMList/indexV1.vue
  98. 404 0
      zkqy-ui/src/views/amichi/jdProductionOrder/order/index.vue
  99. 1 1
      zkqy-ui/src/views/amichi/operationInstruction/index.vue
  100. 122 55
      zkqy-ui/src/views/amichi/planTask/salesPlan.vue

+ 8 - 0
zkqy-admin/pom.xml

@@ -50,6 +50,14 @@
             <scope>system</scope>
             <systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
         </dependency>
+        <!-- 达梦驱动包 -->
+        <dependency>
+            <groupId>com.kingdee.bos</groupId>
+            <artifactId>webapi</artifactId>
+            <version>1.8</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/k3cloud-webapi-sdk8.0.6.jar</systemPath>
+        </dependency>
         <!-- 核心模块-->
         <dependency>
             <groupId>com.zkqy</groupId>

File diff suppressed because it is too large
+ 6 - 1
zkqy-admin/src/main/java/com/zkqy/web/ljj.java


+ 120 - 0
zkqy-admin/src/test/java/com/zkqy/Test01.java

@@ -0,0 +1,120 @@
+package com.zkqy;
+
+
+
+import com.alibaba.fastjson2.JSON;
+import com.google.gson.Gson;
+import com.kingdee.bos.webapi.entity.IdentifyInfo;
+import com.kingdee.bos.webapi.entity.QueryParam;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.zkqy.amichi.domain.RingScanInformation;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.R;
+import org.apache.http.client.HttpClient;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.support.collections.RedisList;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+//@SpringBootTest(classes = ZkqyApplication.class)
+
+public class Test01 {
+
+    @Test
+    public void testA() throws Exception {
+//        K3CloudApi api = new K3CloudApi();
+//        List datacenter = api.getDataCenters();
+//        Gson gson = new Gson();
+//        System.out.printf("或则环境账套信息:%s%n",gson.toJson(datacenter));
+//        System.out.println("ddddd");
+//
+//        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
+//        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
+//        //读取配置,初始化SDK
+//        //请求参数,要求为json字符串
+////        String jsonData = "{\"FormId\":\"PLN_PLANORDER\",\"FieldKeys\":\"FMaterialName,FMaterialId\",\"FilterString\":[],\"OrderString\":\"\",\"TopRowCount\":0,\"StartRow\":0,\"Limit\":2000,\"SubSystemId\":\"\"}";
+////        try {
+////            //调用接口
+////            String resultJson = String.valueOf(api.executeBillQuery(jsonData));
+////            System.out.println("接口返回结果: " + resultJson);
+////        } catch (Exception e) {
+////            System.out.println(e.getMessage());
+////        }
+//        String jsonDdata="{\"FormId\":\"PLN_PLANORDER\"}";
+//        String s = api.queryBusinessInfo(jsonDdata);
+//        System.out.println(s);
+        List<RingScanInformation> ringScanInformations=new ArrayList<>();
+
+        RingScanInformation scanInformation=new RingScanInformation();
+        scanInformation.setContentInformation("dddd");
+        scanInformation.setDeviceName("ddddd");
+        scanInformation.setId(1L);
+        scanInformation.setDeviceNumber("0001");
+        ringScanInformations.add(scanInformation);
+        AjaxResult success = AjaxResult.success(ringScanInformations);
+        String jsonString = JSON.toJSONString(success);
+        Map map = JSON.parseObject(jsonString, Map.class);
+        List<RingScanInformation> lists = JSON
+                .parseArray(map.get("data").toString(), RingScanInformation.class);
+        for (RingScanInformation list : lists) {
+            System.out.println(list);
+        }
+
+    }
+
+
+    @Test
+    public  void  test02() throws Exception {
+        String s="MO051961";
+        //2、大于这个编号的所有订单全部拉取回来
+        //2.1、new金蝶jdk工具类
+        K3CloudApi api = new K3CloudApi();
+        //2.2、
+        HashMap<String,Object > stringHashMap=new HashMap();
+        stringHashMap.put("FormId","PRD_MO");
+        List<String> stringList=new ArrayList<>();
+        stringList.add("FBillNo");
+        stringList.add("FBillType");
+        stringList.add("FDate");
+        stringList.add("FDocumentStatus");
+        stringList.add("FProductType");
+        stringList.add("FMaterialId");
+        stringList.add("FWorkShopID0");
+        stringList.add("FQty");
+        stringList.add("FStatus");
+        stringList.add("FSaleOrderNo");
+        stringList.add("FPickMtrlStatus");
+        stringHashMap.put("FieldKeys",stringList.stream().collect(Collectors.joining(",")));
+        HashMap gl=new HashMap();
+        gl.put("FieldName","FBillNo");
+        gl.put("Compare","72");
+        gl.put("Value",s);
+        gl.put("Left","");
+        gl.put("Right","");
+        gl.put("Logic","0");
+        List<Map> mapList=new ArrayList<>();
+        mapList.add(gl);
+        stringHashMap.put("FilterString",mapList);
+        stringHashMap.put("OrderString","");
+        stringHashMap.put("TopRowCount",0);
+        stringHashMap.put("StartRow",0);
+        stringHashMap.put("Limit",2000);
+        stringHashMap.put("SubSystemId","");
+        String jsonString = JSON.toJSONString(stringHashMap);
+        System.out.println(jsonString);
+        try {
+            String resultJson = String.valueOf(api.executeBillQuery(jsonString));
+            System.out.println(resultJson);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
+
+
+

+ 2 - 0
zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java

@@ -2,6 +2,7 @@ package com.zkqy.business.controller;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.TypeReference;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.zkqy.business.entity.DragForm;
@@ -27,6 +28,7 @@ import com.zkqy.execution.produce.dispersed.service.IBpmExecuteProcessService;
 import com.zkqy.execution.produce.dispersed.service.ICommonService;
 import com.zkqy.execution.produce.dispersed.service.IDragFormGroupService;
 import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.apache.tools.ant.taskdefs.Sleep;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 3 - 0
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragFormServiceImpl.java

@@ -3,6 +3,8 @@ package com.zkqy.business.service.impl;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
 import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.utils.DateUtils;
@@ -65,6 +67,7 @@ public class DragFormServiceImpl implements IDragFormService {
      */
     @Override
     public List<DragForm> selectDragFormList(DragForm dragForm) {
+        JsonObject jsonObject = new JsonObject();
         return dragFormMapper.selectDragFormList(dragForm);
     }
 

+ 1 - 0
zkqy-fujian-amichi/pom.xml

@@ -43,5 +43,6 @@
             <version>3.8.5</version>
             <scope>test</scope>
         </dependency>
+
     </dependencies>
 </project>

+ 121 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BomGroupController.java

@@ -0,0 +1,121 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.BomGroupVo;
+import com.zkqy.amichi.service.IBomGroupService;
+import com.zkqy.common.annotation.Anonymous;
+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.BomGroup;
+
+/**
+ * BOM分组信息Controller
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+@RestController
+@RequestMapping("/bomGroup/group")
+public class BomGroupController extends BaseController
+{
+
+    @Autowired
+    private IBomGroupService bomGroupService;
+
+    /**
+     * 查询BOM分组信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('bomGroup:group:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BomGroup bomGroup)
+    {
+        startPage();
+        List<BomGroup> list = bomGroupService.selectBomGroupList(bomGroup);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询BOM分组信息列表
+     */
+//    @PreAuthorize("@ss.hasPermi('bomGroup:group:list')")
+    @Anonymous
+    @GetMapping("/listTree")
+    public AjaxResult listTree(BomGroup bomGroup)
+    {
+        List<BomGroupVo> list = bomGroupService.selectBomGroupListTree();
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 导出BOM分组信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('bomGroup:group:export')")
+    @Log(title = "BOM分组信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BomGroup bomGroup)
+    {
+        List<BomGroup> list = bomGroupService.selectBomGroupList(bomGroup);
+        ExcelUtil<BomGroup> util = new ExcelUtil<BomGroup>(BomGroup.class);
+        util.exportExcel(response, list, "BOM分组信息数据");
+    }
+
+    /**
+     * 获取BOM分组信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomGroup:group:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bomGroupService.selectBomGroupById(id));
+    }
+
+    /**
+     * 新增BOM分组信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomGroup:group:add')")
+    @Log(title = "BOM分组信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BomGroup bomGroup)
+    {
+        return toAjax(bomGroupService.insertBomGroup(bomGroup));
+    }
+
+    /**
+     * 修改BOM分组信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomGroup:group:edit')")
+    @Log(title = "BOM分组信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BomGroup bomGroup)
+    {
+        return toAjax(bomGroupService.updateBomGroup(bomGroup));
+    }
+
+    /**
+     * 删除BOM分组信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomGroup:group:remove')")
+    @Log(title = "BOM分组信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(bomGroupService.deleteBomGroupByIds(ids));
+    }
+
+}

+ 105 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BomVersionDetailController.java

@@ -0,0 +1,105 @@
+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.BomVersionDetail;
+import com.zkqy.amichi.service.IBomVersionDetailService;
+
+/**
+ * bom明细Controller
+ * 
+ * @author ruoyi
+ * @date 2024-10-15
+ */
+@RestController
+@RequestMapping("/bomVersiondetail/detail")
+public class BomVersionDetailController extends BaseController
+{
+    @Autowired
+    private IBomVersionDetailService bomVersionDetailService;
+
+    /**
+     * 查询bom明细列表
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersiondetail:detail:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BomVersionDetail bomVersionDetail)
+    {
+        startPage();
+        List<BomVersionDetail> list = bomVersionDetailService.selectBomVersionDetailList(bomVersionDetail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出bom明细列表
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersiondetail:detail:export')")
+    @Log(title = "bom明细", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BomVersionDetail bomVersionDetail)
+    {
+        List<BomVersionDetail> list = bomVersionDetailService.selectBomVersionDetailList(bomVersionDetail);
+        ExcelUtil<BomVersionDetail> util = new ExcelUtil<BomVersionDetail>(BomVersionDetail.class);
+        util.exportExcel(response, list, "bom明细数据");
+    }
+
+    /**
+     * 获取bom明细详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersiondetail:detail:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bomVersionDetailService.selectBomVersionDetailById(id));
+    }
+
+    /**
+     * 新增bom明细
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersiondetail:detail:add')")
+    @Log(title = "bom明细", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BomVersionDetail bomVersionDetail)
+    {
+        return toAjax(bomVersionDetailService.insertBomVersionDetail(bomVersionDetail));
+    }
+
+    /**
+     * 修改bom明细
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersiondetail:detail:edit')")
+    @Log(title = "bom明细", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BomVersionDetail bomVersionDetail)
+    {
+        return toAjax(bomVersionDetailService.updateBomVersionDetail(bomVersionDetail));
+    }
+
+    /**
+     * 删除bom明细
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersiondetail:detail:remove')")
+    @Log(title = "bom明细", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(bomVersionDetailService.deleteBomVersionDetailByIds(ids));
+    }
+}

+ 106 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/BomVersionListController.java

@@ -0,0 +1,106 @@
+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.BomVersionList;
+import com.zkqy.amichi.service.IBomVersionListService;
+
+
+/**
+ * BOM版本信息Controller
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+@RestController
+@RequestMapping("/bomVersionList/list")
+public class BomVersionListController extends BaseController
+{
+    @Autowired
+    private IBomVersionListService bomVersionListService;
+
+    /**
+     * 查询BOM版本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersionList:list:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BomVersionList bomVersionList)
+    {
+        startPage();
+        List<BomVersionList> list = bomVersionListService.selectBomVersionListList(bomVersionList);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出BOM版本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersionList:list:export')")
+    @Log(title = "BOM版本信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BomVersionList bomVersionList)
+    {
+        List<BomVersionList> list = bomVersionListService.selectBomVersionListList(bomVersionList);
+        ExcelUtil<BomVersionList> util = new ExcelUtil<BomVersionList>(BomVersionList.class);
+        util.exportExcel(response, list, "BOM版本信息数据");
+    }
+
+    /**
+     * 获取BOM版本信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersionList:list:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bomVersionListService.selectBomVersionListById(id));
+    }
+
+    /**
+     * 新增BOM版本信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersionList:list:add')")
+    @Log(title = "BOM版本信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BomVersionList bomVersionList)
+    {
+        return toAjax(bomVersionListService.insertBomVersionList(bomVersionList));
+    }
+
+    /**
+     * 修改BOM版本信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersionList:list:edit')")
+    @Log(title = "BOM版本信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BomVersionList bomVersionList)
+    {
+        return toAjax(bomVersionListService.updateBomVersionList(bomVersionList));
+    }
+
+    /**
+     * 删除BOM版本信息
+     */
+    @PreAuthorize("@ss.hasPermi('bomVersionList:list:remove')")
+    @Log(title = "BOM版本信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(bomVersionListService.deleteBomVersionListByIds(ids));
+    }
+}

+ 9 - 16
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionBomsController.java

@@ -33,17 +33,17 @@ import com.zkqy.common.core.page.TableDataInfo;
 @RestController
 @RequestMapping("/amichi/productionBoms")
 @Api(value = "/amichi/boms", description = "生产用料清单-接口")
-public class ProductionBomsController extends BaseController
-{
+public class ProductionBomsController extends BaseController {
+
+
     @Autowired
     private IProductionBomsService productionBomsService;
 
     /**
      * 查询生产用料清单列表
      */
-    //@PreAuthorize("@ss.hasPermi('amichi:boms:list')")
+    @PreAuthorize("@ss.hasPermi('productionBoms:boms:list')")
     @GetMapping("/list")
-    @ApiOperation(value = "查询生产用料清单列表")
     public TableDataInfo list(ProductionBoms productionBoms)
     {
         startPage();
@@ -54,10 +54,9 @@ public class ProductionBomsController extends BaseController
     /**
      * 导出生产用料清单列表
      */
-    @PreAuthorize("@ss.hasPermi('amichi:boms:export')")
+    @PreAuthorize("@ss.hasPermi('productionBoms:boms:export')")
     @Log(title = "生产用料清单", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    @ApiOperation(value = "导出生产用料清单列表")
     public void export(HttpServletResponse response, ProductionBoms productionBoms)
     {
         List<ProductionBoms> list = productionBomsService.selectProductionBomsList(productionBoms);
@@ -68,9 +67,8 @@ public class ProductionBomsController extends BaseController
     /**
      * 获取生产用料清单详细信息
      */
-    @PreAuthorize("@ss.hasPermi('amichi:boms:query')")
+    @PreAuthorize("@ss.hasPermi('productionBoms:boms:query')")
     @GetMapping(value = "/{id}")
-    @ApiOperation(value = "获取生产用料清单详细信息")
     public AjaxResult getInfo(@PathVariable("id") Long id)
     {
         return success(productionBomsService.selectProductionBomsById(id));
@@ -79,24 +77,20 @@ public class ProductionBomsController extends BaseController
     /**
      * 新增生产用料清单
      */
-    @PreAuthorize("@ss.hasPermi('amichi:boms:add')")
+    @PreAuthorize("@ss.hasPermi('productionBoms:boms:add')")
     @Log(title = "生产用料清单", businessType = BusinessType.INSERT)
     @PostMapping
-    @ApiOperation(value = "新增生产用料清单")
     public AjaxResult add(@RequestBody ProductionBoms productionBoms)
     {
         return toAjax(productionBomsService.insertProductionBoms(productionBoms));
     }
 
-
-
     /**
      * 修改生产用料清单
      */
-    @PreAuthorize("@ss.hasPermi('amichi:boms:edit')")
+    @PreAuthorize("@ss.hasPermi('productionBoms:boms:edit')")
     @Log(title = "生产用料清单", businessType = BusinessType.UPDATE)
     @PutMapping
-    @ApiOperation(value = "修改生产用料清单")
     public AjaxResult edit(@RequestBody ProductionBoms productionBoms)
     {
         return toAjax(productionBomsService.updateProductionBoms(productionBoms));
@@ -105,10 +99,9 @@ public class ProductionBomsController extends BaseController
     /**
      * 删除生产用料清单
      */
-    @PreAuthorize("@ss.hasPermi('amichi:boms:remove')")
+    @PreAuthorize("@ss.hasPermi('productionBoms:boms:remove')")
     @Log(title = "生产用料清单", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
-    @ApiOperation(value = "删除生产用料清单")
     public AjaxResult remove(@PathVariable Long[] ids)
     {
         return toAjax(productionBomsService.deleteProductionBomsByIds(ids));

+ 28 - 49
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionBomsDetailsController.java

@@ -3,9 +3,12 @@ package com.zkqy.amichi.controller;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
-import com.zkqy.amichi.domain.ProductionBomsDetails;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+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;
@@ -16,34 +19,26 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.zkqy.common.annotation.Log;
-import com.zkqy.common.core.controller.BaseController;
-import com.zkqy.common.core.domain.AjaxResult;
-import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.ProductionBomsDetails;
 import com.zkqy.amichi.service.IProductionBomsDetailsService;
-import com.zkqy.common.utils.poi.ExcelUtil;
-import com.zkqy.common.core.page.TableDataInfo;
 
 /**
- * 生产用料清单详细Controller
- *
- * @author zkqy
- * @date 2024-07-18
+ * bom明细Controller
+ * @author ruoyi
+ * @date 2024-10-16
  */
 @RestController
-@RequestMapping("/amichi/productionBomsDetails")
-@Api(value = "/amichi/details", description = "生产用料清单详细-接口")
+@RequestMapping("/amichi/productionBomsDetails/details")
 public class ProductionBomsDetailsController extends BaseController
 {
     @Autowired
     private IProductionBomsDetailsService productionBomsDetailsService;
 
     /**
-     * 查询生产用料清单详细列表
+     * 查询bom明细列表
      */
-    //@PreAuthorize("@ss.hasPermi('amichi:details:list')")
+    @PreAuthorize("@ss.hasPermi('productionBomsDetails:details:list')")
     @GetMapping("/list")
-    @ApiOperation(value = "查询生产用料清单详细列表")
     public TableDataInfo list(ProductionBomsDetails productionBomsDetails)
     {
         startPage();
@@ -51,73 +46,57 @@ public class ProductionBomsDetailsController extends BaseController
         return getDataTable(list);
     }
 
-    @GetMapping("/listDetailsByProductionBomId")
-    @ApiOperation(value = "查询生产用料清单详细列表")
-    public AjaxResult listDetailsByProductionBomId(ProductionBomsDetails productionBomsDetails)
-    {
-        startPage();
-        List<ProductionBomsDetails> list = productionBomsDetailsService.selectProductionBomsDetailsList(productionBomsDetails);
-        return AjaxResult.success(list);
-    }
-
-
-
     /**
-     * 导出生产用料清单详细列表
+     * 导出bom明细列表
      */
-    @PreAuthorize("@ss.hasPermi('amichi:details:export')")
-    @Log(title = "生产用料清单详细", businessType = BusinessType.EXPORT)
+    @PreAuthorize("@ss.hasPermi('productionBomsDetails:details:export')")
+    @Log(title = "bom明细", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    @ApiOperation(value = "导出生产用料清单详细列表")
     public void export(HttpServletResponse response, ProductionBomsDetails productionBomsDetails)
     {
         List<ProductionBomsDetails> list = productionBomsDetailsService.selectProductionBomsDetailsList(productionBomsDetails);
         ExcelUtil<ProductionBomsDetails> util = new ExcelUtil<ProductionBomsDetails>(ProductionBomsDetails.class);
-        util.exportExcel(response, list, "生产用料清单详细数据");
+        util.exportExcel(response, list, "bom明细数据");
     }
 
     /**
-     * 获取生产用料清单详细详细信息
+     * 获取bom明细详细信息
      */
-    @PreAuthorize("@ss.hasPermi('amichi:details:query')")
+    @PreAuthorize("@ss.hasPermi('productionBomsDetails:details:query')")
     @GetMapping(value = "/{id}")
-    @ApiOperation(value = "获取生产用料清单详细详细信息")
     public AjaxResult getInfo(@PathVariable("id") Long id)
     {
         return success(productionBomsDetailsService.selectProductionBomsDetailsById(id));
     }
 
     /**
-     * 新增生产用料清单详
+     * 新增bom明
      */
-    @PreAuthorize("@ss.hasPermi('amichi:details:add')")
-    @Log(title = "生产用料清单详细", businessType = BusinessType.INSERT)
+    @PreAuthorize("@ss.hasPermi('productionBomsDetails:details:add')")
+    @Log(title = "bom明细", businessType = BusinessType.INSERT)
     @PostMapping
-    @ApiOperation(value = "新增生产用料清单详细")
     public AjaxResult add(@RequestBody ProductionBomsDetails productionBomsDetails)
     {
         return toAjax(productionBomsDetailsService.insertProductionBomsDetails(productionBomsDetails));
     }
 
     /**
-     * 修改生产用料清单详
+     * 修改bom明
      */
-    @PreAuthorize("@ss.hasPermi('amichi:details:edit')")
-    @Log(title = "生产用料清单详细", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('productionBomsDetails:details:edit')")
+    @Log(title = "bom明细", businessType = BusinessType.UPDATE)
     @PutMapping
-    @ApiOperation(value = "修改生产用料清单详细")
     public AjaxResult edit(@RequestBody ProductionBomsDetails productionBomsDetails)
     {
         return toAjax(productionBomsDetailsService.updateProductionBomsDetails(productionBomsDetails));
     }
 
     /**
-     * 删除生产用料清单详
+     * 删除bom明
      */
-    @PreAuthorize("@ss.hasPermi('amichi:details:remove')")
-    @Log(title = "生产用料清单详细", businessType = BusinessType.DELETE)
+    @PreAuthorize("@ss.hasPermi('productionBomsDetails:details:remove')")
+    @Log(title = "bom明细", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
-    @ApiOperation(value = "删除生产用料清单详细")
     public AjaxResult remove(@PathVariable Long[] ids)
     {
         return toAjax(productionBomsDetailsService.deleteProductionBomsDetailsByIds(ids));

+ 2 - 2
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProductionPlanningManagementController.java

@@ -117,9 +117,9 @@ public class ProductionPlanningManagementController extends BaseController
      * 查询计划的信息
      */
     //@PreAuthorize("@ss.hasPermi('amichi:exportproductionscheduling:add')")
-    @Log(title = "自动排产", businessType = BusinessType.INSERT)
+    @Log(title = "销售计划信息", businessType = BusinessType.INSERT)
     @PostMapping("/viewPlanList")
-    @ApiOperation(value = "自动排产")
+    @ApiOperation(value = "销售计划信息")
     public TableDataInfo viewPlanList(@RequestBody ProductionPlanningManagement productionPlanningManagement)
     {
         startPage();

+ 118 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/RingScanInformationController.java

@@ -0,0 +1,118 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.service.IRingScanInformationService;
+import com.zkqy.common.annotation.Anonymous;
+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.RingScanInformation;
+
+
+/**
+ * 指环王扫描日志信息Controller
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+@RestController
+@RequestMapping("/amichi/ringScanInformation")
+public class RingScanInformationController extends BaseController
+{
+    @Autowired
+    private IRingScanInformationService ringScanInformationService;
+
+    /**
+     * 查询指环王扫描日志信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(RingScanInformation ringScanInformation)
+    {
+        startPage();
+        List<RingScanInformation> list = ringScanInformationService.selectRingScanInformationList(ringScanInformation);
+        return getDataTable(list);
+    }
+
+
+    //@PreAuthorize("@ss.hasPermi('ringScanInformation:information:list')")
+    @Anonymous
+    @GetMapping("/listAll")
+    public AjaxResult listAll(RingScanInformation ringScanInformation)
+    {
+
+        List<RingScanInformation> list = ringScanInformationService.selectRingScanInformationList(ringScanInformation);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 导出指环王扫描日志信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:export')")
+    @Log(title = "指环王扫描日志信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, RingScanInformation ringScanInformation)
+    {
+        List<RingScanInformation> list = ringScanInformationService.selectRingScanInformationList(ringScanInformation);
+        ExcelUtil<RingScanInformation> util = new ExcelUtil<RingScanInformation>(RingScanInformation.class);
+        util.exportExcel(response, list, "指环王扫描日志信息数据");
+    }
+
+    /**
+     * 获取指环王扫描日志信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(ringScanInformationService.selectRingScanInformationById(id));
+    }
+
+    /**
+     * 新增指环王扫描日志信息
+     */
+    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:add')")
+    @Log(title = "指环王扫描日志信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody RingScanInformation ringScanInformation)
+    {
+        return toAjax(ringScanInformationService.insertRingScanInformation(ringScanInformation));
+    }
+
+    /**
+     * 修改指环王扫描日志信息
+     */
+    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:edit')")
+    @Log(title = "指环王扫描日志信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody RingScanInformation ringScanInformation)
+    {
+        return toAjax(ringScanInformationService.updateRingScanInformation(ringScanInformation));
+    }
+
+    /**
+     * 删除指环王扫描日志信息
+     */
+    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:remove')")
+    @Log(title = "指环王扫描日志信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(ringScanInformationService.deleteRingScanInformationByIds(ids));
+    }
+}

+ 15 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StationInformationController.java

@@ -4,6 +4,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.zkqy.amichi.domain.StationInformation;
+import com.zkqy.amichi.domain.vo.StationProductScanningRingVo;
 import com.zkqy.common.annotation.Anonymous;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -59,8 +60,9 @@ public class StationInformationController extends BaseController
         util.exportExcel(response, list, "工位信息数据");
     }
 
+
     /**
-     * 导出工位信息列表
+     * 扫描工位信息
      */
     @Anonymous
     @PostMapping("/stationProductScanning")
@@ -70,6 +72,18 @@ public class StationInformationController extends BaseController
       return stationInformationService.stationProductScanning(contentString);
     }
 
+    /**
+     * 扫描工位信息
+     */
+    @Anonymous
+    @PostMapping("/stationProductScanningRing")
+    @ApiOperation(value = "指环扫描工位信息")
+    public String stationProductScanningRing(StationProductScanningRingVo stationProductScanningRingVo)
+    {
+        return stationInformationService.stationProductScanningRing(stationProductScanningRingVo);
+    }
+
+
     /**
      * 获取工位信息详细信息
      */

+ 135 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/TerminalInformationController.java

@@ -0,0 +1,135 @@
+package com.zkqy.amichi.controller;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Anonymous;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.TerminalInformation;
+import com.zkqy.amichi.service.ITerminalInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 终端信息Controller
+ *
+ * @author zkqy
+ * @date 2024-10-09
+ */
+@RestController
+@RequestMapping("/amichi/terminalInformation")
+@Api(value = "/amichi/terminalInformation", description = "终端信息-接口")
+public class TerminalInformationController extends BaseController
+{
+    @Autowired
+    private ITerminalInformationService terminalInformationService;
+
+    /**
+     * 查询终端信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:terminalInformation:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询终端信息列表")
+    public TableDataInfo list(TerminalInformation terminalInformation)
+    {
+        startPage();
+        List<TerminalInformation> list = terminalInformationService.selectTerminalInformationList(terminalInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询终端信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:terminalInformation:list')")
+    @GetMapping("/listString")
+    @Anonymous
+    @ApiOperation(value = "查询终端信息列表")
+    public List<String> listString(TerminalInformation terminalInformation)
+    {
+        List<TerminalInformation> list = terminalInformationService.selectTerminalInformationList(terminalInformation);
+        if(list.size()>0){
+            List<String> collect = list.stream().map(TerminalInformation::getStationName).collect(Collectors.toList());
+            return collect;
+        }else {
+            return new ArrayList<>();
+        }
+    }
+
+    /**
+     * 导出终端信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:terminalInformation:export')")
+    @Log(title = "终端信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出终端信息列表")
+    public void export(HttpServletResponse response, TerminalInformation terminalInformation)
+    {
+        List<TerminalInformation> list = terminalInformationService.selectTerminalInformationList(terminalInformation);
+        ExcelUtil<TerminalInformation> util = new ExcelUtil<TerminalInformation>(TerminalInformation.class);
+        util.exportExcel(response, list, "终端信息数据");
+    }
+
+    /**
+     * 获取终端信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:terminalInformation:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取终端信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(terminalInformationService.selectTerminalInformationById(id));
+    }
+
+    /**
+     * 新增终端信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:terminalInformation:add')")
+    @Log(title = "终端信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增终端信息")
+    public AjaxResult add(@RequestBody TerminalInformation terminalInformation)
+    {
+        return toAjax(terminalInformationService.insertTerminalInformation(terminalInformation));
+    }
+
+    /**
+     * 修改终端信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:terminalInformation:edit')")
+    @Log(title = "终端信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改终端信息")
+    public AjaxResult edit(@RequestBody TerminalInformation terminalInformation)
+    {
+        return toAjax(terminalInformationService.updateTerminalInformation(terminalInformation));
+    }
+
+    /**
+     * 删除终端信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:terminalInformation:remove')")
+    @Log(title = "终端信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除终端信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(terminalInformationService.deleteTerminalInformationByIds(ids));
+    }
+}

+ 126 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BomGroup.java

@@ -0,0 +1,126 @@
+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;
+
+
+/**
+ * BOM分组信息对象 bom_group
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+public class BomGroup extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 分组编号 */
+    @Excel(name = "分组编号")
+    private String fNumber;
+
+    /** 分组名称 */
+    @Excel(name = "分组名称")
+    private String fName;
+
+    /** 父级id */
+    @Excel(name = "父级id")
+    private String fParentid;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setfNumber(String fNumber) 
+    {
+        this.fNumber = fNumber;
+    }
+
+    public String getfNumber() 
+    {
+        return fNumber;
+    }
+    public void setfName(String fName) 
+    {
+        this.fName = fName;
+    }
+
+    public String getfName() 
+    {
+        return fName;
+    }
+    public void setfParentid(String fParentid) 
+    {
+        this.fParentid = fParentid;
+    }
+
+    public String getfParentid() 
+    {
+        return fParentid;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fNumber", getfNumber())
+            .append("fName", getfName())
+            .append("fParentid", getfParentid())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .toString();
+    }
+}

+ 406 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BomVersionDetail.java

@@ -0,0 +1,406 @@
+package com.zkqy.amichi.domain;
+
+import java.math.BigDecimal;
+
+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;
+
+
+/**
+ * bom明细对象 bom_version_detail
+ * 
+ * @author ruoyi
+ * @date 2024-10-15
+ */
+public class BomVersionDetail extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+
+    /**
+     * 父项物料编码
+     */
+    private  String parentMaterialCode;
+
+    public String getParentMaterialCode() {
+        return parentMaterialCode;
+    }
+
+    public void setParentMaterialCode(String parentMaterialCode) {
+        this.parentMaterialCode = parentMaterialCode;
+    }
+
+    /** 子项物料编号 */
+    @Excel(name = "子项物料编号")
+    private String fmaterialidchildFnumber;
+
+    /** 子项物料名称 */
+    @Excel(name = "子项物料名称")
+    private String fchilditemname;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String fchilditemmodel;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String fPonpXinghao;
+
+    /** 物料属性 */
+    @Excel(name = "物料属性")
+    private String fitempproperty;
+
+    /** 供应类型 */
+    @Excel(name = "供应类型")
+    private String fsupplytype;
+
+    /** 子项类型 */
+    @Excel(name = "子项类型")
+    private String fmaterialtype;
+
+    /** 作业名称 */
+    @Excel(name = "作业名称")
+    private String fprocessidFname;
+
+    /** 作业编码 */
+    @Excel(name = "作业编码")
+    private String fprocessidFnumber;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String fchildunitidFname;
+
+    /** 用量类型 */
+    @Excel(name = "用量类型")
+    private String fdosagetype;
+
+    /** 分子 */
+    @Excel(name = "分子")
+    private BigDecimal fnumerator;
+
+    /** 分母 */
+    @Excel(name = "分母")
+    private BigDecimal fdenominator;
+
+    /** 固定损耗 */
+    @Excel(name = "固定损耗")
+    private BigDecimal ffixscrapqty;
+
+    /** 变动损耗率 */
+    @Excel(name = "变动损耗率")
+    private BigDecimal fscraprate;
+
+    /** 供应组织id */
+    @Excel(name = "供应组织id")
+    private Long fchildsupplyorgid;
+
+    /** 子项bom版本 */
+    @Excel(name = "子项bom版本")
+    private String fbomidFnumber;
+
+    /** 子项产品模型 */
+    @Excel(name = "子项产品模型")
+    private Long fsubmdlid;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String fmemo;
+
+    /** 发料组织 */
+    @Excel(name = "发料组织")
+    private String fsupplyorg;
+
+    /** 默认发料仓库 */
+    @Excel(name = "默认发料仓库")
+    private Long fstockid;
+
+    /** 发料方式 */
+    @Excel(name = "发料方式")
+    private String fissuetype;
+
+    /** 是否跳层 */
+    @Excel(name = "是否跳层")
+    private Integer fisskip;
+
+    /** 可替换 */
+    @Excel(name = "可替换")
+    private Integer fiscanreplace;
+
+    /** 净需求比例 */
+    @Excel(name = "净需求比例")
+    private BigDecimal fnetdemandrate;
+
+
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setFmaterialidchildFnumber(String fmaterialidchildFnumber) 
+    {
+        this.fmaterialidchildFnumber = fmaterialidchildFnumber;
+    }
+
+    public String getFmaterialidchildFnumber() 
+    {
+        return fmaterialidchildFnumber;
+    }
+    public void setFchilditemname(String fchilditemname) 
+    {
+        this.fchilditemname = fchilditemname;
+    }
+
+    public String getFchilditemname() 
+    {
+        return fchilditemname;
+    }
+    public void setFchilditemmodel(String fchilditemmodel) 
+    {
+        this.fchilditemmodel = fchilditemmodel;
+    }
+
+    public String getFchilditemmodel() 
+    {
+        return fchilditemmodel;
+    }
+    public void setfPonpXinghao(String fPonpXinghao) 
+    {
+        this.fPonpXinghao = fPonpXinghao;
+    }
+
+    public String getfPonpXinghao() 
+    {
+        return fPonpXinghao;
+    }
+    public void setFitempproperty(String fitempproperty) 
+    {
+        this.fitempproperty = fitempproperty;
+    }
+
+    public String getFitempproperty() 
+    {
+        return fitempproperty;
+    }
+    public void setFsupplytype(String fsupplytype) 
+    {
+        this.fsupplytype = fsupplytype;
+    }
+
+    public String getFsupplytype() 
+    {
+        return fsupplytype;
+    }
+    public void setFmaterialtype(String fmaterialtype) 
+    {
+        this.fmaterialtype = fmaterialtype;
+    }
+
+    public String getFmaterialtype() 
+    {
+        return fmaterialtype;
+    }
+    public void setFprocessidFname(String fprocessidFname) 
+    {
+        this.fprocessidFname = fprocessidFname;
+    }
+
+    public String getFprocessidFname() 
+    {
+        return fprocessidFname;
+    }
+    public void setFprocessidFnumber(String fprocessidFnumber) 
+    {
+        this.fprocessidFnumber = fprocessidFnumber;
+    }
+
+    public String getFprocessidFnumber() 
+    {
+        return fprocessidFnumber;
+    }
+    public void setFchildunitidFname(String fchildunitidFname) 
+    {
+        this.fchildunitidFname = fchildunitidFname;
+    }
+
+    public String getFchildunitidFname() 
+    {
+        return fchildunitidFname;
+    }
+    public void setFdosagetype(String fdosagetype) 
+    {
+        this.fdosagetype = fdosagetype;
+    }
+
+    public String getFdosagetype() 
+    {
+        return fdosagetype;
+    }
+    public void setFnumerator(BigDecimal fnumerator) 
+    {
+        this.fnumerator = fnumerator;
+    }
+
+    public BigDecimal getFnumerator() 
+    {
+        return fnumerator;
+    }
+    public void setFdenominator(BigDecimal fdenominator) 
+    {
+        this.fdenominator = fdenominator;
+    }
+
+    public BigDecimal getFdenominator() 
+    {
+        return fdenominator;
+    }
+    public void setFfixscrapqty(BigDecimal ffixscrapqty) 
+    {
+        this.ffixscrapqty = ffixscrapqty;
+    }
+
+    public BigDecimal getFfixscrapqty() 
+    {
+        return ffixscrapqty;
+    }
+    public void setFscraprate(BigDecimal fscraprate) 
+    {
+        this.fscraprate = fscraprate;
+    }
+
+    public BigDecimal getFscraprate() 
+    {
+        return fscraprate;
+    }
+    public void setFchildsupplyorgid(Long fchildsupplyorgid) 
+    {
+        this.fchildsupplyorgid = fchildsupplyorgid;
+    }
+
+    public Long getFchildsupplyorgid() 
+    {
+        return fchildsupplyorgid;
+    }
+    public void setFbomidFnumber(String fbomidFnumber) 
+    {
+        this.fbomidFnumber = fbomidFnumber;
+    }
+
+    public String getFbomidFnumber() 
+    {
+        return fbomidFnumber;
+    }
+    public void setFsubmdlid(Long fsubmdlid) 
+    {
+        this.fsubmdlid = fsubmdlid;
+    }
+
+    public Long getFsubmdlid() 
+    {
+        return fsubmdlid;
+    }
+    public void setFmemo(String fmemo) 
+    {
+        this.fmemo = fmemo;
+    }
+
+    public String getFmemo() 
+    {
+        return fmemo;
+    }
+    public void setFsupplyorg(String fsupplyorg) 
+    {
+        this.fsupplyorg = fsupplyorg;
+    }
+
+    public String getFsupplyorg() 
+    {
+        return fsupplyorg;
+    }
+    public void setFstockid(Long fstockid) 
+    {
+        this.fstockid = fstockid;
+    }
+
+    public Long getFstockid() 
+    {
+        return fstockid;
+    }
+    public void setFissuetype(String fissuetype) 
+    {
+        this.fissuetype = fissuetype;
+    }
+
+    public String getFissuetype() 
+    {
+        return fissuetype;
+    }
+    public void setFisskip(Integer fisskip) 
+    {
+        this.fisskip = fisskip;
+    }
+
+    public Integer getFisskip() 
+    {
+        return fisskip;
+    }
+    public void setFiscanreplace(Integer fiscanreplace) 
+    {
+        this.fiscanreplace = fiscanreplace;
+    }
+
+    public Integer getFiscanreplace() 
+    {
+        return fiscanreplace;
+    }
+    public void setFnetdemandrate(BigDecimal fnetdemandrate) 
+    {
+        this.fnetdemandrate = fnetdemandrate;
+    }
+
+    public BigDecimal getFnetdemandrate() 
+    {
+        return fnetdemandrate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fmaterialidchildFnumber", getFmaterialidchildFnumber())
+            .append("fchilditemname", getFchilditemname())
+            .append("fchilditemmodel", getFchilditemmodel())
+            .append("fPonpXinghao", getfPonpXinghao())
+            .append("fitempproperty", getFitempproperty())
+            .append("fsupplytype", getFsupplytype())
+            .append("fmaterialtype", getFmaterialtype())
+            .append("fprocessidFname", getFprocessidFname())
+            .append("fprocessidFnumber", getFprocessidFnumber())
+            .append("fchildunitidFname", getFchildunitidFname())
+            .append("fdosagetype", getFdosagetype())
+            .append("fnumerator", getFnumerator())
+            .append("fdenominator", getFdenominator())
+            .append("ffixscrapqty", getFfixscrapqty())
+            .append("fscraprate", getFscraprate())
+            .append("fchildsupplyorgid", getFchildsupplyorgid())
+            .append("fbomidFnumber", getFbomidFnumber())
+            .append("fsubmdlid", getFsubmdlid())
+            .append("fmemo", getFmemo())
+            .append("fsupplyorg", getFsupplyorg())
+            .append("fstockid", getFstockid())
+            .append("fissuetype", getFissuetype())
+            .append("fisskip", getFisskip())
+            .append("fiscanreplace", getFiscanreplace())
+            .append("fnetdemandrate", getFnetdemandrate())
+            .toString();
+    }
+}

+ 209 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BomVersionList.java

@@ -0,0 +1,209 @@
+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;
+
+
+/**
+ * BOM版本信息对象 bom_version_list
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+public class BomVersionList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 分组编号 */
+    @Excel(name = "分组编号")
+    private String groupNumber;
+
+    /** bom版本 */
+    @Excel(name = "bom版本")
+    private String fNumber;
+
+    /** 父级id */
+    @Excel(name = "父级id")
+    private String fName;
+
+    /** 分类 */
+    @Excel(name = "分类")
+    private String fBomcategory;
+
+    /** 父项物料编码 */
+    @Excel(name = "父项物料编码")
+    private String fMaterialId;
+
+    /** 父项物料名称 */
+    @Excel(name = "父项物料名称")
+    private String fMaterialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String fMaterialModel;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String fDescription;
+
+    /** 数据状态 */
+    @Excel(name = "数据状态")
+    private String fDocumentStatus;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setGroupNumber(String groupNumber) 
+    {
+        this.groupNumber = groupNumber;
+    }
+
+    public String getGroupNumber() 
+    {
+        return groupNumber;
+    }
+    public void setfNumber(String fNumber) 
+    {
+        this.fNumber = fNumber;
+    }
+
+    public String getfNumber() 
+    {
+        return fNumber;
+    }
+    public void setfName(String fName) 
+    {
+        this.fName = fName;
+    }
+
+    public String getfName() 
+    {
+        return fName;
+    }
+    public void setfBomcategory(String fBomcategory) 
+    {
+        this.fBomcategory = fBomcategory;
+    }
+
+    public String getfBomcategory() 
+    {
+        return fBomcategory;
+    }
+    public void setfMaterialId(String fMaterialId) 
+    {
+        this.fMaterialId = fMaterialId;
+    }
+
+    public String getfMaterialId() 
+    {
+        return fMaterialId;
+    }
+    public void setfMaterialName(String fMaterialName) 
+    {
+        this.fMaterialName = fMaterialName;
+    }
+
+    public String getfMaterialName() 
+    {
+        return fMaterialName;
+    }
+    public void setfMaterialModel(String fMaterialModel) 
+    {
+        this.fMaterialModel = fMaterialModel;
+    }
+
+    public String getfMaterialModel() 
+    {
+        return fMaterialModel;
+    }
+    public void setfDescription(String fDescription) 
+    {
+        this.fDescription = fDescription;
+    }
+
+    public String getfDescription() 
+    {
+        return fDescription;
+    }
+    public void setfDocumentStatus(String fDocumentStatus) 
+    {
+        this.fDocumentStatus = fDocumentStatus;
+    }
+
+    public String getfDocumentStatus() 
+    {
+        return fDocumentStatus;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("groupNumber", getGroupNumber())
+            .append("fNumber", getfNumber())
+            .append("fName", getfName())
+            .append("fBomcategory", getfBomcategory())
+            .append("fMaterialId", getfMaterialId())
+            .append("fMaterialName", getfMaterialName())
+            .append("fMaterialModel", getfMaterialModel())
+            .append("fDescription", getfDescription())
+            .append("fDocumentStatus", getfDocumentStatus())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .toString();
+    }
+}

+ 164 - 121
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialInfo.java

@@ -1,15 +1,16 @@
 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;
-import com.zkqy.common.annotation.Excel;
+
 
 /**
- * 物料信息对象 materialinfo
+ * 物料及时库存对象 materialinfo
  *
- * @author zkqy
- * @date 2024-07-18
+ * @author ruoyi
+ * @date 2024-10-17
  */
 public class MaterialInfo extends BaseEntity
 {
@@ -26,72 +27,84 @@ public class MaterialInfo extends BaseEntity
     @Excel(name = "物料名称")
     private String materialName;
 
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specification;
+
     /** 型号 */
     @Excel(name = "型号")
     private String model;
 
-    /** 规格 */
-    @Excel(name = "规格")
-    private String specification;
+    /** 图号 */
+    @Excel(name = "图号")
+    private String mapNumber;
 
-    /** 单位 */
-    @Excel(name = "库存主单位")
-    private String unit;
+    /** 描述 */
+    @Excel(name = "描述")
+    private String description;
+
+    /** 仓库仓库编码 */
+    @Excel(name = "仓库仓库编码")
+    private String ckNumber;
 
-    /** 属性 0自制 1外购 */
-    @Excel(name = "属性 0自制 1外购")
-    private String attribute;
+    /** 仓库名称 */
+    @Excel(name = "仓库名称")
+    private String ckName;
 
-    /** 发料方式 */
-    @Excel(name = "发料方式")
-    private String issueMethod;
+    /** 批号 */
+    @Excel(name = "批号")
+    private String lotNumber;
+
+    /** 库存主单位 */
+    @Excel(name = "库存主单位")
+    private String unit;
 
-    /** 库存量 */
-    @Excel(name = "库存量(主单位)")
+    /** 库存量(主单位) */
+    @Excel(name = "库存量", readConverterExp = "主=单位")
     private Double stockQuantity;
 
-    /** 创建者id */
-    @Excel(name = "创建者id")
-    private Long createById;
+    /** 可用量(主单位) */
+    @Excel(name = "可用量", readConverterExp = "主=单位")
+    private String availableAmount;
 
-    /** 更新者id */
-    @Excel(name = "更新者id")
-    private Long updateById;
+    /** 库存状态 */
+    @Excel(name = "库存状态")
+    private String stockStatus;
 
-    /** 删除标志(0代表存在 2代表删除) */
-    private String delFlag;
+    /** 货主类型 */
+    @Excel(name = "货主类型")
+    private String ownerType;
 
-    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
-    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
-    private String dataApprovalStatus;
+    /** 货主编码 */
+    @Excel(name = "货主编码")
+    private String ownerNumber;
 
-    /** 流程编号 */
-    @Excel(name = "流程编号")
-    private String processKey;
+    /** 货主名称 */
+    @Excel(name = "货主名称")
+    private String ownerName;
 
-    /** 任务编码 */
-    @Excel(name = "任务编码")
-    private String taskProcessKey;
+    /** 保管者类型 */
+    @Excel(name = "保管者类型")
+    private String custodianType;
 
-    /** 任务节点编码 */
-    @Excel(name = "任务节点编码")
-    private String taskNodeKey;
+    /** 保管者编码 */
+    @Excel(name = "保管者编码")
+    private String custodianCode;
 
-    /** 仓库id */
-    @Excel(name = "仓库名称")
-    private String ckId;
+    /** 保管者名称 */
+    @Excel(name = "保管者名称")
+    private String custodianName;
 
-    /** 图号 */
-    @Excel(name = "图号")
-    private String mapNumber;
+    /** 创建者id  */
+    @Excel(name = "创建者id ")
+    private Long createById;
 
-    /** 描述 */
-    @Excel(name = "描述")
-    private String description;
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
 
-    /** 批号 */
-    @Excel(name = "批号")
-    private String lotNumber;
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
 
     public void setId(Long id)
     {
@@ -120,6 +133,15 @@ public class MaterialInfo extends BaseEntity
     {
         return materialName;
     }
+    public void setSpecification(String specification)
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification()
+    {
+        return specification;
+    }
     public void setModel(String model)
     {
         this.model = model;
@@ -129,41 +151,59 @@ public class MaterialInfo extends BaseEntity
     {
         return model;
     }
-    public void setSpecification(String specification)
+    public void setMapNumber(String mapNumber)
     {
-        this.specification = specification;
+        this.mapNumber = mapNumber;
     }
 
-    public String getSpecification()
+    public String getMapNumber()
     {
-        return specification;
+        return mapNumber;
     }
-    public void setUnit(String unit)
+    public void setDescription(String description)
     {
-        this.unit = unit;
+        this.description = description;
     }
 
-    public String getUnit()
+    public String getDescription()
     {
-        return unit;
+        return description;
     }
-    public void setAttribute(String attribute)
+    public void setCkNumber(String ckNumber)
     {
-        this.attribute = attribute;
+        this.ckNumber = ckNumber;
+    }
+
+    public String getCkNumber()
+    {
+        return ckNumber;
+    }
+    public void setCkName(String ckName)
+    {
+        this.ckName = ckName;
+    }
+
+    public String getCkName()
+    {
+        return ckName;
+    }
+    public void setLotNumber(String lotNumber)
+    {
+        this.lotNumber = lotNumber;
     }
 
-    public String getAttribute()
+    public String getLotNumber()
     {
-        return attribute;
+        return lotNumber;
     }
-    public void setIssueMethod(String issueMethod)
+    public void setUnit(String unit)
     {
-        this.issueMethod = issueMethod;
+        this.unit = unit;
     }
 
-    public String getIssueMethod()
+    public String getUnit()
     {
-        return issueMethod;
+        return unit;
     }
     public void setStockQuantity(Double stockQuantity)
     {
@@ -174,104 +214,104 @@ public class MaterialInfo extends BaseEntity
     {
         return stockQuantity;
     }
-    public void setCreateById(Long createById)
+    public void setAvailableAmount(String availableAmount)
     {
-        this.createById = createById;
+        this.availableAmount = availableAmount;
     }
 
-    public Long getCreateById()
+    public String getAvailableAmount()
     {
-        return createById;
+        return availableAmount;
     }
-    public void setUpdateById(Long updateById)
+    public void setStockStatus(String stockStatus)
     {
-        this.updateById = updateById;
+        this.stockStatus = stockStatus;
     }
 
-    public Long getUpdateById()
+    public String getStockStatus()
     {
-        return updateById;
+        return stockStatus;
     }
-    public void setDelFlag(String delFlag)
+    public void setOwnerType(String ownerType)
     {
-        this.delFlag = delFlag;
+        this.ownerType = ownerType;
     }
 
-    public String getDelFlag()
+    public String getOwnerType()
     {
-        return delFlag;
+        return ownerType;
     }
-    public void setDataApprovalStatus(String dataApprovalStatus)
+    public void setOwnerNumber(String ownerNumber)
     {
-        this.dataApprovalStatus = dataApprovalStatus;
+        this.ownerNumber = ownerNumber;
     }
 
-    public String getDataApprovalStatus()
+    public String getOwnerNumber()
     {
-        return dataApprovalStatus;
+        return ownerNumber;
     }
-    public void setProcessKey(String processKey)
+    public void setOwnerName(String ownerName)
     {
-        this.processKey = processKey;
+        this.ownerName = ownerName;
     }
 
-    public String getProcessKey()
+    public String getOwnerName()
     {
-        return processKey;
+        return ownerName;
     }
-    public void setTaskProcessKey(String taskProcessKey)
+    public void setCustodianType(String custodianType)
     {
-        this.taskProcessKey = taskProcessKey;
+        this.custodianType = custodianType;
     }
 
-    public String getTaskProcessKey()
+    public String getCustodianType()
     {
-        return taskProcessKey;
+        return custodianType;
     }
-    public void setTaskNodeKey(String taskNodeKey)
+    public void setCustodianCode(String custodianCode)
     {
-        this.taskNodeKey = taskNodeKey;
+        this.custodianCode = custodianCode;
     }
 
-    public String getTaskNodeKey()
+    public String getCustodianCode()
     {
-        return taskNodeKey;
+        return custodianCode;
     }
-    public void setCkId(String ckId)
+    public void setCustodianName(String custodianName)
     {
-        this.ckId = ckId;
+        this.custodianName = custodianName;
     }
 
-    public String getCkId()
+    public String getCustodianName()
     {
-        return ckId;
+        return custodianName;
     }
-    public void setMapNumber(String mapNumber)
+    public void setCreateById(Long createById)
     {
-        this.mapNumber = mapNumber;
+        this.createById = createById;
     }
 
-    public String getMapNumber()
+    public Long getCreateById()
     {
-        return mapNumber;
+        return createById;
     }
-    public void setDescription(String description)
+    public void setUpdateById(Long updateById)
     {
-        this.description = description;
+        this.updateById = updateById;
     }
 
-    public String getDescription()
+    public Long getUpdateById()
     {
-        return description;
+        return updateById;
     }
-    public void setLotNumber(String lotNumber)
+    public void setDelFlag(String delFlag)
     {
-        this.lotNumber = lotNumber;
+        this.delFlag = delFlag;
     }
 
-    public String getLotNumber()
+    public String getDelFlag()
     {
-        return lotNumber;
+        return delFlag;
     }
 
     @Override
@@ -280,12 +320,23 @@ public class MaterialInfo extends BaseEntity
                 .append("id", getId())
                 .append("materialCode", getMaterialCode())
                 .append("materialName", getMaterialName())
-                .append("model", getModel())
                 .append("specification", getSpecification())
+                .append("model", getModel())
+                .append("mapNumber", getMapNumber())
+                .append("description", getDescription())
+                .append("ckNumber", getCkNumber())
+                .append("ckName", getCkName())
+                .append("lotNumber", getLotNumber())
                 .append("unit", getUnit())
-                .append("attribute", getAttribute())
-                .append("issueMethod", getIssueMethod())
                 .append("stockQuantity", getStockQuantity())
+                .append("availableAmount", getAvailableAmount())
+                .append("stockStatus", getStockStatus())
+                .append("ownerType", getOwnerType())
+                .append("ownerNumber", getOwnerNumber())
+                .append("ownerName", getOwnerName())
+                .append("custodianType", getCustodianType())
+                .append("custodianCode", getCustodianCode())
+                .append("custodianName", getCustodianName())
                 .append("remark", getRemark())
                 .append("createById", getCreateById())
                 .append("createBy", getCreateBy())
@@ -294,14 +345,6 @@ public class MaterialInfo extends BaseEntity
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
                 .append("delFlag", getDelFlag())
-                .append("dataApprovalStatus", getDataApprovalStatus())
-                .append("processKey", getProcessKey())
-                .append("taskProcessKey", getTaskProcessKey())
-                .append("taskNodeKey", getTaskNodeKey())
-                .append("ckId", getCkId())
-                .append("mapNumber", getMapNumber())
-                .append("description", getDescription())
-                .append("lotNumber", getLotNumber())
                 .toString();
     }
 }

+ 149 - 192
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/PlanTaskDetails.java

@@ -7,7 +7,7 @@ import com.zkqy.common.annotation.Excel;
 
 /**
  * 生产任务单明细对象 plan_task_details
- * 
+ *
  * @author zkqy
  * @date 2024-07-23
  */
@@ -18,53 +18,46 @@ public class PlanTaskDetails extends BaseEntity
     /** 主键 */
     private Long id;
 
-    /** 任务单id关联字段 */
-    @Excel(name = "任务单id关联字段")
-    private String taskId;
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialId;
 
-    /** 规格型号 */
-    @Excel(name = "规格型号")
-    private String model;
+    @Excel(name = "需求单据")
+    private  String  demandDocument;
 
-    /** 铭牌及包装 */
-    @Excel(name = "铭牌及包装")
-    private String nameplate;
+    public String getDemandDocument() {
+        return demandDocument;
+    }
+
+    public void setDemandDocument(String demandDocument) {
+        this.demandDocument = demandDocument;
+    }
 
-    /** 容量 */
-    @Excel(name = "容量")
-    private String capacity;
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
 
-    /** 接口/盘片 */
-    @Excel(name = "接口/盘片")
-    private String interfaceDisk;
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    private String materialName;
 
-    /** 铁心长度(定子/励磁) */
-    @Excel(name = "铁心长度", readConverterExp = "定=子/励磁")
-    private String length;
+    /** 规格型号 */
+    @Excel(name = "物料型号")
+    private String modelNumber;
 
-    /** 电压/频率 */
-    @Excel(name = "电压/频率")
-    private String voltage;
+    /** 物料规格*/
+    @Excel(name = "物料规格")
+    private String specification;
 
-    /** 电磁方案 */
-    @Excel(name = "电磁方案")
-    private String programme;
+    /** 物料单位*/
+    @Excel(name = "物料单位")
+    private String materialUnit;
 
     /** 数量 */
     @Excel(name = "数量")
     private String quantity;
 
-    /** 备用字段1 */
-    @Excel(name = "备用字段1")
-    private String sparea;
-
-    /** 备用字段2 */
-    @Excel(name = "备用字段2")
-    private String spareb;
 
-    /** 备用字段3 */
-    @Excel(name = "备用字段3")
-    private String sparec;
 
     /** 创建者id */
     @Excel(name = "创建者id")
@@ -93,229 +86,193 @@ public class PlanTaskDetails extends BaseEntity
     @Excel(name = "任务节点编码")
     private String taskNodeKey;
 
-    /** 计划id */
-    @Excel(name = "计划id")
-    private Long planId;
+    /** 任务单id关联字段 */
+    @Excel(name = "任务单id关联字段1013记录当前字段废弃了没用")
+    private String taskId;
 
-    public void setId(Long id) 
-    {
-        this.id = id;
-    }
+    private String sparea;
+    private String spareb;
+    private String sparec;
 
-    public Long getId() 
-    {
-        return id;
-    }
-    public void setTaskId(String taskId) 
-    {
-        this.taskId = taskId;
-    }
 
-    public String getTaskId() 
-    {
-        return taskId;
-    }
-    public void setModel(String model) 
-    {
-        this.model = model;
+    public String getSparea() {
+        return sparea;
     }
 
-    public String getModel() 
-    {
-        return model;
-    }
-    public void setNameplate(String nameplate) 
-    {
-        this.nameplate = nameplate;
+    public void setSparea(String sparea) {
+        this.sparea = sparea;
     }
 
-    public String getNameplate() 
-    {
-        return nameplate;
+    public String getSpareb() {
+        return spareb;
     }
-    public void setCapacity(String capacity) 
-    {
-        this.capacity = capacity;
+
+    public void setSpareb(String spareb) {
+        this.spareb = spareb;
     }
 
-    public String getCapacity() 
-    {
-        return capacity;
+    public String getSparec() {
+        return sparec;
     }
-    public void setInterfaceDisk(String interfaceDisk) 
-    {
-        this.interfaceDisk = interfaceDisk;
+
+    public void setSparec(String sparec) {
+        this.sparec = sparec;
     }
 
-    public String getInterfaceDisk() 
-    {
-        return interfaceDisk;
+
+    public Long getId() {
+        return id;
     }
-    public void setLength(String length) 
-    {
-        this.length = length;
+
+    public void setId(Long id) {
+        this.id = id;
     }
 
-    public String getLength() 
-    {
-        return length;
+    public String getMaterialId() {
+        return materialId;
     }
-    public void setVoltage(String voltage) 
-    {
-        this.voltage = voltage;
+
+    public void setMaterialId(String materialId) {
+        this.materialId = materialId;
     }
 
-    public String getVoltage() 
-    {
-        return voltage;
+    public Long getPlanId() {
+        return planId;
     }
-    public void setProgramme(String programme) 
-    {
-        this.programme = programme;
+
+    public void setPlanId(Long planId) {
+        this.planId = planId;
     }
 
-    public String getProgramme() 
-    {
-        return programme;
+    public String getMaterialName() {
+        return materialName;
     }
-    public void setQuantity(String quantity) 
-    {
-        this.quantity = quantity;
+
+    public void setMaterialName(String materialName) {
+        this.materialName = materialName;
     }
 
-    public String getQuantity() 
-    {
-        return quantity;
+    public String getModelNumber() {
+        return modelNumber;
     }
-    public void setSparea(String sparea) 
-    {
-        this.sparea = sparea;
+
+    public void setModelNumber(String modelNumber) {
+        this.modelNumber = modelNumber;
     }
 
-    public String getSparea() 
-    {
-        return sparea;
+    public String getSpecification() {
+        return specification;
     }
-    public void setSpareb(String spareb) 
-    {
-        this.spareb = spareb;
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
     }
 
-    public String getSpareb() 
-    {
-        return spareb;
+    public String getMaterialUnit() {
+        return materialUnit;
     }
-    public void setSparec(String sparec) 
-    {
-        this.sparec = sparec;
+
+    public void setMaterialUnit(String materialUnit) {
+        this.materialUnit = materialUnit;
     }
 
-    public String getSparec() 
-    {
-        return sparec;
+    public String getQuantity() {
+        return quantity;
     }
-    public void setCreateById(Long createById) 
-    {
-        this.createById = createById;
+
+    public void setQuantity(String quantity) {
+        this.quantity = quantity;
     }
 
-    public Long getCreateById() 
-    {
+    @Override
+    public Long getCreateById() {
         return createById;
     }
-    public void setUpdateById(Long updateById) 
-    {
-        this.updateById = updateById;
+
+    @Override
+    public void setCreateById(Long createById) {
+        this.createById = createById;
     }
 
-    public Long getUpdateById() 
-    {
+    @Override
+    public Long getUpdateById() {
         return updateById;
     }
-    public void setDelFlag(String delFlag) 
-    {
-        this.delFlag = delFlag;
+
+    @Override
+    public void setUpdateById(Long updateById) {
+        this.updateById = updateById;
     }
 
-    public String getDelFlag() 
-    {
+    public String getDelFlag() {
         return delFlag;
     }
-    public void setDataApprovalStatus(String dataApprovalStatus) 
-    {
-        this.dataApprovalStatus = dataApprovalStatus;
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
     }
 
-    public String getDataApprovalStatus() 
-    {
+    public String getDataApprovalStatus() {
         return dataApprovalStatus;
     }
-    public void setProcessKey(String processKey) 
-    {
-        this.processKey = processKey;
+
+    public void setDataApprovalStatus(String dataApprovalStatus) {
+        this.dataApprovalStatus = dataApprovalStatus;
     }
 
-    public String getProcessKey() 
-    {
+    public String getProcessKey() {
         return processKey;
     }
-    public void setTaskProcessKey(String taskProcessKey) 
-    {
-        this.taskProcessKey = taskProcessKey;
+
+    public void setProcessKey(String processKey) {
+        this.processKey = processKey;
     }
 
-    public String getTaskProcessKey() 
-    {
+    public String getTaskProcessKey() {
         return taskProcessKey;
     }
-    public void setTaskNodeKey(String taskNodeKey) 
-    {
-        this.taskNodeKey = taskNodeKey;
+
+    public void setTaskProcessKey(String taskProcessKey) {
+        this.taskProcessKey = taskProcessKey;
     }
 
-    public String getTaskNodeKey() 
-    {
+    public String getTaskNodeKey() {
         return taskNodeKey;
     }
-    public void setPlanId(Long planId) 
-    {
-        this.planId = planId;
+
+    public void setTaskNodeKey(String taskNodeKey) {
+        this.taskNodeKey = taskNodeKey;
     }
 
-    public Long getPlanId() 
-    {
-        return planId;
+    public String getTaskId() {
+        return taskId;
     }
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("taskId", getTaskId())
-            .append("model", getModel())
-            .append("nameplate", getNameplate())
-            .append("capacity", getCapacity())
-            .append("interfaceDisk", getInterfaceDisk())
-            .append("length", getLength())
-            .append("voltage", getVoltage())
-            .append("programme", getProgramme())
-            .append("quantity", getQuantity())
-            .append("sparea", getSparea())
-            .append("spareb", getSpareb())
-            .append("sparec", getSparec())
-            .append("remark", getRemark())
-            .append("createById", getCreateById())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateById", getUpdateById())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("delFlag", getDelFlag())
-            .append("dataApprovalStatus", getDataApprovalStatus())
-            .append("processKey", getProcessKey())
-            .append("taskProcessKey", getTaskProcessKey())
-            .append("taskNodeKey", getTaskNodeKey())
-            .append("planId", getPlanId())
-            .toString();
-    }
-}
+        final StringBuffer sb = new StringBuffer("PlanTaskDetails{");
+        sb.append("id=").append(id);
+        sb.append(", materialId='").append(materialId).append('\'');
+        sb.append(", planId=").append(planId);
+        sb.append(", materialName='").append(materialName).append('\'');
+        sb.append(", modelNumber='").append(modelNumber).append('\'');
+        sb.append(", specification='").append(specification).append('\'');
+        sb.append(", materialUnit='").append(materialUnit).append('\'');
+        sb.append(", quantity='").append(quantity).append('\'');
+        sb.append(", createById=").append(createById);
+        sb.append(", updateById=").append(updateById);
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append(", dataApprovalStatus='").append(dataApprovalStatus).append('\'');
+        sb.append(", processKey='").append(processKey).append('\'');
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", taskId='").append(taskId).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+}

+ 407 - 249
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionBoms.java

@@ -1,10 +1,13 @@
 package com.zkqy.amichi.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.zkqy.common.annotation.Excel;
 
+import java.util.Date;
+
 /**
  * 生产用料清单对象 production_boms
  * 
@@ -13,253 +16,408 @@ import com.zkqy.common.annotation.Excel;
  */
 public class ProductionBoms extends BaseEntity
 {
-    private static final long serialVersionUID = 1L;
-
-    /** 主键 */
-    private Long id;
-
-    /** 单据编号 */
-    @Excel(name = "单据编号")
-    private String documentNumber;
-
-    /** 需求单据 */
-    @Excel(name = "需求单据")
-    private String demandDocument;
-
-    /** 产品编码 */
-    @Excel(name = "产品编码")
-    private String productCode;
-
-    /** 产品名称 */
-    @Excel(name = "产品名称")
-    private String productName;
-
-    /** 型号 */
-    @Excel(name = "型号")
-    private String modelNumber;
-
-    /** 规格 */
-    @Excel(name = "规格")
-    private String specification;
-
-    /** 生产订单编号 */
-    @Excel(name = "生产订单编号")
-    private String productionOrderNumber;
-
-    /** 生产订单状态 */
-    @Excel(name = "生产订单状态")
-    private String productionOrderStatus;
-
-    /** 单据状态 */
-    @Excel(name = "单据状态")
-    private String documentStatus;
-
-    /** 创建者id */
-    @Excel(name = "创建者id")
-    private Long createById;
-
-    /** 更新者id */
-    @Excel(name = "更新者id")
-    private Long updateById;
-
-    /** 删除标志(0代表存在 2代表删除) */
-    private String delFlag;
-
-    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
-    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
-    private String dataApprovalStatus;
-
-    /** 流程编号 */
-    @Excel(name = "流程编号")
-    private String processKey;
-
-    /** 任务编码 */
-    @Excel(name = "任务编码")
-    private String taskProcessKey;
-
-    /** 任务节点编码 */
-    @Excel(name = "任务节点编码")
-    private String taskNodeKey;
-
-    public void setId(Long id) 
-    {
-        this.id = id;
-    }
-
-    public Long getId() 
-    {
-        return id;
-    }
-    public void setDocumentNumber(String documentNumber) 
-    {
-        this.documentNumber = documentNumber;
-    }
-
-    public String getDocumentNumber() 
-    {
-        return documentNumber;
-    }
-    public void setDemandDocument(String demandDocument) 
-    {
-        this.demandDocument = demandDocument;
-    }
-
-    public String getDemandDocument() 
-    {
-        return demandDocument;
-    }
-    public void setProductCode(String productCode) 
-    {
-        this.productCode = productCode;
-    }
-
-    public String getProductCode() 
-    {
-        return productCode;
-    }
-    public void setProductName(String productName) 
-    {
-        this.productName = productName;
-    }
-
-    public String getProductName() 
-    {
-        return productName;
-    }
-    public void setModelNumber(String modelNumber) 
-    {
-        this.modelNumber = modelNumber;
-    }
-
-    public String getModelNumber() 
-    {
-        return modelNumber;
-    }
-    public void setSpecification(String specification) 
-    {
-        this.specification = specification;
-    }
-
-    public String getSpecification() 
-    {
-        return specification;
-    }
-    public void setProductionOrderNumber(String productionOrderNumber) 
-    {
-        this.productionOrderNumber = productionOrderNumber;
-    }
-
-    public String getProductionOrderNumber() 
-    {
-        return productionOrderNumber;
-    }
-    public void setProductionOrderStatus(String productionOrderStatus) 
-    {
-        this.productionOrderStatus = productionOrderStatus;
-    }
-
-    public String getProductionOrderStatus() 
-    {
-        return productionOrderStatus;
-    }
-    public void setDocumentStatus(String documentStatus) 
-    {
-        this.documentStatus = documentStatus;
-    }
-
-    public String getDocumentStatus() 
-    {
-        return documentStatus;
-    }
-    public void setCreateById(Long createById) 
-    {
-        this.createById = createById;
-    }
-
-    public Long getCreateById() 
-    {
-        return createById;
-    }
-    public void setUpdateById(Long updateById) 
-    {
-        this.updateById = updateById;
-    }
-
-    public Long getUpdateById() 
-    {
-        return updateById;
-    }
-    public void setDelFlag(String delFlag) 
-    {
-        this.delFlag = delFlag;
-    }
-
-    public String getDelFlag() 
-    {
-        return delFlag;
-    }
-    public void setDataApprovalStatus(String dataApprovalStatus) 
-    {
-        this.dataApprovalStatus = dataApprovalStatus;
-    }
-
-    public String getDataApprovalStatus() 
-    {
-        return dataApprovalStatus;
-    }
-    public void setProcessKey(String processKey) 
-    {
-        this.processKey = processKey;
-    }
-
-    public String getProcessKey() 
-    {
-        return processKey;
-    }
-    public void setTaskProcessKey(String taskProcessKey) 
-    {
-        this.taskProcessKey = taskProcessKey;
-    }
-
-    public String getTaskProcessKey() 
-    {
-        return taskProcessKey;
-    }
-    public void setTaskNodeKey(String taskNodeKey) 
-    {
-        this.taskNodeKey = taskNodeKey;
-    }
-
-    public String getTaskNodeKey() 
-    {
-        return taskNodeKey;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("documentNumber", getDocumentNumber())
-            .append("demandDocument", getDemandDocument())
-            .append("productCode", getProductCode())
-            .append("productName", getProductName())
-            .append("modelNumber", getModelNumber())
-            .append("specification", getSpecification())
-            .append("productionOrderNumber", getProductionOrderNumber())
-            .append("productionOrderStatus", getProductionOrderStatus())
-            .append("documentStatus", getDocumentStatus())
-            .append("remark", getRemark())
-            .append("createById", getCreateById())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateById", getUpdateById())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("delFlag", getDelFlag())
-            .append("dataApprovalStatus", getDataApprovalStatus())
-            .append("processKey", getProcessKey())
-            .append("taskProcessKey", getTaskProcessKey())
-            .append("taskNodeKey", getTaskNodeKey())
-            .toString();
-    }
+        private static final long serialVersionUID = 1L;
+
+        /** 主键 */
+        private Long id;
+
+        /** 单据编号 */
+        @Excel(name = "单据编号")
+        private String documentNumber;
+
+        /** 产品编码 */
+        @Excel(name = "产品编码")
+        private String productCode;
+
+        /** 产品名称 */
+        @Excel(name = "产品名称")
+        private String productName;
+
+        /** 型号 */
+        @Excel(name = "型号")
+        private String modelNumber;
+
+        /** 规格 */
+        @Excel(name = "规格")
+        private String specification;
+
+        /** 需求单据 */
+        @Excel(name = "需求单据")
+        private String demandDocument;
+
+        /** 计划开工时间 */
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @Excel(name = "计划开工时间", width = 30, dateFormat = "yyyy-MM-dd")
+        private Date scheduledStartTime;
+
+        /** 计划完工时间 */
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @Excel(name = "计划完工时间", width = 30, dateFormat = "yyyy-MM-dd")
+        private Date scheduledEndTime;
+
+        /** 生产订单编号 */
+        @Excel(name = "生产订单编号")
+        private String productionOrderNumber;
+
+        /** 生产订单类型 */
+        @Excel(name = "生产订单类型")
+        private String productionOrderType;
+
+        /** 生产订单状态 */
+        @Excel(name = "生产订单状态")
+        private String productionOrderStatus;
+
+        /** 生产订单行号 */
+        @Excel(name = "生产订单行号")
+        private String productionLineNumber;
+
+        /** 生产数量 */
+        @Excel(name = "生产数量")
+        private String productionQuantity;
+
+        /** 生产单位 */
+        @Excel(name = "生产单位")
+        private String productionUnit;
+
+        /** 生产组织 */
+        @Excel(name = "生产组织")
+        private String productionOrganization;
+
+        /** 生产车间 */
+        @Excel(name = "生产车间")
+        private String workshop;
+
+        /** 单据状态 */
+        @Excel(name = "单据状态")
+        private String documentStatus;
+
+        /** 辅助属性 */
+        @Excel(name = "辅助属性")
+        private String auxiliaryAttribute;
+
+        /** 辅助属性 */
+        @Excel(name = "辅助属性")
+        private String bomVersion;
+
+        /** 创建者id */
+        @Excel(name = "创建者id")
+        private Long createById;
+
+        /** 更新者id */
+        @Excel(name = "更新者id")
+        private Long updateById;
+
+        /** 删除标志(0代表存在 2代表删除) */
+        private String delFlag;
+
+        /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+        @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+        private String dataApprovalStatus;
+
+        /** 流程编号 */
+        @Excel(name = "流程编号")
+        private String processKey;
+
+        /** 任务编码 */
+        @Excel(name = "任务编码")
+        private String taskProcessKey;
+
+
+
+        /** 任务节点编码 */
+        @Excel(name = "任务节点编码")
+        private String taskNodeKey;
+
+        @Excel
+        private String tabPosition;
+
+        public String getTabPosition() {
+                return tabPosition;
+        }
+
+        public void setTabPosition(String tabPosition) {
+                this.tabPosition = tabPosition;
+        }
+
+        public void setId(Long id)
+        {
+            this.id = id;
+        }
+
+        public Long getId()
+        {
+            return id;
+        }
+        public void setDocumentNumber(String documentNumber)
+        {
+            this.documentNumber = documentNumber;
+        }
+
+        public String getDocumentNumber()
+        {
+            return documentNumber;
+        }
+        public void setProductCode(String productCode)
+        {
+            this.productCode = productCode;
+        }
+
+        public String getProductCode()
+        {
+            return productCode;
+        }
+        public void setProductName(String productName)
+        {
+            this.productName = productName;
+        }
+
+        public String getProductName()
+        {
+            return productName;
+        }
+        public void setModelNumber(String modelNumber)
+        {
+            this.modelNumber = modelNumber;
+        }
+
+        public String getModelNumber()
+        {
+            return modelNumber;
+        }
+        public void setSpecification(String specification)
+        {
+            this.specification = specification;
+        }
+
+        public String getSpecification()
+        {
+            return specification;
+        }
+        public void setDemandDocument(String demandDocument)
+        {
+            this.demandDocument = demandDocument;
+        }
+
+        public String getDemandDocument()
+        {
+            return demandDocument;
+        }
+        public void setScheduledStartTime(Date scheduledStartTime)
+        {
+            this.scheduledStartTime = scheduledStartTime;
+        }
+
+        public Date getScheduledStartTime()
+        {
+            return scheduledStartTime;
+        }
+        public void setScheduledEndTime(Date scheduledEndTime)
+        {
+            this.scheduledEndTime = scheduledEndTime;
+        }
+
+        public Date getScheduledEndTime()
+        {
+            return scheduledEndTime;
+        }
+        public void setProductionOrderNumber(String productionOrderNumber)
+        {
+            this.productionOrderNumber = productionOrderNumber;
+        }
+
+        public String getProductionOrderNumber()
+        {
+            return productionOrderNumber;
+        }
+        public void setProductionOrderType(String productionOrderType)
+        {
+            this.productionOrderType = productionOrderType;
+        }
+
+        public String getProductionOrderType()
+        {
+            return productionOrderType;
+        }
+        public void setProductionOrderStatus(String productionOrderStatus)
+        {
+            this.productionOrderStatus = productionOrderStatus;
+        }
+
+        public String getProductionOrderStatus()
+        {
+            return productionOrderStatus;
+        }
+        public void setProductionLineNumber(String productionLineNumber)
+        {
+            this.productionLineNumber = productionLineNumber;
+        }
+
+        public String getProductionLineNumber()
+        {
+            return productionLineNumber;
+        }
+        public void setProductionQuantity(String productionQuantity)
+        {
+            this.productionQuantity = productionQuantity;
+        }
+
+        public String getProductionQuantity()
+        {
+            return productionQuantity;
+        }
+        public void setProductionUnit(String productionUnit)
+        {
+            this.productionUnit = productionUnit;
+        }
+
+        public String getProductionUnit()
+        {
+            return productionUnit;
+        }
+        public void setProductionOrganization(String productionOrganization)
+        {
+            this.productionOrganization = productionOrganization;
+        }
+
+        public String getProductionOrganization()
+        {
+            return productionOrganization;
+        }
+        public void setWorkshop(String workshop)
+        {
+            this.workshop = workshop;
+        }
+
+        public String getWorkshop()
+        {
+            return workshop;
+        }
+        public void setDocumentStatus(String documentStatus)
+        {
+            this.documentStatus = documentStatus;
+        }
+
+        public String getDocumentStatus()
+        {
+            return documentStatus;
+        }
+        public void setAuxiliaryAttribute(String auxiliaryAttribute)
+        {
+            this.auxiliaryAttribute = auxiliaryAttribute;
+        }
+
+        public String getAuxiliaryAttribute()
+        {
+            return auxiliaryAttribute;
+        }
+        public void setBomVersion(String bomVersion)
+        {
+            this.bomVersion = bomVersion;
+        }
+
+        public String getBomVersion()
+        {
+            return bomVersion;
+        }
+        public void setCreateById(Long createById)
+        {
+            this.createById = createById;
+        }
+
+        public Long getCreateById()
+        {
+            return createById;
+        }
+        public void setUpdateById(Long updateById)
+        {
+            this.updateById = updateById;
+        }
+
+        public Long getUpdateById()
+        {
+            return updateById;
+        }
+        public void setDelFlag(String delFlag)
+        {
+            this.delFlag = delFlag;
+        }
+
+        public String getDelFlag()
+        {
+            return delFlag;
+        }
+        public void setDataApprovalStatus(String dataApprovalStatus)
+        {
+            this.dataApprovalStatus = dataApprovalStatus;
+        }
+
+        public String getDataApprovalStatus()
+        {
+            return dataApprovalStatus;
+        }
+        public void setProcessKey(String processKey)
+        {
+            this.processKey = processKey;
+        }
+
+        public String getProcessKey()
+        {
+            return processKey;
+        }
+        public void setTaskProcessKey(String taskProcessKey)
+        {
+            this.taskProcessKey = taskProcessKey;
+        }
+
+        public String getTaskProcessKey()
+        {
+            return taskProcessKey;
+        }
+        public void setTaskNodeKey(String taskNodeKey)
+        {
+            this.taskNodeKey = taskNodeKey;
+        }
+
+        public String getTaskNodeKey()
+        {
+            return taskNodeKey;
+        }
+
+        @Override
+        public String toString() {
+            return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                    .append("id", getId())
+                    .append("documentNumber", getDocumentNumber())
+                    .append("productCode", getProductCode())
+                    .append("productName", getProductName())
+                    .append("modelNumber", getModelNumber())
+                    .append("specification", getSpecification())
+                    .append("demandDocument", getDemandDocument())
+                    .append("scheduledStartTime", getScheduledStartTime())
+                    .append("scheduledEndTime", getScheduledEndTime())
+                    .append("productionOrderNumber", getProductionOrderNumber())
+                    .append("productionOrderType", getProductionOrderType())
+                    .append("productionOrderStatus", getProductionOrderStatus())
+                    .append("productionLineNumber", getProductionLineNumber())
+                    .append("productionQuantity", getProductionQuantity())
+                    .append("productionUnit", getProductionUnit())
+                    .append("productionOrganization", getProductionOrganization())
+                    .append("workshop", getWorkshop())
+                    .append("documentStatus", getDocumentStatus())
+                    .append("auxiliaryAttribute", getAuxiliaryAttribute())
+                    .append("bomVersion", getBomVersion())
+                    .append("remark", getRemark())
+                    .append("createById", getCreateById())
+                    .append("createBy", getCreateBy())
+                    .append("createTime", getCreateTime())
+                    .append("updateById", getUpdateById())
+                    .append("updateBy", getUpdateBy())
+                    .append("updateTime", getUpdateTime())
+                    .append("delFlag", getDelFlag())
+                    .append("dataApprovalStatus", getDataApprovalStatus())
+                    .append("processKey", getProcessKey())
+                    .append("taskProcessKey", getTaskProcessKey())
+                    .append("taskNodeKey", getTaskNodeKey())
+                    .toString();
+        }
 }

+ 331 - 133
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionBomsDetails.java

@@ -1,248 +1,446 @@
 package com.zkqy.amichi.domain;
 
+import java.math.BigDecimal;
+
+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 com.zkqy.common.annotation.Excel;
+
 
 /**
- * 生产用料清单详细对象 production_boms_details
- * 
- * @author zkqy
- * @date 2024-07-18
+ * bom明细对象 production_boms_details
+ *
+ * @author ruoyi
+ * @date 2024-10-16
  */
 public class ProductionBomsDetails extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
-    /** 主键 */
+    /** $column.columnComment */
     private Long id;
 
-    /** 生产bomid */
-    private String productionBomId;
+    /** 单据编号 */
+    @Excel(name = "单据编号")
+    private String fbillno;
 
-    public String getProductionBomId() {
-        return productionBomId;
-    }
+    /** 主项物料编号 */
+    @Excel(name = "主项物料编号")
+    private String fmaterialid2Fnumber;
 
-    public void setProductionBomId(String productionBomId) {
-        this.productionBomId = productionBomId;
-    }
+    /** 主项物料名称 */
+    @Excel(name = "主项物料名称")
+    private String fmaterialname1;
+
+    /** 主项物料规格 */
+    @Excel(name = "主项物料规格")
+    private String fmaterialmodel1;
+
+    /** 基础属性 */
+    @Excel(name = "基础属性")
+    private String fPonpBaseproperty;
+
+    /** 物料类型 */
+    @Excel(name = "物料类型")
+    private String fmaterialtype;
+
+    /** 供应类型 */
+    @Excel(name = "供应类型")
+    private String fsupplytype;
+
+    /** 使用率 */
+    @Excel(name = "使用率")
+    private BigDecimal fuseRate;
+
+    /** 操作员ID */
+    @Excel(name = "操作员ID")
+    private Long foperid;
 
-    /** 物料编码 */
-    @Excel(name = "物料编码")
-    private String subitemMaterialCode;
+    /** 分子 */
+    @Excel(name = "分子")
+    private BigDecimal fnumerator;
 
-    /** 物料名称 */
-    @Excel(name = "物料名称")
-    private String subitemMaterialName;
+    /** 分母 */
+    @Excel(name = "分母")
+    private BigDecimal fdenominator;
 
-    /** 型号 */
-    @Excel(name = "型号")
-    private String subitemDetailModel;
+    /** 单位 */
+    @Excel(name = "单位")
+    private String funitid2Fname;
 
-    /** 规格 */
-    @Excel(name = "规格")
-    private String subitemDetailSpecifications;
+    /** 固定损耗 */
+    @Excel(name = "固定损耗")
+    private BigDecimal ffixscrapqty;
 
-    /** 作业工序 */
-    @Excel(name = "作业工序")
-    private String workingProcedure;
+    /** 变动损耗率 */
+    @Excel(name = "变动损耗率")
+    private BigDecimal fscraprate;
 
-    /** 应发数量 */
-    @Excel(name = "应发数量")
-    private String quantityToBeDelivered;
+    /** 必须数量 */
+    @Excel(name = "必须数量")
+    private BigDecimal fmustqty;
+
+    /** 基本分子 */
+    @Excel(name = "基本分子")
+    private BigDecimal fbasenumerator;
+
+    /** 基本分母 */
+    @Excel(name = "基本分母")
+    private BigDecimal fbasedenominator;
+
+    /** 作业ID */
+    @Excel(name = "作业ID")
+    private Long fprocessid;
+
+    /** 发料方式 */
+    @Excel(name = "发料方式")
+    private String fissuetype;
+
+    /** 反冲类型 */
+    @Excel(name = "反冲类型")
+    private String fbackflushtype;
+
+    /** 默认发料仓库 */
+    @Excel(name = "默认发料仓库")
+    private Long fstockid;
+
+    /** 已领数量 */
+    @Excel(name = "已领数量")
+    private BigDecimal fpickedqty;
 
     /** 未领数量 */
     @Excel(name = "未领数量")
-    private String unclaimedQuantity;
-
-    /** 创建者id */
-    @Excel(name = "创建者id")
-    private Long createById;
+    private BigDecimal fnopickedqty;
 
-    /** 更新者id */
-    @Excel(name = "更新者id")
-    private Long updateById;
+    /** 库存数量 */
+    @Excel(name = "库存数量")
+    private BigDecimal finventoryqty;
 
-    /** 删除标志(0代表存在 2代表删除) */
-    private String delFlag;
+    /** 是否跳层 */
+    @Excel(name = "是否跳层")
+    private Integer fisskip;
 
-    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
-    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
-    private String dataApprovalStatus;
+    /** 供应模式 */
+    @Excel(name = "供应模式")
+    private String fsupplymode;
 
-    /** 流程编号 */
-    @Excel(name = "流程编号")
-    private String processKey;
+    /** 已分配数量 */
+    @Excel(name = "已分配数量")
+    private BigDecimal fgldbqty;
 
-    /** 任务编码 */
-    @Excel(name = "任务编码")
-    private String taskProcessKey;
+    /** 基本需求量 */
+    @Excel(name = "基本需求量")
+    private BigDecimal fbaseneedqty;
 
-    /** 任务节点编码 */
-    @Excel(name = "任务节点编码")
-    private String taskNodeKey;
+    /** 实际领料数量 */
+    @Excel(name = "实际领料数量")
+    private BigDecimal factualpickqty;
 
-    public void setId(Long id) 
+    public void setId(Long id)
     {
         this.id = id;
     }
 
-    public Long getId() 
+    public Long getId()
     {
         return id;
     }
-    public void setSubitemMaterialCode(String subitemMaterialCode) 
+    public void setFbillno(String fbillno)
+    {
+        this.fbillno = fbillno;
+    }
+
+    public String getFbillno()
+    {
+        return fbillno;
+    }
+    public void setFmaterialid2Fnumber(String fmaterialid2Fnumber)
+    {
+        this.fmaterialid2Fnumber = fmaterialid2Fnumber;
+    }
+
+    public String getFmaterialid2Fnumber()
+    {
+        return fmaterialid2Fnumber;
+    }
+    public void setFmaterialname1(String fmaterialname1)
+    {
+        this.fmaterialname1 = fmaterialname1;
+    }
+
+    public String getFmaterialname1()
+    {
+        return fmaterialname1;
+    }
+    public void setFmaterialmodel1(String fmaterialmodel1)
+    {
+        this.fmaterialmodel1 = fmaterialmodel1;
+    }
+
+    public String getFmaterialmodel1()
+    {
+        return fmaterialmodel1;
+    }
+    public void setfPonpBaseproperty(String fPonpBaseproperty)
+    {
+        this.fPonpBaseproperty = fPonpBaseproperty;
+    }
+
+    public String getfPonpBaseproperty()
+    {
+        return fPonpBaseproperty;
+    }
+    public void setFmaterialtype(String fmaterialtype)
+    {
+        this.fmaterialtype = fmaterialtype;
+    }
+
+    public String getFmaterialtype()
+    {
+        return fmaterialtype;
+    }
+    public void setFsupplytype(String fsupplytype)
+    {
+        this.fsupplytype = fsupplytype;
+    }
+
+    public String getFsupplytype()
+    {
+        return fsupplytype;
+    }
+    public void setFuseRate(BigDecimal fuseRate)
+    {
+        this.fuseRate = fuseRate;
+    }
+
+    public BigDecimal getFuseRate()
+    {
+        return fuseRate;
+    }
+    public void setFoperid(Long foperid)
+    {
+        this.foperid = foperid;
+    }
+
+    public Long getFoperid()
+    {
+        return foperid;
+    }
+    public void setFnumerator(BigDecimal fnumerator)
+    {
+        this.fnumerator = fnumerator;
+    }
+
+    public BigDecimal getFnumerator()
+    {
+        return fnumerator;
+    }
+    public void setFdenominator(BigDecimal fdenominator)
+    {
+        this.fdenominator = fdenominator;
+    }
+
+    public BigDecimal getFdenominator()
+    {
+        return fdenominator;
+    }
+    public void setFunitid2Fname(String funitid2Fname)
+    {
+        this.funitid2Fname = funitid2Fname;
+    }
+
+    public String getFunitid2Fname()
+    {
+        return funitid2Fname;
+    }
+    public void setFfixscrapqty(BigDecimal ffixscrapqty)
+    {
+        this.ffixscrapqty = ffixscrapqty;
+    }
+
+    public BigDecimal getFfixscrapqty()
+    {
+        return ffixscrapqty;
+    }
+    public void setFscraprate(BigDecimal fscraprate)
+    {
+        this.fscraprate = fscraprate;
+    }
+
+    public BigDecimal getFscraprate()
+    {
+        return fscraprate;
+    }
+    public void setFmustqty(BigDecimal fmustqty)
+    {
+        this.fmustqty = fmustqty;
+    }
+
+    public BigDecimal getFmustqty()
+    {
+        return fmustqty;
+    }
+    public void setFbasenumerator(BigDecimal fbasenumerator)
     {
-        this.subitemMaterialCode = subitemMaterialCode;
+        this.fbasenumerator = fbasenumerator;
     }
 
-    public String getSubitemMaterialCode() 
+    public BigDecimal getFbasenumerator()
     {
-        return subitemMaterialCode;
+        return fbasenumerator;
     }
-    public void setSubitemMaterialName(String subitemMaterialName) 
+    public void setFbasedenominator(BigDecimal fbasedenominator)
     {
-        this.subitemMaterialName = subitemMaterialName;
+        this.fbasedenominator = fbasedenominator;
     }
 
-    public String getSubitemMaterialName() 
+    public BigDecimal getFbasedenominator()
     {
-        return subitemMaterialName;
+        return fbasedenominator;
     }
-    public void setSubitemDetailModel(String subitemDetailModel) 
+    public void setFprocessid(Long fprocessid)
     {
-        this.subitemDetailModel = subitemDetailModel;
+        this.fprocessid = fprocessid;
     }
 
-    public String getSubitemDetailModel() 
+    public Long getFprocessid()
     {
-        return subitemDetailModel;
+        return fprocessid;
     }
-    public void setSubitemDetailSpecifications(String subitemDetailSpecifications) 
+    public void setFissuetype(String fissuetype)
     {
-        this.subitemDetailSpecifications = subitemDetailSpecifications;
+        this.fissuetype = fissuetype;
     }
 
-    public String getSubitemDetailSpecifications() 
+    public String getFissuetype()
     {
-        return subitemDetailSpecifications;
+        return fissuetype;
     }
-    public void setWorkingProcedure(String workingProcedure) 
+    public void setFbackflushtype(String fbackflushtype)
     {
-        this.workingProcedure = workingProcedure;
+        this.fbackflushtype = fbackflushtype;
     }
 
-    public String getWorkingProcedure() 
+    public String getFbackflushtype()
     {
-        return workingProcedure;
+        return fbackflushtype;
     }
-    public void setQuantityToBeDelivered(String quantityToBeDelivered) 
+    public void setFstockid(Long fstockid)
     {
-        this.quantityToBeDelivered = quantityToBeDelivered;
+        this.fstockid = fstockid;
     }
 
-    public String getQuantityToBeDelivered() 
+    public Long getFstockid()
     {
-        return quantityToBeDelivered;
+        return fstockid;
     }
-    public void setUnclaimedQuantity(String unclaimedQuantity) 
+    public void setFpickedqty(BigDecimal fpickedqty)
     {
-        this.unclaimedQuantity = unclaimedQuantity;
+        this.fpickedqty = fpickedqty;
     }
 
-    public String getUnclaimedQuantity() 
+    public BigDecimal getFpickedqty()
     {
-        return unclaimedQuantity;
+        return fpickedqty;
     }
-    public void setCreateById(Long createById) 
+    public void setFnopickedqty(BigDecimal fnopickedqty)
     {
-        this.createById = createById;
+        this.fnopickedqty = fnopickedqty;
     }
 
-    public Long getCreateById() 
+    public BigDecimal getFnopickedqty()
     {
-        return createById;
+        return fnopickedqty;
     }
-    public void setUpdateById(Long updateById) 
+    public void setFinventoryqty(BigDecimal finventoryqty)
     {
-        this.updateById = updateById;
+        this.finventoryqty = finventoryqty;
     }
 
-    public Long getUpdateById() 
+    public BigDecimal getFinventoryqty()
     {
-        return updateById;
+        return finventoryqty;
     }
-    public void setDelFlag(String delFlag) 
+    public void setFisskip(Integer fisskip)
     {
-        this.delFlag = delFlag;
+        this.fisskip = fisskip;
     }
 
-    public String getDelFlag() 
+    public Integer getFisskip()
     {
-        return delFlag;
+        return fisskip;
     }
-    public void setDataApprovalStatus(String dataApprovalStatus) 
+    public void setFsupplymode(String fsupplymode)
     {
-        this.dataApprovalStatus = dataApprovalStatus;
+        this.fsupplymode = fsupplymode;
     }
 
-    public String getDataApprovalStatus() 
+    public String getFsupplymode()
     {
-        return dataApprovalStatus;
+        return fsupplymode;
     }
-    public void setProcessKey(String processKey) 
+    public void setFgldbqty(BigDecimal fgldbqty)
     {
-        this.processKey = processKey;
+        this.fgldbqty = fgldbqty;
     }
 
-    public String getProcessKey() 
+    public BigDecimal getFgldbqty()
     {
-        return processKey;
+        return fgldbqty;
     }
-    public void setTaskProcessKey(String taskProcessKey) 
+    public void setFbaseneedqty(BigDecimal fbaseneedqty)
     {
-        this.taskProcessKey = taskProcessKey;
+        this.fbaseneedqty = fbaseneedqty;
     }
 
-    public String getTaskProcessKey() 
+    public BigDecimal getFbaseneedqty()
     {
-        return taskProcessKey;
+        return fbaseneedqty;
     }
-    public void setTaskNodeKey(String taskNodeKey) 
+    public void setFactualpickqty(BigDecimal factualpickqty)
     {
-        this.taskNodeKey = taskNodeKey;
+        this.factualpickqty = factualpickqty;
     }
 
-    public String getTaskNodeKey() 
+    public BigDecimal getFactualpickqty()
     {
-        return taskNodeKey;
+        return factualpickqty;
     }
 
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("subitemMaterialCode", getSubitemMaterialCode())
-            .append("subitemMaterialName", getSubitemMaterialName())
-            .append("subitemDetailModel", getSubitemDetailModel())
-            .append("subitemDetailSpecifications", getSubitemDetailSpecifications())
-            .append("workingProcedure", getWorkingProcedure())
-            .append("quantityToBeDelivered", getQuantityToBeDelivered())
-            .append("unclaimedQuantity", getUnclaimedQuantity())
-            .append("remark", getRemark())
-            .append("createById", getCreateById())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateById", getUpdateById())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("delFlag", getDelFlag())
-            .append("dataApprovalStatus", getDataApprovalStatus())
-            .append("processKey", getProcessKey())
-            .append("taskProcessKey", getTaskProcessKey())
-            .append("taskNodeKey", getTaskNodeKey())
-            .toString();
+                .append("id", getId())
+                .append("fbillno", getFbillno())
+                .append("fmaterialid2Fnumber", getFmaterialid2Fnumber())
+                .append("fmaterialname1", getFmaterialname1())
+                .append("fmaterialmodel1", getFmaterialmodel1())
+                .append("fPonpBaseproperty", getfPonpBaseproperty())
+                .append("fmaterialtype", getFmaterialtype())
+                .append("fsupplytype", getFsupplytype())
+                .append("fuseRate", getFuseRate())
+                .append("foperid", getFoperid())
+                .append("fnumerator", getFnumerator())
+                .append("fdenominator", getFdenominator())
+                .append("funitid2Fname", getFunitid2Fname())
+                .append("ffixscrapqty", getFfixscrapqty())
+                .append("fscraprate", getFscraprate())
+                .append("fmustqty", getFmustqty())
+                .append("fbasenumerator", getFbasenumerator())
+                .append("fbasedenominator", getFbasedenominator())
+                .append("fprocessid", getFprocessid())
+                .append("fissuetype", getFissuetype())
+                .append("fbackflushtype", getFbackflushtype())
+                .append("fstockid", getFstockid())
+                .append("fpickedqty", getFpickedqty())
+                .append("fnopickedqty", getFnopickedqty())
+                .append("finventoryqty", getFinventoryqty())
+                .append("fisskip", getFisskip())
+                .append("fsupplymode", getFsupplymode())
+                .append("fgldbqty", getFgldbqty())
+                .append("fbaseneedqty", getFbaseneedqty())
+                .append("factualpickqty", getFactualpickqty())
+                .toString();
     }
 }

+ 9 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProductionPlanningManagement.java

@@ -106,7 +106,16 @@ public class ProductionPlanningManagement extends BaseEntity
 
     @Excel(name="计划类型")
     private  String planType;
+    @Excel(name="特殊要求")
+    private  String specialRequirements;
 
+    public String getSpecialRequirements() {
+        return specialRequirements;
+    }
+
+    public void setSpecialRequirements(String specialRequirements) {
+        this.specialRequirements = specialRequirements;
+    }
 
     public String getPlanType() {
         return planType;

+ 98 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/RingScanInformation.java

@@ -0,0 +1,98 @@
+package com.zkqy.amichi.domain;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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;
+
+
+/**
+ * 指环王扫描日志信息对象 ring_scan_information
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+public class RingScanInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 设备编号 */
+    @Excel(name = "设备编号")
+    private String deviceNumber;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String deviceName;
+
+    /** 扫描时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "扫描时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime scanningTime;
+
+    /** 扫描内容 */
+    @Excel(name = "扫描内容")
+    private String contentInformation;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setDeviceNumber(String deviceNumber) 
+    {
+        this.deviceNumber = deviceNumber;
+    }
+
+    public String getDeviceNumber() 
+    {
+        return deviceNumber;
+    }
+    public void setDeviceName(String deviceName) 
+    {
+        this.deviceName = deviceName;
+    }
+
+    public String getDeviceName() 
+    {
+        return deviceName;
+    }
+    public void setScanningTime(LocalDateTime scanningTime)
+    {
+        this.scanningTime = scanningTime;
+    }
+
+    public LocalDateTime getScanningTime()
+    {
+        return scanningTime;
+    }
+    public void setContentInformation(String contentInformation) 
+    {
+        this.contentInformation = contentInformation;
+    }
+
+    public String getContentInformation() 
+    {
+        return contentInformation;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("deviceNumber", getDeviceNumber())
+            .append("deviceName", getDeviceName())
+            .append("scanningTime", getScanningTime())
+            .append("contentInformation", getContentInformation())
+            .toString();
+    }
+}

+ 167 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/TerminalInformation.java

@@ -0,0 +1,167 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 终端信息对象 terminal_information
+ * 
+ * @author zkqy
+ * @date 2024-10-09
+ */
+public class TerminalInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 终端编号 */
+    @Excel(name = "终端编号")
+    private String terminalId;
+
+    /** 设备名称 */
+    @Excel(name = "设备名称")
+    private String stationName;
+
+    /** 设备编号 */
+    @Excel(name = "设备编号")
+    private String deviceId;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTerminalId(String terminalId) 
+    {
+        this.terminalId = terminalId;
+    }
+
+    public String getTerminalId() 
+    {
+        return terminalId;
+    }
+    public void setStationName(String stationName) 
+    {
+        this.stationName = stationName;
+    }
+
+    public String getStationName() 
+    {
+        return stationName;
+    }
+    public void setDeviceId(String deviceId) 
+    {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceId() 
+    {
+        return deviceId;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("terminalId", getTerminalId())
+            .append("stationName", getStationName())
+            .append("deviceId", getDeviceId())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .toString();
+    }
+}

+ 17 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/BomGroupVo.java

@@ -0,0 +1,17 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.BomGroup;
+
+import java.util.List;
+
+public class BomGroupVo extends BomGroup {
+    List<BomGroupVo> childerns;
+
+    public List<BomGroupVo> getChilderns() {
+        return childerns;
+    }
+
+    public void setChilderns(List<BomGroupVo> childerns) {
+        this.childerns = childerns;
+    }
+}

+ 37 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/StationProductScanningRingVo.java

@@ -0,0 +1,37 @@
+package com.zkqy.amichi.domain.vo;
+
+public class StationProductScanningRingVo {
+
+    //设备号
+    public  String deviceNumber;
+
+    //扫描时间
+    public  String scanningTime;
+
+    //内容信息
+    public  String contentInformation;
+
+    public String getDeviceNumber() {
+        return deviceNumber;
+    }
+
+    public void setDeviceNumber(String deviceNumber) {
+        this.deviceNumber = deviceNumber;
+    }
+
+    public String getScanningTime() {
+        return scanningTime;
+    }
+
+    public void setScanningTime(String scanningTime) {
+        this.scanningTime = scanningTime;
+    }
+
+    public String getContentInformation() {
+        return contentInformation;
+    }
+
+    public void setContentInformation(String contentInformation) {
+        this.contentInformation = contentInformation;
+    }
+}

+ 46 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdBomGroupController.java

@@ -0,0 +1,46 @@
+package com.zkqy.amichi.jd.controller;
+
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import com.zkqy.amichi.jd.service.JdBomGroupService;
+import com.zkqy.common.annotation.Anonymous;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/JdBomGroupController/BomGroup")
+public class JdBomGroupController extends  BaseController{
+
+    @Autowired
+    JdBomGroupService jdBomGroupService;
+
+    @Anonymous
+    @GetMapping("/JdBomGroupPull")
+    public AjaxResult JdBomGroupPull()
+    {
+        AjaxResult list = jdBomGroupService.jdBomGroupPull();
+        return list;
+    }
+
+
+    @Anonymous
+    @GetMapping("/jdBomGroupVersionInfoPull")
+    public AjaxResult jdBomGroupVersionInfoPull()
+    {
+        AjaxResult list = jdBomGroupService.jdBomGroupVersionInfoPull();
+        return list;
+    }
+
+    @Anonymous
+    @GetMapping("/jdBomVersionDetailInfoPull")
+    public AjaxResult jdBomVersionDetailInfoPull()
+    {
+        String fCode="1010010020001";
+        AjaxResult list = jdBomGroupService.jdBomVersionDetailInfoPull(fCode);
+        return list;
+    }
+}

+ 27 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdMaterialInfoController.java

@@ -0,0 +1,27 @@
+package com.zkqy.amichi.jd.controller;
+
+
+import com.zkqy.amichi.jd.service.JdMaterialInfoService;
+import com.zkqy.amichi.jd.service.JdProductionBomsService;
+import com.zkqy.common.annotation.Anonymous;
+import com.zkqy.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/JdMaterialInfo")
+public class JdMaterialInfoController{
+    @Autowired
+    JdMaterialInfoService jdMaterialInfoService;
+
+    @Anonymous
+    @GetMapping("/pullMaterialInfoJustStores")
+    public AjaxResult pullMaterialInfoJustStores()
+    {
+        AjaxResult list = jdMaterialInfoService.pullMaterialInfoJustStores();
+        return list;
+    }
+
+}

+ 34 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdProductionBomsController.java

@@ -0,0 +1,34 @@
+package com.zkqy.amichi.jd.controller;
+
+import com.zkqy.amichi.jd.service.JdProductionBomsService;
+import com.zkqy.common.annotation.Anonymous;
+import com.zkqy.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/JdProductionBomsController/Boms")
+public class JdProductionBomsController {
+    @Autowired
+    JdProductionBomsService productionBomsService;
+
+    @Anonymous
+    @GetMapping("/JdBomGroupPull")
+    public AjaxResult JdBomGroupPull()
+    {
+        AjaxResult list = productionBomsService.jdProductionBomsPull();
+        return list;
+    }
+
+
+
+    @Anonymous
+    @GetMapping("/jdProductionBomsDetailsPull")
+    public AjaxResult jdProductionBomsDetailsPull()
+    {
+        AjaxResult list = productionBomsService.jdProductionBomsDetailsPull();
+        return list;
+    }
+}

+ 121 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/controller/JdProductionOrderController.java

@@ -0,0 +1,121 @@
+package com.zkqy.amichi.jd.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Anonymous;
+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.jd.domain.JdProductionOrder;
+import com.zkqy.amichi.jd.service.JdProductionOrderService;
+
+
+/**
+ * 金蝶-生产订单信息Controller
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+@RestController
+@RequestMapping("/jdProductionOrder/order")
+public class JdProductionOrderController extends BaseController
+{
+
+    @Autowired
+    private JdProductionOrderService jdProductionOrderService;
+
+    /**
+     * 查询金蝶-生产订单信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(JdProductionOrder jdProductionOrder)
+    {
+        startPage();
+        List<JdProductionOrder> list = jdProductionOrderService.selectJdProductionOrderList(jdProductionOrder);
+        return getDataTable(list);
+    }
+
+    /**
+     * 拉取最新的订单数据
+     */
+//    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:list')")
+    @Anonymous
+    @GetMapping("/jdProductionOrderPull")
+    public AjaxResult jdProductionOrderPull(JdProductionOrder jdProductionOrder)
+    {
+        AjaxResult list = jdProductionOrderService.jdProductionOrderPull(jdProductionOrder);
+        return list;
+    }
+
+    /**
+     * 导出金蝶-生产订单信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:export')")
+    @Log(title = "金蝶-生产订单信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, JdProductionOrder jdProductionOrder)
+    {
+        List<JdProductionOrder> list = jdProductionOrderService.selectJdProductionOrderList(jdProductionOrder);
+        ExcelUtil<JdProductionOrder> util = new ExcelUtil<JdProductionOrder>(JdProductionOrder.class);
+        util.exportExcel(response, list, "金蝶-生产订单信息数据");
+    }
+
+    /**
+     * 获取金蝶-生产订单信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(jdProductionOrderService.selectJdProductionOrderById(id));
+    }
+
+    /**
+     * 新增金蝶-生产订单信息
+     */
+    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:add')")
+    @Log(title = "金蝶-生产订单信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody JdProductionOrder jdProductionOrder)
+    {
+        return toAjax(jdProductionOrderService.insertJdProductionOrder(jdProductionOrder));
+    }
+
+    /**
+     * 修改金蝶-生产订单信息
+     */
+    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:edit')")
+    @Log(title = "金蝶-生产订单信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody JdProductionOrder jdProductionOrder)
+    {
+        return toAjax(jdProductionOrderService.updateJdProductionOrder(jdProductionOrder));
+    }
+
+    /**
+     * 删除金蝶-生产订单信息
+     */
+    @PreAuthorize("@ss.hasPermi('jdProductionOrder:order:remove')")
+    @Log(title = "金蝶-生产订单信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(jdProductionOrderService.deleteJdProductionOrderByIds(ids));
+    }
+}

+ 62 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdBomGroupVo.java

@@ -0,0 +1,62 @@
+package com.zkqy.amichi.jd.domain;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.zkqy.common.core.domain.BaseEntity;
+
+public class JdBomGroupVo  extends BaseEntity {
+
+    @JSONField(name="fid")
+    private  Long  id;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @JSONField(name="FNumber")
+    private   String  fNumber;
+
+    @JSONField(name="FNAME")
+    private  String fName;
+
+    @JSONField(name="FParentId")
+    private  String fParentId;
+
+    public String getfNumber() {
+        return fNumber;
+    }
+
+    /** 删除标志(0代表存在 1代表删除) */
+    private String delFlag;
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public void setfNumber(String fNumber) {
+        this.fNumber = fNumber;
+    }
+
+    public String getfName() {
+        return fName;
+    }
+
+    public void setfName(String fName) {
+        this.fName = fName;
+    }
+
+    public String getfParentId() {
+        return fParentId;
+    }
+
+    public void setfParentId(String fParentId) {
+        this.fParentId = fParentId;
+    }
+}

+ 426 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdBomVersionDetailVo.java

@@ -0,0 +1,426 @@
+package com.zkqy.amichi.jd.domain;
+
+
+import com.alibaba.fastjson2.annotation.JSONField;
+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.math.BigDecimal;
+
+/**
+ * bom明细对象 bom_version_detail
+ * 
+ * @author ruoyi
+ * @date 2024-10-15
+ */
+public class JdBomVersionDetailVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 子项物料编号 */
+    @Excel(name = "子项物料编号")
+    @JSONField(name = "FMATERIALIDCHILD.FNumber")
+    private String fmaterialidchildFnumber;
+
+    /** 子项物料名称 */
+    @Excel(name = "子项物料名称")
+    @JSONField(name = "FCHILDITEMNAME")
+    private String fchilditemname;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    @JSONField(name = "FITEMMODEL")
+    private String fchilditemmodel;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    @JSONField(name = "F.PONP.xinghao")
+    private String fPonpXinghao;
+
+    /** 物料属性 */
+    @Excel(name = "物料属性")
+    @JSONField(name = "FITEMPPROPERTY")
+    private String fitempproperty;
+
+    /** 供应类型 */
+    @Excel(name = "供应类型")
+    @JSONField(name = "FSupplyType")
+    private String fsupplytype;
+
+    /** 子项类型 */
+    @Excel(name = "子项类型")
+    @JSONField(name = "FMATERIALTYPE")
+    private String fmaterialtype;
+
+    /** 作业名称 */
+    @Excel(name = "作业名称")
+    @JSONField(name = "FPROCESSID.FName")
+    private String fprocessidFname;
+
+    /** 作业编码 */
+    @Excel(name = "作业编码")
+    @JSONField(name = "FPROCESSID.FNumber")
+    private String fprocessidFnumber;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    @JSONField(name = "FCHILDUNITID.FName")
+    private String fchildunitidFname;
+
+    /** 用量类型 */
+    @Excel(name = "用量类型")
+    @JSONField(name = "FDOSAGETYPE")
+    private String fdosagetype;
+
+    /** 分子 */
+    @Excel(name = "分子")
+    @JSONField(name = "FNUMERATOR")
+    private BigDecimal fnumerator;
+
+    /** 分母 */
+    @Excel(name = "分母")
+    @JSONField(name = "FDENOMINATOR")
+    private BigDecimal fdenominator;
+
+    /** 固定损耗 */
+    @Excel(name = "固定损耗")
+    @JSONField(name = "FFIXSCRAPQTY")
+    private BigDecimal ffixscrapqty;
+
+    /** 变动损耗率 */
+    @Excel(name = "变动损耗率")
+    @JSONField(name = "FSCRAPRATE")
+    private BigDecimal fscraprate;
+
+    /** 供应组织id */
+    @Excel(name = "供应组织id")
+    @JSONField(name = "FCHILDSUPPLYORGID")
+    private Long fchildsupplyorgid;
+
+    /** 子项bom版本 */
+    @Excel(name = "子项bom版本")
+    @JSONField(name="FCHILDSUPPLYORGID")
+    private String fbomidFnumber;
+
+    /** 子项产品模型 */
+    @Excel(name = "子项产品模型")
+    @JSONField(name="FSubMdlId")
+    private Long fsubmdlid;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    @JSONField(name="FMEMO")
+    private String fmemo;
+
+    /** 发料组织 */
+    @Excel(name = "发料组织")
+    @JSONField(name="FSUPPLYORG")
+    private String fsupplyorg;
+
+    /** 默认发料仓库 */
+    @Excel(name = "默认发料仓库")
+    @JSONField(name="FSTOCKID")
+    private Long fstockid;
+
+    /** 发料方式 */
+    @Excel(name = "发料方式")
+    @JSONField(name="FISSUETYPE")
+    private String fissuetype;
+
+    /** 是否跳层 */
+    @Excel(name = "是否跳层")
+    @JSONField(name="FISSkip")
+    private Integer fisskip;
+
+    /** 可替换 */
+    @Excel(name = "可替换")
+    @JSONField(name="FIsCanReplace")
+    private Integer fiscanreplace;
+
+    /** 净需求比例 */
+    @Excel(name = "净需求比例")
+    @JSONField(name="FNETDEMANDRATE")
+    private BigDecimal fnetdemandrate;
+
+    public String getParentMaterialCode() {
+        return parentMaterialCode;
+    }
+
+    public void setParentMaterialCode(String parentMaterialCode) {
+        this.parentMaterialCode = parentMaterialCode;
+    }
+
+    private  String parentMaterialCode;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setFmaterialidchildFnumber(String fmaterialidchildFnumber) 
+    {
+        this.fmaterialidchildFnumber = fmaterialidchildFnumber;
+    }
+
+    public String getFmaterialidchildFnumber() 
+    {
+        return fmaterialidchildFnumber;
+    }
+    public void setFchilditemname(String fchilditemname) 
+    {
+        this.fchilditemname = fchilditemname;
+    }
+
+    public String getFchilditemname() 
+    {
+        return fchilditemname;
+    }
+    public void setFchilditemmodel(String fchilditemmodel) 
+    {
+        this.fchilditemmodel = fchilditemmodel;
+    }
+
+    public String getFchilditemmodel() 
+    {
+        return fchilditemmodel;
+    }
+    public void setfPonpXinghao(String fPonpXinghao) 
+    {
+        this.fPonpXinghao = fPonpXinghao;
+    }
+
+    public String getfPonpXinghao() 
+    {
+        return fPonpXinghao;
+    }
+    public void setFitempproperty(String fitempproperty) 
+    {
+        this.fitempproperty = fitempproperty;
+    }
+
+    public String getFitempproperty() 
+    {
+        return fitempproperty;
+    }
+    public void setFsupplytype(String fsupplytype) 
+    {
+        this.fsupplytype = fsupplytype;
+    }
+
+    public String getFsupplytype() 
+    {
+        return fsupplytype;
+    }
+    public void setFmaterialtype(String fmaterialtype) 
+    {
+        this.fmaterialtype = fmaterialtype;
+    }
+
+    public String getFmaterialtype() 
+    {
+        return fmaterialtype;
+    }
+    public void setFprocessidFname(String fprocessidFname) 
+    {
+        this.fprocessidFname = fprocessidFname;
+    }
+
+    public String getFprocessidFname() 
+    {
+        return fprocessidFname;
+    }
+    public void setFprocessidFnumber(String fprocessidFnumber) 
+    {
+        this.fprocessidFnumber = fprocessidFnumber;
+    }
+
+    public String getFprocessidFnumber() 
+    {
+        return fprocessidFnumber;
+    }
+    public void setFchildunitidFname(String fchildunitidFname) 
+    {
+        this.fchildunitidFname = fchildunitidFname;
+    }
+
+    public String getFchildunitidFname() 
+    {
+        return fchildunitidFname;
+    }
+    public void setFdosagetype(String fdosagetype) 
+    {
+        this.fdosagetype = fdosagetype;
+    }
+
+    public String getFdosagetype() 
+    {
+        return fdosagetype;
+    }
+    public void setFnumerator(BigDecimal fnumerator) 
+    {
+        this.fnumerator = fnumerator;
+    }
+
+    public BigDecimal getFnumerator() 
+    {
+        return fnumerator;
+    }
+    public void setFdenominator(BigDecimal fdenominator) 
+    {
+        this.fdenominator = fdenominator;
+    }
+
+    public BigDecimal getFdenominator() 
+    {
+        return fdenominator;
+    }
+    public void setFfixscrapqty(BigDecimal ffixscrapqty) 
+    {
+        this.ffixscrapqty = ffixscrapqty;
+    }
+
+    public BigDecimal getFfixscrapqty() 
+    {
+        return ffixscrapqty;
+    }
+    public void setFscraprate(BigDecimal fscraprate) 
+    {
+        this.fscraprate = fscraprate;
+    }
+
+    public BigDecimal getFscraprate() 
+    {
+        return fscraprate;
+    }
+    public void setFchildsupplyorgid(Long fchildsupplyorgid) 
+    {
+        this.fchildsupplyorgid = fchildsupplyorgid;
+    }
+
+    public Long getFchildsupplyorgid() 
+    {
+        return fchildsupplyorgid;
+    }
+    public void setFbomidFnumber(String fbomidFnumber) 
+    {
+        this.fbomidFnumber = fbomidFnumber;
+    }
+
+    public String getFbomidFnumber() 
+    {
+        return fbomidFnumber;
+    }
+    public void setFsubmdlid(Long fsubmdlid) 
+    {
+        this.fsubmdlid = fsubmdlid;
+    }
+
+    public Long getFsubmdlid() 
+    {
+        return fsubmdlid;
+    }
+    public void setFmemo(String fmemo) 
+    {
+        this.fmemo = fmemo;
+    }
+
+    public String getFmemo() 
+    {
+        return fmemo;
+    }
+    public void setFsupplyorg(String fsupplyorg) 
+    {
+        this.fsupplyorg = fsupplyorg;
+    }
+
+    public String getFsupplyorg() 
+    {
+        return fsupplyorg;
+    }
+    public void setFstockid(Long fstockid) 
+    {
+        this.fstockid = fstockid;
+    }
+
+    public Long getFstockid() 
+    {
+        return fstockid;
+    }
+    public void setFissuetype(String fissuetype) 
+    {
+        this.fissuetype = fissuetype;
+    }
+
+    public String getFissuetype() 
+    {
+        return fissuetype;
+    }
+    public void setFisskip(Integer fisskip) 
+    {
+        this.fisskip = fisskip;
+    }
+
+    public Integer getFisskip() 
+    {
+        return fisskip;
+    }
+    public void setFiscanreplace(Integer fiscanreplace) 
+    {
+        this.fiscanreplace = fiscanreplace;
+    }
+
+    public Integer getFiscanreplace() 
+    {
+        return fiscanreplace;
+    }
+    public void setFnetdemandrate(BigDecimal fnetdemandrate) 
+    {
+        this.fnetdemandrate = fnetdemandrate;
+    }
+
+    public BigDecimal getFnetdemandrate() 
+    {
+        return fnetdemandrate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fmaterialidchildFnumber", getFmaterialidchildFnumber())
+            .append("fchilditemname", getFchilditemname())
+            .append("fchilditemmodel", getFchilditemmodel())
+            .append("fPonpXinghao", getfPonpXinghao())
+            .append("fitempproperty", getFitempproperty())
+            .append("fsupplytype", getFsupplytype())
+            .append("fmaterialtype", getFmaterialtype())
+            .append("fprocessidFname", getFprocessidFname())
+            .append("fprocessidFnumber", getFprocessidFnumber())
+            .append("fchildunitidFname", getFchildunitidFname())
+            .append("fdosagetype", getFdosagetype())
+            .append("fnumerator", getFnumerator())
+            .append("fdenominator", getFdenominator())
+            .append("ffixscrapqty", getFfixscrapqty())
+            .append("fscraprate", getFscraprate())
+            .append("fchildsupplyorgid", getFchildsupplyorgid())
+            .append("fbomidFnumber", getFbomidFnumber())
+            .append("fsubmdlid", getFsubmdlid())
+            .append("fmemo", getFmemo())
+            .append("fsupplyorg", getFsupplyorg())
+            .append("fstockid", getFstockid())
+            .append("fissuetype", getFissuetype())
+            .append("fisskip", getFisskip())
+            .append("fiscanreplace", getFiscanreplace())
+            .append("fnetdemandrate", getFnetdemandrate())
+            .toString();
+    }
+}

+ 219 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdBomVersionListVo.java

@@ -0,0 +1,219 @@
+package com.zkqy.amichi.jd.domain;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+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;
+
+
+/**
+ * BOM版本信息对象 bom_version_list
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+public class JdBomVersionListVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 分组编号 */
+    @Excel(name = "分组编号")
+    @JSONField(name = "FGroup.FNumber")
+    private String groupNumber;
+
+    /** bom版本 */
+    @Excel(name = "bom版本")
+    @JSONField(name = "FNUMBER")
+    private String fNumber;
+
+    /** 简称 */
+    @Excel(name = "简称")
+    @JSONField(name = "FNAME")
+    private String fName;
+
+    /** 分类 */
+    @Excel(name = "分类")
+    @JSONField(name = "FBOMCATEGORY")
+    private String fBomcategory;
+
+    /** 父项物料编码 */
+    @Excel(name = "父项物料编码")
+    @JSONField(name = "FMATERIALID.FNumber")
+    private String fMaterialId;
+
+    /** 父项物料名称 */
+    @Excel(name = "父项物料名称")
+    @JSONField(name = "FITEMNAME")
+    private String fMaterialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    @JSONField(name = "FITEMMODEL")
+    private String fMaterialModel;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    @JSONField(name = "FDESCRIPTION")
+    private String fDescription;
+
+    /** 数据状态 */
+    @Excel(name = "数据状态")
+    @JSONField(name = "FDocumentStatus")
+    private String fDocumentStatus;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setGroupNumber(String groupNumber) 
+    {
+        this.groupNumber = groupNumber;
+    }
+
+    public String getGroupNumber() 
+    {
+        return groupNumber;
+    }
+    public void setfNumber(String fNumber) 
+    {
+        this.fNumber = fNumber;
+    }
+
+    public String getfNumber() 
+    {
+        return fNumber;
+    }
+    public void setfName(String fName) 
+    {
+        this.fName = fName;
+    }
+
+    public String getfName() 
+    {
+        return fName;
+    }
+    public void setfBomcategory(String fBomcategory) 
+    {
+        this.fBomcategory = fBomcategory;
+    }
+
+    public String getfBomcategory() 
+    {
+        return fBomcategory;
+    }
+    public void setfMaterialId(String fMaterialId) 
+    {
+        this.fMaterialId = fMaterialId;
+    }
+
+    public String getfMaterialId() 
+    {
+        return fMaterialId;
+    }
+    public void setfMaterialName(String fMaterialName) 
+    {
+        this.fMaterialName = fMaterialName;
+    }
+
+    public String getfMaterialName() 
+    {
+        return fMaterialName;
+    }
+    public void setfMaterialModel(String fMaterialModel) 
+    {
+        this.fMaterialModel = fMaterialModel;
+    }
+
+    public String getfMaterialModel() 
+    {
+        return fMaterialModel;
+    }
+    public void setfDescription(String fDescription) 
+    {
+        this.fDescription = fDescription;
+    }
+
+    public String getfDescription() 
+    {
+        return fDescription;
+    }
+    public void setfDocumentStatus(String fDocumentStatus) 
+    {
+        this.fDocumentStatus = fDocumentStatus;
+    }
+
+    public String getfDocumentStatus() 
+    {
+        return fDocumentStatus;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("groupNumber", getGroupNumber())
+            .append("fNumber", getfNumber())
+            .append("fName", getfName())
+            .append("fBomcategory", getfBomcategory())
+            .append("fMaterialId", getfMaterialId())
+            .append("fMaterialName", getfMaterialName())
+            .append("fMaterialModel", getfMaterialModel())
+            .append("fDescription", getfDescription())
+            .append("fDocumentStatus", getfDocumentStatus())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .toString();
+    }
+}

+ 370 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdMaterialInfoVo.java

@@ -0,0 +1,370 @@
+package com.zkqy.amichi.jd.domain;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+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;
+
+
+/**
+ * 物料及时库存对象 materialinfo
+ *
+ * @author ruoyi
+ * @date 2024-10-17
+ */
+public class JdMaterialInfoVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    @JSONField(name="FMaterialId.FNumber")
+    private String materialCode;
+
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    @JSONField(name="FMaterialName")
+    private String materialName;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    @JSONField(name="FModel")
+    private String specification;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    @JSONField(name="FModel1")
+    private String model;
+
+    /** 图号 */
+    @Excel(name = "图号")
+    @JSONField(name="F.PONP.uHao")
+    private String mapNumber;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    @JSONField(name="F.PONP.miaoshu")
+    private String description;
+
+    /** 仓库仓库编码 */
+    @Excel(name = "仓库仓库编码")
+    @JSONField(name="FStockId.FNumber")
+    private String ckNumber;
+
+    /** 仓库名称 */
+    @Excel(name = "仓库名称")
+    @JSONField(name="FStockName")
+    private String ckName;
+
+    /** 批号 */
+    @Excel(name = "批号")
+    @JSONField(name="FLot.FNumber")
+    private String lotNumber;
+
+    /** 库存主单位 */
+    @Excel(name = "库存主单位")
+    @JSONField(name="FStockUnitId.FName")
+    private String unit;
+
+    /** 库存量(主单位) */
+    @Excel(name = "库存量", readConverterExp = "主=单位")
+    @JSONField(name="FBaseQty")
+    private Double stockQuantity;
+
+    /** 可用量(主单位) */
+    @Excel(name = "可用量", readConverterExp = "主=单位")
+    @JSONField(name="FBaseQty")
+    private String availableAmount;
+
+    /** 库存状态 */
+    @Excel(name = "库存状态")
+    @JSONField(name = "FStockStatusId.FName")
+    private String stockStatus;
+
+    /** 货主类型 */
+    @Excel(name = "货主类型")
+    @JSONField(name="FOWNERTYPEID")
+    private String ownerType;
+
+    /** 货主编码 */
+    @Excel(name = "货主编码")
+    @JSONField(name="FOWNERID")
+    private String ownerNumber;
+
+    /** 货主名称 */
+    @Excel(name = "货主名称")
+    @JSONField(name="FOWNERID")
+    private String ownerName;
+
+    /** 保管者类型 */
+    @Excel(name = "保管者类型")
+    @JSONField(name="FKEEPERTYPEID")
+    private String custodianType;
+
+    /** 保管者编码 */
+    @Excel(name = "保管者编码")
+    @JSONField(name="FKEEPERID")
+    private String custodianCode;
+
+    /** 保管者名称 */
+    @Excel(name = "保管者名称")
+    @JSONField(name="FKEEPERID")
+    private String custodianName;
+
+    /** 创建者id  */
+    @Excel(name = "创建者id ")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setMaterialCode(String materialCode)
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode()
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName)
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName()
+    {
+        return materialName;
+    }
+    public void setSpecification(String specification)
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification()
+    {
+        return specification;
+    }
+    public void setModel(String model)
+    {
+        this.model = model;
+    }
+
+    public String getModel()
+    {
+        return model;
+    }
+    public void setMapNumber(String mapNumber)
+    {
+        this.mapNumber = mapNumber;
+    }
+
+    public String getMapNumber()
+    {
+        return mapNumber;
+    }
+    public void setDescription(String description)
+    {
+        this.description = description;
+    }
+
+    public String getDescription()
+    {
+        return description;
+    }
+    public void setCkNumber(String ckNumber)
+    {
+        this.ckNumber = ckNumber;
+    }
+
+    public String getCkNumber()
+    {
+        return ckNumber;
+    }
+    public void setCkName(String ckName)
+    {
+        this.ckName = ckName;
+    }
+
+    public String getCkName()
+    {
+        return ckName;
+    }
+    public void setLotNumber(String lotNumber)
+    {
+        this.lotNumber = lotNumber;
+    }
+
+    public String getLotNumber()
+    {
+        return lotNumber;
+    }
+    public void setUnit(String unit)
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit()
+    {
+        return unit;
+    }
+    public void setStockQuantity(Double stockQuantity)
+    {
+        this.stockQuantity = stockQuantity;
+    }
+
+    public Double getStockQuantity()
+    {
+        return stockQuantity;
+    }
+    public void setAvailableAmount(String availableAmount)
+    {
+        this.availableAmount = availableAmount;
+    }
+
+    public String getAvailableAmount()
+    {
+        return availableAmount;
+    }
+    public void setStockStatus(String stockStatus)
+    {
+        this.stockStatus = stockStatus;
+    }
+
+    public String getStockStatus()
+    {
+        return stockStatus;
+    }
+    public void setOwnerType(String ownerType)
+    {
+        this.ownerType = ownerType;
+    }
+
+    public String getOwnerType()
+    {
+        return ownerType;
+    }
+    public void setOwnerNumber(String ownerNumber)
+    {
+        this.ownerNumber = ownerNumber;
+    }
+
+    public String getOwnerNumber()
+    {
+        return ownerNumber;
+    }
+    public void setOwnerName(String ownerName)
+    {
+        this.ownerName = ownerName;
+    }
+
+    public String getOwnerName()
+    {
+        return ownerName;
+    }
+    public void setCustodianType(String custodianType)
+    {
+        this.custodianType = custodianType;
+    }
+
+    public String getCustodianType()
+    {
+        return custodianType;
+    }
+    public void setCustodianCode(String custodianCode)
+    {
+        this.custodianCode = custodianCode;
+    }
+
+    public String getCustodianCode()
+    {
+        return custodianCode;
+    }
+    public void setCustodianName(String custodianName)
+    {
+        this.custodianName = custodianName;
+    }
+
+    public String getCustodianName()
+    {
+        return custodianName;
+    }
+    public void setCreateById(Long createById)
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById()
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById)
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById()
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("materialCode", getMaterialCode())
+                .append("materialName", getMaterialName())
+                .append("specification", getSpecification())
+                .append("model", getModel())
+                .append("mapNumber", getMapNumber())
+                .append("description", getDescription())
+                .append("ckNumber", getCkNumber())
+                .append("ckName", getCkName())
+                .append("lotNumber", getLotNumber())
+                .append("unit", getUnit())
+                .append("stockQuantity", getStockQuantity())
+                .append("availableAmount", getAvailableAmount())
+                .append("stockStatus", getStockStatus())
+                .append("ownerType", getOwnerType())
+                .append("ownerNumber", getOwnerNumber())
+                .append("ownerName", getOwnerName())
+                .append("custodianType", getCustodianType())
+                .append("custodianCode", getCustodianCode())
+                .append("custodianName", getCustodianName())
+                .append("remark", getRemark())
+                .append("createById", getCreateById())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateById", getUpdateById())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}

+ 477 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionBomsDetailsVo.java

@@ -0,0 +1,477 @@
+package com.zkqy.amichi.jd.domain;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+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.math.BigDecimal;
+
+
+/**
+ * bom明细对象 production_boms_details
+ *
+ * @author ruoyi
+ * @date 2024-10-16
+ */
+public class JdProductionBomsDetailsVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 单据编号 */
+    @Excel(name = "单据编号")
+    @JSONField(name="FBillNo")
+    private String fbillno;
+
+    /** 主项物料编号 */
+    @Excel(name = "主项物料编号")
+    @JSONField(name="FMaterialID2.FNumber")
+    private String fmaterialid2Fnumber;
+
+    /** 主项物料名称 */
+    @Excel(name = "主项物料名称")
+    @JSONField(name="FMaterialName1")
+    private String fmaterialname1;
+
+    /** 主项物料规格 */
+    @Excel(name = "主项物料规格")
+    @JSONField(name="FMaterialModel1")
+    private String fmaterialmodel1;
+
+    /** 基础属性 */
+    @Excel(name = "基础属性")
+    @JSONField(name="F.PONP.BaseProperty")
+    private String fPonpBaseproperty;
+
+    /** 物料类型 */
+    @Excel(name = "物料类型")
+    @JSONField(name="FMaterialType")
+    private String fmaterialtype;
+
+    /** 供应类型 */
+    @Excel(name = "供应类型")
+    @JSONField(name="FSupplyType")
+    private String fsupplytype;
+
+    /** 使用率 */
+    @Excel(name = "使用率")
+    @JSONField(name="FUseRate")
+    private BigDecimal fuseRate;
+
+    /** 操作员ID */
+    @Excel(name = "操作员ID")
+    @JSONField(name="FOperID")
+    private Long foperid;
+
+    /** 分子 */
+    @Excel(name = "分子")
+    @JSONField(name="FNumerator")
+    private BigDecimal fnumerator;
+
+    /** 分母 */
+    @Excel(name = "分母")
+    @JSONField(name="FDenominator")
+    private BigDecimal fdenominator;
+
+    /** 单位 */
+    @Excel(name = "单位")
+
+    @JSONField(name="FUnitID2.FName")
+    private String funitid2Fname;
+
+    /** 固定损耗 */
+    @Excel(name = "固定损耗")
+    @JSONField(name="FFixScrapQty")
+    private BigDecimal ffixscrapqty;
+
+    /** 变动损耗率 */
+    @Excel(name = "变动损耗率")
+    @JSONField(name="FScrapRate")
+    private BigDecimal fscraprate;
+
+    /** 应发数量 */
+    @Excel(name = "应发数量")
+    @JSONField(name="FMustQty")
+    private BigDecimal fmustqty;
+
+    /** 基本分子 */
+    @Excel(name = "基本分子")
+    @JSONField(name="FBASENUMERATOR")
+    private BigDecimal fbasenumerator;
+
+    /** 基本分母 */
+    @Excel(name = "基本分母")
+    @JSONField(name="FBASEDENOMINATOR")
+    private BigDecimal fbasedenominator;
+
+    /** 作业ID */
+    @Excel(name = "作业ID")
+    @JSONField(name="FPROCESSID")
+    private Long fprocessid;
+
+    /** 发料方式 */
+    @Excel(name = "发料方式")
+    @JSONField(name="FISSUETYPE")
+    private String fissuetype;
+
+    /** 反冲类型 */
+    @Excel(name = "倒冲类型")
+    @JSONField(name="FBackFlushType")
+    private String fbackflushtype;
+
+    /** 默认发料仓库 */
+    @Excel(name = "默认发料仓库")
+    @JSONField(name="FSTOCKID")
+    private Long fstockid;
+
+    /** 已领数量 */
+    @Excel(name = "已领数量")
+    @JSONField(name="FPICKEDQTY")
+    private BigDecimal fpickedqty;
+
+    /** 未领数量 */
+    @Excel(name = "未领数量")
+    @JSONField(name="FNOPICKEDQTY")
+    private BigDecimal fnopickedqty;
+
+    /** 库存数量 */
+    @Excel(name = "库存数量")
+    @JSONField(name="FINVENTORYQTY")
+    private BigDecimal finventoryqty;
+
+    /** 是否跳层 */
+    @Excel(name = "是否跳层")
+    @JSONField(name="FISSKIP")
+    private Integer fisskip;
+
+    /** 供应模式 */
+    @Excel(name = "供料模式")
+    @JSONField(name="FSUPPLYMODE")
+    private String fsupplymode;
+
+    /** 已分配数量 */
+    @Excel(name = "已分配数量")
+    @JSONField(name="FGLDBQTY")
+    private BigDecimal fgldbqty;
+
+    /** 基本需求量 */
+    @Excel(name = "基本需求量")
+    @JSONField(name="FBASENEEDQTY")
+    private BigDecimal fbaseneedqty;
+
+    /** 实际领料数量 */
+    @Excel(name = "实际领料数量")
+    @JSONField(name="FACTUALPICKQTY")
+    private BigDecimal factualpickqty;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setFbillno(String fbillno)
+    {
+        this.fbillno = fbillno;
+    }
+
+    public String getFbillno()
+    {
+        return fbillno;
+    }
+    public void setFmaterialid2Fnumber(String fmaterialid2Fnumber)
+    {
+        this.fmaterialid2Fnumber = fmaterialid2Fnumber;
+    }
+
+    public String getFmaterialid2Fnumber()
+    {
+        return fmaterialid2Fnumber;
+    }
+    public void setFmaterialname1(String fmaterialname1)
+    {
+        this.fmaterialname1 = fmaterialname1;
+    }
+
+    public String getFmaterialname1()
+    {
+        return fmaterialname1;
+    }
+    public void setFmaterialmodel1(String fmaterialmodel1)
+    {
+        this.fmaterialmodel1 = fmaterialmodel1;
+    }
+
+    public String getFmaterialmodel1()
+    {
+        return fmaterialmodel1;
+    }
+    public void setfPonpBaseproperty(String fPonpBaseproperty)
+    {
+        this.fPonpBaseproperty = fPonpBaseproperty;
+    }
+
+    public String getfPonpBaseproperty()
+    {
+        return fPonpBaseproperty;
+    }
+    public void setFmaterialtype(String fmaterialtype)
+    {
+        this.fmaterialtype = fmaterialtype;
+    }
+
+    public String getFmaterialtype()
+    {
+        return fmaterialtype;
+    }
+    public void setFsupplytype(String fsupplytype)
+    {
+        this.fsupplytype = fsupplytype;
+    }
+
+    public String getFsupplytype()
+    {
+        return fsupplytype;
+    }
+    public void setFuseRate(BigDecimal fuseRate)
+    {
+        this.fuseRate = fuseRate;
+    }
+
+    public BigDecimal getFuseRate()
+    {
+        return fuseRate;
+    }
+    public void setFoperid(Long foperid)
+    {
+        this.foperid = foperid;
+    }
+
+    public Long getFoperid()
+    {
+        return foperid;
+    }
+    public void setFnumerator(BigDecimal fnumerator)
+    {
+        this.fnumerator = fnumerator;
+    }
+
+    public BigDecimal getFnumerator()
+    {
+        return fnumerator;
+    }
+    public void setFdenominator(BigDecimal fdenominator)
+    {
+        this.fdenominator = fdenominator;
+    }
+
+    public BigDecimal getFdenominator()
+    {
+        return fdenominator;
+    }
+    public void setFunitid2Fname(String funitid2Fname)
+    {
+        this.funitid2Fname = funitid2Fname;
+    }
+
+    public String getFunitid2Fname()
+    {
+        return funitid2Fname;
+    }
+    public void setFfixscrapqty(BigDecimal ffixscrapqty)
+    {
+        this.ffixscrapqty = ffixscrapqty;
+    }
+
+    public BigDecimal getFfixscrapqty()
+    {
+        return ffixscrapqty;
+    }
+    public void setFscraprate(BigDecimal fscraprate)
+    {
+        this.fscraprate = fscraprate;
+    }
+
+    public BigDecimal getFscraprate()
+    {
+        return fscraprate;
+    }
+    public void setFmustqty(BigDecimal fmustqty)
+    {
+        this.fmustqty = fmustqty;
+    }
+
+    public BigDecimal getFmustqty()
+    {
+        return fmustqty;
+    }
+    public void setFbasenumerator(BigDecimal fbasenumerator)
+    {
+        this.fbasenumerator = fbasenumerator;
+    }
+
+    public BigDecimal getFbasenumerator()
+    {
+        return fbasenumerator;
+    }
+    public void setFbasedenominator(BigDecimal fbasedenominator)
+    {
+        this.fbasedenominator = fbasedenominator;
+    }
+
+    public BigDecimal getFbasedenominator()
+    {
+        return fbasedenominator;
+    }
+    public void setFprocessid(Long fprocessid)
+    {
+        this.fprocessid = fprocessid;
+    }
+
+    public Long getFprocessid()
+    {
+        return fprocessid;
+    }
+    public void setFissuetype(String fissuetype)
+    {
+        this.fissuetype = fissuetype;
+    }
+
+    public String getFissuetype()
+    {
+        return fissuetype;
+    }
+    public void setFbackflushtype(String fbackflushtype)
+    {
+        this.fbackflushtype = fbackflushtype;
+    }
+
+    public String getFbackflushtype()
+    {
+        return fbackflushtype;
+    }
+    public void setFstockid(Long fstockid)
+    {
+        this.fstockid = fstockid;
+    }
+
+    public Long getFstockid()
+    {
+        return fstockid;
+    }
+    public void setFpickedqty(BigDecimal fpickedqty)
+    {
+        this.fpickedqty = fpickedqty;
+    }
+
+    public BigDecimal getFpickedqty()
+    {
+        return fpickedqty;
+    }
+    public void setFnopickedqty(BigDecimal fnopickedqty)
+    {
+        this.fnopickedqty = fnopickedqty;
+    }
+
+    public BigDecimal getFnopickedqty()
+    {
+        return fnopickedqty;
+    }
+    public void setFinventoryqty(BigDecimal finventoryqty)
+    {
+        this.finventoryqty = finventoryqty;
+    }
+
+    public BigDecimal getFinventoryqty()
+    {
+        return finventoryqty;
+    }
+    public void setFisskip(Integer fisskip)
+    {
+        this.fisskip = fisskip;
+    }
+
+    public Integer getFisskip()
+    {
+        return fisskip;
+    }
+    public void setFsupplymode(String fsupplymode)
+    {
+        this.fsupplymode = fsupplymode;
+    }
+
+    public String getFsupplymode()
+    {
+        return fsupplymode;
+    }
+    public void setFgldbqty(BigDecimal fgldbqty)
+    {
+        this.fgldbqty = fgldbqty;
+    }
+
+    public BigDecimal getFgldbqty()
+    {
+        return fgldbqty;
+    }
+    public void setFbaseneedqty(BigDecimal fbaseneedqty)
+    {
+        this.fbaseneedqty = fbaseneedqty;
+    }
+
+    public BigDecimal getFbaseneedqty()
+    {
+        return fbaseneedqty;
+    }
+    public void setFactualpickqty(BigDecimal factualpickqty)
+    {
+        this.factualpickqty = factualpickqty;
+    }
+
+    public BigDecimal getFactualpickqty()
+    {
+        return factualpickqty;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("fbillno", getFbillno())
+                .append("fmaterialid2Fnumber", getFmaterialid2Fnumber())
+                .append("fmaterialname1", getFmaterialname1())
+                .append("fmaterialmodel1", getFmaterialmodel1())
+                .append("fPonpBaseproperty", getfPonpBaseproperty())
+                .append("fmaterialtype", getFmaterialtype())
+                .append("fsupplytype", getFsupplytype())
+                .append("fuseRate", getFuseRate())
+                .append("foperid", getFoperid())
+                .append("fnumerator", getFnumerator())
+                .append("fdenominator", getFdenominator())
+                .append("funitid2Fname", getFunitid2Fname())
+                .append("ffixscrapqty", getFfixscrapqty())
+                .append("fscraprate", getFscraprate())
+                .append("fmustqty", getFmustqty())
+                .append("fbasenumerator", getFbasenumerator())
+                .append("fbasedenominator", getFbasedenominator())
+                .append("fprocessid", getFprocessid())
+                .append("fissuetype", getFissuetype())
+                .append("fbackflushtype", getFbackflushtype())
+                .append("fstockid", getFstockid())
+                .append("fpickedqty", getFpickedqty())
+                .append("fnopickedqty", getFnopickedqty())
+                .append("finventoryqty", getFinventoryqty())
+                .append("fisskip", getFisskip())
+                .append("fsupplymode", getFsupplymode())
+                .append("fgldbqty", getFgldbqty())
+                .append("fbaseneedqty", getFbaseneedqty())
+                .append("factualpickqty", getFactualpickqty())
+                .toString();
+    }
+}

+ 429 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionBomsVo.java

@@ -0,0 +1,429 @@
+package com.zkqy.amichi.jd.domain;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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;
+
+/**
+ * 生产用料清单对象 production_boms
+ * 
+ * @author zkqy
+ * @date 2024-07-18
+ */
+public class JdProductionBomsVo extends BaseEntity {
+        private static final long serialVersionUID = 1L;
+
+        /** 主键 */
+        private Long id;
+
+        /** 单据编号 */
+        @Excel(name = "单据编号")
+        @JSONField(name="FBillNo")
+        private String documentNumber;
+
+        /** 产品编码 */
+        @Excel(name = "产品编码")
+        @JSONField(name="FMaterialID.FNumber")
+        private String productCode;
+
+        /** 产品名称 */
+        @Excel(name = "产品名称")
+        @JSONField(name="FMaterialName")
+        private String productName;
+
+        /** 型号 */
+        @Excel(name = "型号")
+        @JSONField(name="FMaterialModel2")
+        private String modelNumber;
+
+        /** 规格 */
+        @Excel(name = "规格")
+        @JSONField(name="FMaterialModel")
+        private String specification;
+
+        /** 需求单据 */
+        @Excel(name = "需求单据")
+        @JSONField(name="F_PONP_SALEORDERNO")
+        private String demandDocument;
+
+        /** 计划开工时间 */
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @JSONField(name="FPLANSTARTDATE")
+        @Excel(name = "计划开工时间", width = 30, dateFormat = "yyyy-MM-dd")
+        private Date scheduledStartTime;
+
+        /** 计划完工时间 */
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @JSONField(name="FPLANFINISHDATE")
+        @Excel(name = "计划完工时间", width = 30, dateFormat = "yyyy-MM-dd")
+        private Date scheduledEndTime;
+
+        /** 生产订单编号 */
+        @Excel(name = "生产订单编号")
+        @JSONField(name="FMOBillNO")
+        private String productionOrderNumber;
+
+        /** 生产订单类型 */
+        @Excel(name = "生产订单类型")
+        @JSONField(name="FMOType.FName")
+        private String productionOrderType;
+
+        /** 生产订单状态 */
+        @Excel(name = "生产订单状态")
+        @JSONField(name="FMoEntryStatus")
+        private String productionOrderStatus;
+
+        /** 生产订单行号 */
+        @Excel(name = "生产订单行号")
+        @JSONField(name="FMOEntrySeq")
+        private String productionLineNumber;
+
+        /** 生产数量 */
+        @Excel(name = "生产数量")
+        @JSONField(name="FQty")
+        private String productionQuantity;
+
+        /** 生产单位 */
+        @Excel(name = "生产单位")
+        @JSONField(name="FUnitID.FName")
+        private String productionUnit;
+
+        /** 生产组织 */
+        @Excel(name = "生产组织")
+        @JSONField(name="FPRDORGID")
+        private String productionOrganization;
+
+        /** 生产车间 */
+        @Excel(name = "生产车间")
+        @JSONField(name="FWorkshopID.FName")
+        private String workshop;
+
+        /** 单据状态 */
+        @Excel(name = "单据状态")
+        @JSONField(name="FDOCUMENTSTATUS")
+        private String documentStatus;
+
+        /** 辅助属性 */
+        @Excel(name = "辅助属性")
+        @JSONField(name="FAUXPROPID")
+        private String auxiliaryAttribute;
+
+        /** BOM版本 */
+        @Excel(name = "BOM版本")
+        @JSONField(name="FAUXPROPID")
+        private String bomVersion;
+
+        /** 创建者id */
+        @Excel(name = "创建者id")
+        private Long createById;
+
+        /** 更新者id */
+        @Excel(name = "更新者id")
+        private Long updateById;
+
+        /** 删除标志(0代表存在 2代表删除) */
+        private String delFlag;
+
+        /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+        @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+        private String dataApprovalStatus;
+
+        /** 流程编号 */
+        @Excel(name = "流程编号")
+        private String processKey;
+
+        /** 任务编码 */
+        @Excel(name = "任务编码")
+        private String taskProcessKey;
+
+        /** 任务节点编码 */
+        @Excel(name = "任务节点编码")
+        private String taskNodeKey;
+
+        public void setId(Long id)
+        {
+            this.id = id;
+        }
+
+        public Long getId()
+        {
+            return id;
+        }
+        public void setDocumentNumber(String documentNumber)
+        {
+            this.documentNumber = documentNumber;
+        }
+
+        public String getDocumentNumber()
+        {
+            return documentNumber;
+        }
+        public void setProductCode(String productCode)
+        {
+            this.productCode = productCode;
+        }
+
+        public String getProductCode()
+        {
+            return productCode;
+        }
+        public void setProductName(String productName)
+        {
+            this.productName = productName;
+        }
+
+        public String getProductName()
+        {
+            return productName;
+        }
+        public void setModelNumber(String modelNumber)
+        {
+            this.modelNumber = modelNumber;
+        }
+
+        public String getModelNumber()
+        {
+            return modelNumber;
+        }
+        public void setSpecification(String specification)
+        {
+            this.specification = specification;
+        }
+
+        public String getSpecification()
+        {
+            return specification;
+        }
+        public void setDemandDocument(String demandDocument)
+        {
+            this.demandDocument = demandDocument;
+        }
+
+        public String getDemandDocument()
+        {
+            return demandDocument;
+        }
+        public void setScheduledStartTime(Date scheduledStartTime)
+        {
+            this.scheduledStartTime = scheduledStartTime;
+        }
+
+        public Date getScheduledStartTime()
+        {
+            return scheduledStartTime;
+        }
+        public void setScheduledEndTime(Date scheduledEndTime)
+        {
+            this.scheduledEndTime = scheduledEndTime;
+        }
+
+        public Date getScheduledEndTime()
+        {
+            return scheduledEndTime;
+        }
+        public void setProductionOrderNumber(String productionOrderNumber)
+        {
+            this.productionOrderNumber = productionOrderNumber;
+        }
+
+        public String getProductionOrderNumber()
+        {
+            return productionOrderNumber;
+        }
+        public void setProductionOrderType(String productionOrderType)
+        {
+            this.productionOrderType = productionOrderType;
+        }
+
+        public String getProductionOrderType()
+        {
+            return productionOrderType;
+        }
+        public void setProductionOrderStatus(String productionOrderStatus)
+        {
+            this.productionOrderStatus = productionOrderStatus;
+        }
+
+        public String getProductionOrderStatus()
+        {
+            return productionOrderStatus;
+        }
+        public void setProductionLineNumber(String productionLineNumber)
+        {
+            this.productionLineNumber = productionLineNumber;
+        }
+
+        public String getProductionLineNumber()
+        {
+            return productionLineNumber;
+        }
+        public void setProductionQuantity(String productionQuantity)
+        {
+            this.productionQuantity = productionQuantity;
+        }
+
+        public String getProductionQuantity()
+        {
+            return productionQuantity;
+        }
+        public void setProductionUnit(String productionUnit)
+        {
+            this.productionUnit = productionUnit;
+        }
+
+        public String getProductionUnit()
+        {
+            return productionUnit;
+        }
+        public void setProductionOrganization(String productionOrganization)
+        {
+            this.productionOrganization = productionOrganization;
+        }
+
+        public String getProductionOrganization()
+        {
+            return productionOrganization;
+        }
+        public void setWorkshop(String workshop)
+        {
+            this.workshop = workshop;
+        }
+
+        public String getWorkshop()
+        {
+            return workshop;
+        }
+        public void setDocumentStatus(String documentStatus)
+        {
+            this.documentStatus = documentStatus;
+        }
+
+        public String getDocumentStatus()
+        {
+            return documentStatus;
+        }
+        public void setAuxiliaryAttribute(String auxiliaryAttribute)
+        {
+            this.auxiliaryAttribute = auxiliaryAttribute;
+        }
+
+        public String getAuxiliaryAttribute()
+        {
+            return auxiliaryAttribute;
+        }
+        public void setBomVersion(String bomVersion)
+        {
+            this.bomVersion = bomVersion;
+        }
+
+        public String getBomVersion()
+        {
+            return bomVersion;
+        }
+        public void setCreateById(Long createById)
+        {
+            this.createById = createById;
+        }
+
+        public Long getCreateById()
+        {
+            return createById;
+        }
+        public void setUpdateById(Long updateById)
+        {
+            this.updateById = updateById;
+        }
+
+        public Long getUpdateById()
+        {
+            return updateById;
+        }
+        public void setDelFlag(String delFlag)
+        {
+            this.delFlag = delFlag;
+        }
+
+        public String getDelFlag()
+        {
+            return delFlag;
+        }
+        public void setDataApprovalStatus(String dataApprovalStatus)
+        {
+            this.dataApprovalStatus = dataApprovalStatus;
+        }
+
+        public String getDataApprovalStatus()
+        {
+            return dataApprovalStatus;
+        }
+        public void setProcessKey(String processKey)
+        {
+            this.processKey = processKey;
+        }
+
+        public String getProcessKey()
+        {
+            return processKey;
+        }
+        public void setTaskProcessKey(String taskProcessKey)
+        {
+            this.taskProcessKey = taskProcessKey;
+        }
+
+        public String getTaskProcessKey()
+        {
+            return taskProcessKey;
+        }
+        public void setTaskNodeKey(String taskNodeKey)
+        {
+            this.taskNodeKey = taskNodeKey;
+        }
+
+        public String getTaskNodeKey()
+        {
+            return taskNodeKey;
+        }
+
+        @Override
+        public String toString() {
+            return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+                    .append("id", getId())
+                    .append("documentNumber", getDocumentNumber())
+                    .append("productCode", getProductCode())
+                    .append("productName", getProductName())
+                    .append("modelNumber", getModelNumber())
+                    .append("specification", getSpecification())
+                    .append("demandDocument", getDemandDocument())
+                    .append("scheduledStartTime", getScheduledStartTime())
+                    .append("scheduledEndTime", getScheduledEndTime())
+                    .append("productionOrderNumber", getProductionOrderNumber())
+                    .append("productionOrderType", getProductionOrderType())
+                    .append("productionOrderStatus", getProductionOrderStatus())
+                    .append("productionLineNumber", getProductionLineNumber())
+                    .append("productionQuantity", getProductionQuantity())
+                    .append("productionUnit", getProductionUnit())
+                    .append("productionOrganization", getProductionOrganization())
+                    .append("workshop", getWorkshop())
+                    .append("documentStatus", getDocumentStatus())
+                    .append("auxiliaryAttribute", getAuxiliaryAttribute())
+                    .append("bomVersion", getBomVersion())
+                    .append("remark", getRemark())
+                    .append("createById", getCreateById())
+                    .append("createBy", getCreateBy())
+                    .append("createTime", getCreateTime())
+                    .append("updateById", getUpdateById())
+                    .append("updateBy", getUpdateBy())
+                    .append("updateTime", getUpdateTime())
+                    .append("delFlag", getDelFlag())
+                    .append("dataApprovalStatus", getDataApprovalStatus())
+                    .append("processKey", getProcessKey())
+                    .append("taskProcessKey", getTaskProcessKey())
+                    .append("taskNodeKey", getTaskNodeKey())
+                    .toString();
+        }
+}

+ 369 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionOrder.java

@@ -0,0 +1,369 @@
+package com.zkqy.amichi.jd.domain;
+
+import java.util.Date;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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;
+
+
+/**
+ * 金蝶-生产订单信息对象 jd_production_order
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+public class JdProductionOrder extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 单据编号 */
+    @Excel(name = "单据编号")
+    @JSONField(name = "FBillNo")
+    private String documentNumber;
+
+    /** 单据类型 */
+    @Excel(name = "单据类型")
+    @JSONField(name = "FBillType")
+    private String documentTyep;
+
+    /** 单据日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JSONField(name = "FDate")
+    @Excel(name = "单据日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date documentDate;
+
+    /** 单据状态 */
+    @Excel(name = "单据状态")
+    @JSONField(name = "FDocumentStatus")
+    private String documentStatus;
+
+    /** 产品类型 */
+    @Excel(name = "产品类型")
+    @JSONField(name = "FProductType")
+    private String productType;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    @JSONField(name = "FMaterialId.FNumber")
+    private String materialCode;
+
+    /** 物料名称 */
+    @Excel(name = "物料名称")
+    @JSONField(name = "FMaterialName")
+    private String materialName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    @JSONField(name = "F.PONP.BaseProperty")
+    private String modelNumber;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    @JSONField(name = "FSpecification")
+    private String specification;
+
+    /** 生产车间 */
+    @Excel(name = "生产车间")
+    @JSONField(name = "FWorkShopID0")
+    private String productionWorkshop;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    @JSONField(name = "FUnitId.FName")
+    private String unit;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    @JSONField(name = "FQty")
+    private String quantity;
+
+    /** 业务状态 */
+    @Excel(name = "业务状态")
+    @JSONField(name = "FStatus")
+    private String serviceStatus;
+
+    /** 需求单据 */
+    @Excel(name = "需求单据")
+    @JSONField(name = "FSaleOrderNo")
+    private String demandDocument;
+
+    /** 领料状态 */
+    @Excel(name = "领料状态")
+    @JSONField(name = "FPickMtrlStatus")
+    private String materialRequisitionStatus;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 1代表删除) */
+    private String delFlag;
+
+    /** 备用字段1 */
+    @Excel(name = "备用字段1")
+    private String byOne;
+
+    /** 备用字段2 */
+    @Excel(name = "备用字段2")
+    private String byTwo;
+
+    /** 计划编号 */
+    @Excel(name = "计划编号")
+    private String planNumber;
+
+    /** 计划名称 */
+    @Excel(name = "计划名称")
+    private String planName;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setDocumentNumber(String documentNumber) 
+    {
+        this.documentNumber = documentNumber;
+    }
+
+    public String getDocumentNumber() 
+    {
+        return documentNumber;
+    }
+    public void setDocumentTyep(String documentTyep) 
+    {
+        this.documentTyep = documentTyep;
+    }
+
+    public String getDocumentTyep() 
+    {
+        return documentTyep;
+    }
+    public void setDocumentDate(Date documentDate) 
+    {
+        this.documentDate = documentDate;
+    }
+
+    public Date getDocumentDate() 
+    {
+        return documentDate;
+    }
+    public void setDocumentStatus(String documentStatus) 
+    {
+        this.documentStatus = documentStatus;
+    }
+
+    public String getDocumentStatus() 
+    {
+        return documentStatus;
+    }
+    public void setProductType(String productType) 
+    {
+        this.productType = productType;
+    }
+
+    public String getProductType() 
+    {
+        return productType;
+    }
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setModelNumber(String modelNumber) 
+    {
+        this.modelNumber = modelNumber;
+    }
+
+    public String getModelNumber() 
+    {
+        return modelNumber;
+    }
+    public void setSpecification(String specification) 
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification() 
+    {
+        return specification;
+    }
+    public void setProductionWorkshop(String productionWorkshop) 
+    {
+        this.productionWorkshop = productionWorkshop;
+    }
+
+    public String getProductionWorkshop() 
+    {
+        return productionWorkshop;
+    }
+    public void setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setQuantity(String quantity) 
+    {
+        this.quantity = quantity;
+    }
+
+    public String getQuantity() 
+    {
+        return quantity;
+    }
+    public void setServiceStatus(String serviceStatus) 
+    {
+        this.serviceStatus = serviceStatus;
+    }
+
+    public String getServiceStatus() 
+    {
+        return serviceStatus;
+    }
+    public void setDemandDocument(String demandDocument) 
+    {
+        this.demandDocument = demandDocument;
+    }
+
+    public String getDemandDocument() 
+    {
+        return demandDocument;
+    }
+    public void setMaterialRequisitionStatus(String materialRequisitionStatus) 
+    {
+        this.materialRequisitionStatus = materialRequisitionStatus;
+    }
+
+    public String getMaterialRequisitionStatus() 
+    {
+        return materialRequisitionStatus;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setByOne(String byOne) 
+    {
+        this.byOne = byOne;
+    }
+
+    public String getByOne() 
+    {
+        return byOne;
+    }
+    public void setByTwo(String byTwo) 
+    {
+        this.byTwo = byTwo;
+    }
+
+    public String getByTwo() 
+    {
+        return byTwo;
+    }
+    public void setPlanNumber(String planNumber) 
+    {
+        this.planNumber = planNumber;
+    }
+
+    public String getPlanNumber() 
+    {
+        return planNumber;
+    }
+    public void setPlanName(String planName) 
+    {
+        this.planName = planName;
+    }
+
+    public String getPlanName() 
+    {
+        return planName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("documentNumber", getDocumentNumber())
+            .append("documentTyep", getDocumentTyep())
+            .append("documentDate", getDocumentDate())
+            .append("documentStatus", getDocumentStatus())
+            .append("productType", getProductType())
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("modelNumber", getModelNumber())
+            .append("specification", getSpecification())
+            .append("productionWorkshop", getProductionWorkshop())
+            .append("unit", getUnit())
+            .append("quantity", getQuantity())
+            .append("serviceStatus", getServiceStatus())
+            .append("demandDocument", getDemandDocument())
+            .append("materialRequisitionStatus", getMaterialRequisitionStatus())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("byOne", getByOne())
+            .append("byTwo", getByTwo())
+            .append("planNumber", getPlanNumber())
+            .append("planName", getPlanName())
+            .toString();
+    }
+}

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

@@ -0,0 +1,78 @@
+package com.zkqy.amichi.jd.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 金蝶-生产订单信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+@Mapper
+public interface JdProductionOrderMapper 
+{
+    /**
+     * 查询金蝶-生产订单信息
+     * 
+     * @param id 金蝶-生产订单信息主键
+     * @return 金蝶-生产订单信息
+     */
+    public JdProductionOrder selectJdProductionOrderById(Long id);
+
+    /**
+     * 返回最大的需求单据
+     *
+     * @return 金蝶-生产订单信息
+     */
+    public String selectJdProductionOrderMaxId();
+
+    /**
+     * 查询金蝶-生产订单信息列表
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 金蝶-生产订单信息集合
+     */
+    public List<JdProductionOrder> selectJdProductionOrderList(JdProductionOrder jdProductionOrder);
+
+    /**
+     * 新增金蝶-生产订单信息
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    public int insertJdProductionOrder(JdProductionOrder jdProductionOrder);
+
+    /**
+     * 新增金蝶-生产订单信息
+     *
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    public int insertBatchJdProductionOrder(List<JdProductionOrder> jdProductionOrder);
+
+    /**
+     * 修改金蝶-生产订单信息
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    public int updateJdProductionOrder(JdProductionOrder jdProductionOrder);
+
+    /**
+     * 删除金蝶-生产订单信息
+     * 
+     * @param id 金蝶-生产订单信息主键
+     * @return 结果
+     */
+    public int deleteJdProductionOrderById(Long id);
+
+    /**
+     * 批量删除金蝶-生产订单信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteJdProductionOrderByIds(Long[] ids);
+}

+ 23 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdBomGroupService.java

@@ -0,0 +1,23 @@
+package com.zkqy.amichi.jd.service;
+
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import com.zkqy.common.core.domain.AjaxResult;
+
+public interface JdBomGroupService {
+    /**
+     * 拉取物料分组分组信息
+     * @return
+     */
+    public AjaxResult jdBomGroupPull();
+
+    /**
+     * 拉取金蝶系统的物料版本信息
+     * @return
+     */
+    public AjaxResult jdBomGroupVersionInfoPull();
+
+    /**
+     * 拉取版本物料详细信息
+     */
+    public AjaxResult jdBomVersionDetailInfoPull(String parentMaterialCode);
+}

+ 11 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdMaterialInfoService.java

@@ -0,0 +1,11 @@
+package com.zkqy.amichi.jd.service;
+
+import com.zkqy.common.core.domain.AjaxResult;
+
+public interface JdMaterialInfoService {
+    /**
+     * 拉取物料库存信息
+     * @return
+     */
+    public AjaxResult pullMaterialInfoJustStores();
+}

+ 17 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdProductionBomsService.java

@@ -0,0 +1,17 @@
+package com.zkqy.amichi.jd.service;
+
+import com.zkqy.common.core.domain.AjaxResult;
+
+public interface JdProductionBomsService {
+    /**
+     * 拉取物料分组分组信息
+     * @return
+     */
+    public AjaxResult jdProductionBomsPull();
+
+    /**
+     *  拉取生产用料清单的Bom 详细信息
+     */
+    public AjaxResult jdProductionBomsDetailsPull();
+
+}

+ 73 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/JdProductionOrderService.java

@@ -0,0 +1,73 @@
+package com.zkqy.amichi.jd.service;
+
+import java.util.List;
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import com.zkqy.common.core.domain.AjaxResult;
+
+/**
+ * 金蝶-生产订单信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+public interface JdProductionOrderService
+{
+    /**
+     * 查询金蝶-生产订单信息
+     * 
+     * @param id 金蝶-生产订单信息主键
+     * @return 金蝶-生产订单信息
+     */
+    public JdProductionOrder selectJdProductionOrderById(Long id);
+
+    /**
+     * 查询金蝶-生产订单信息列表
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 金蝶-生产订单信息集合
+     */
+    public List<JdProductionOrder> selectJdProductionOrderList(JdProductionOrder jdProductionOrder);
+
+    /**
+     * 新增金蝶-生产订单信息
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    public int insertJdProductionOrder(JdProductionOrder jdProductionOrder);
+
+    /**
+     * 修改金蝶-生产订单信息
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    public int updateJdProductionOrder(JdProductionOrder jdProductionOrder);
+
+    /**
+     * 批量删除金蝶-生产订单信息
+     * 
+     * @param ids 需要删除的金蝶-生产订单信息主键集合
+     * @return 结果
+     */
+    public int deleteJdProductionOrderByIds(Long[] ids);
+
+    /**
+     * 删除金蝶-生产订单信息信息
+     * 
+     * @param id 金蝶-生产订单信息主键
+     * @return 结果
+     */
+    public int deleteJdProductionOrderById(Long id);
+
+    /**
+     * 取到最新生产订单数据
+     * @param jdProductionOrder
+     * @return
+     */
+    AjaxResult jdProductionOrderPull(JdProductionOrder jdProductionOrder);
+
+
+
+
+}

+ 147 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdBomGroupServiceImpl.java

@@ -0,0 +1,147 @@
+package com.zkqy.amichi.jd.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.zkqy.amichi.jd.domain.JdBomGroupVo;
+import com.zkqy.amichi.jd.domain.JdBomVersionDetailVo;
+import com.zkqy.amichi.jd.domain.JdBomVersionListVo;
+import com.zkqy.amichi.jd.service.JdBomGroupService;
+import com.zkqy.amichi.mapper.BomGroupMapper;
+import com.zkqy.amichi.mapper.BomVersionDetailMapper;
+import com.zkqy.amichi.mapper.BomVersionListMapper;
+import com.zkqy.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class JdBomGroupServiceImpl implements JdBomGroupService {
+
+    @Autowired
+    BomGroupMapper bomGroupMapper;
+
+    @Autowired
+    BomVersionListMapper bomVersionListMapper;
+
+    @Autowired
+    BomVersionDetailMapper bomVersionDetailMapper;
+
+    @Override
+    public AjaxResult jdBomGroupPull() {
+        //条件json
+        String queryJson="{\n" +
+                "    \"FormId\": \"ENG_BOMGROUP\",\n" +
+                "    \"FieldKeys\": \"fid,FNumber,FNAME,FParentId\",\n" +
+                "    \"FilterString\": [],\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"StartRow\": 0,\n" +
+                "    \"Limit\": 2000,\n" +
+                "    \"SubSystemId\": \"\"\n" +
+                "}";
+        //执行查询
+        K3CloudApi api = new K3CloudApi();
+        try {
+            //执行查询
+            String resultJson = api.billQuery(queryJson);
+            //json转换
+            List<JdBomGroupVo> mapList = JSON.parseArray(resultJson, JdBomGroupVo.class);
+            //执行新增逻辑
+            int i = bomGroupMapper.insertBomGroupBatch(mapList);
+            if(i>0){
+                return AjaxResult.success("拉取BOM分组信息成功");
+            }else {
+                return AjaxResult.error("拉取BOM分组信息失败");
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 拉取金蝶系统组内的版本号信息
+     * @return
+     */
+    @Override
+    public AjaxResult jdBomGroupVersionInfoPull() {
+        //查询条件
+        String queryString="{\n" +
+                "    \"FormId\": \"ENG_BOM\",\n" +
+                "    \"FieldKeys\": \"FGroup.FNumber,FNUMBER,FNAME,FBOMCATEGORY,FMATERIALID.FNumber,FITEMNAME,FITEMMODEL,FDESCRIPTION,FDocumentStatus \",\n" +
+                "    \"FilterString\": [],\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"StartRow\": 0,\n" +
+                "    \"Limit\":5000,\n" +
+                "    \"SubSystemId\": \"\"\n" +
+                "}";
+        Map<String,String> map = JSON.parseObject(queryString, Map.class);
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+        int limit = 5000; // 每次查询的数量
+        List<JdBomVersionListVo> mapList;
+        try {
+            do {
+                // 更新查询条件中的起始行号
+                map.put("StartRow", String.valueOf(startRow));
+                // 查询数据
+                String resultJson = api.billQuery(JSON.toJSONString(map));
+                mapList = JSON.parseArray(resultJson, JdBomVersionListVo.class);
+                // int size = mapList.size();
+                // 处理数据(例如插入到数据库)
+                bomVersionListMapper.insertBomVersionListBatch(mapList);
+                // 更新起始行号
+                startRow += limit;
+                // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+            } while (mapList.size() == 0);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        //abc
+        return  AjaxResult.success("拉取成功");
+    }
+
+    @Override
+    public AjaxResult jdBomVersionDetailInfoPull(String parentMaterialCode) {
+        //查询条件
+        String queryString="{\n" +
+                "    \"FormId\": \"ENG_BOM\",\n" +
+                "    \"FieldKeys\": \"FMATERIALIDCHILD.FNumber,FCHILDITEMNAME,FITEMMODEL,F_PONP_xinghao,FITEMPPROPERTY,FSupplyType,FMATERIALTYPE,FPROCESSID.FName,FPROCESSID.FNumber,FCHILDUNITID.FName,FDOSAGETYPE,FNUMERATOR,FDENOMINATOR,FFIXSCRAPQTY,FSCRAPRATE,FCHILDSUPPLYORGID,FBOMID.FNumber,FSubMdlId,FMEMO,FSUPPLYORG,FSTOCKID,FISSUETYPE,FISSkip,FIsCanReplace,FNETDEMANDRATE\",\n" +
+                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMATERIALID.FNumber\",\"Compare\":\"17\",\"Value\":\""+parentMaterialCode+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"StartRow\": 0,\n" +
+                "    \"Limit\": 2000,\n" +
+                "    \"SubSystemId\": \"\"\n" +
+                "}";
+        Map<String,String> map = JSON.parseObject(queryString, Map.class);
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+        int limit = 5000; // 每次查询的数量
+        List<JdBomVersionDetailVo> mapList;
+        try {
+            do {
+                // 更新查询条件中的起始行号
+                map.put("StartRow", String.valueOf(startRow));
+                // 查询数据
+                String resultJson = api.billQuery(JSON.toJSONString(map));
+                mapList = JSON.parseArray(resultJson, JdBomVersionDetailVo.class);
+                mapList.forEach(item->{
+                    item.setParentMaterialCode(parentMaterialCode);
+                });
+                // int size = mapList.size();
+                // 处理数据(例如插入到数据库)
+                bomVersionDetailMapper.insertBomVersionDetailBatch(mapList);
+//                bomVersionListMapper.insertBomVersionListBatch(mapList);
+                // 更新起始行号
+                startRow += limit;
+                // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+            } while (mapList.size() < 2000);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        //abc
+        return  AjaxResult.success("详细信息拉取成功");
+    }
+}

+ 75 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdMaterialInfoServiceImpl.java

@@ -0,0 +1,75 @@
+package com.zkqy.amichi.jd.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.zkqy.amichi.jd.domain.JdMaterialInfoVo;
+import com.zkqy.amichi.jd.domain.JdProductionBomsDetailsVo;
+import com.zkqy.amichi.jd.service.JdMaterialInfoService;
+import com.zkqy.amichi.mapper.MaterialInfoMapper;
+import com.zkqy.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class JdMaterialInfoServiceImpl implements JdMaterialInfoService {
+
+
+    @Autowired
+    private MaterialInfoMapper materialInfoMapper;
+
+    /**
+     * 拉取物料及时库存信息
+     * @return
+     */
+    @Override
+    public AjaxResult pullMaterialInfoJustStores() {
+        String queryString ="{\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"SubSystemId\": \"\",\n" +
+                "    \"FieldKeys\": \"FMaterialId.FNumber,FMaterialName,FModel,FModel1,F_PONP_TuHao,F_PONP_miaoshu,FStockId.FNumber,FStockName,FLot.FNumber,FStockUnitId.FName,FBaseQty,FStockStatusId.FName,FAVBQTY\",\n" +
+                "    \"FormId\": \"STK_Inventory\",\n" +
+                "    \"Limit\": 2000,\n" +
+                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FStockName\",\"Compare\":\"67\",\"Value\":\"原料仓D区-结构件、铸件\",\"Right\":\"\",\"Logic\":1},{\"Left\":\"\",\"FieldName\":\"FStockName\",\"Compare\":\"67\",\"Value\":\"原料仓B区-铁心、进出风板\",\"Right\":\"\",\"Logic\":1},{\"Left\":\"\",\"FieldName\":\"FStockName\",\"Compare\":\"67\",\"Value\":\"原料仓C区-漆、套管、骨架、铜线\",\"Right\":\"\",\"Logic\":1},{\"Left\":\"\",\"FieldName\":\"FStockName\",\"Compare\":\"67\",\"Value\":\"原料仓A区-标准件、小件\",\"Right\":\"\",\"Logic\":1}],\n" +
+                "    \"StartRow\": \"0\"\n" +
+                "}";
+        //查询条件
+        Map<String, String> map = JSON.parseObject(queryString, Map.class);
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+        int limit = 1000; // 每次查询的数量
+        List<JdMaterialInfoVo> mapList;
+        boolean flag = true;
+        try {
+            do {
+                // 更新查询条件中的起始行号
+                map.put("StartRow", String.valueOf(startRow));
+                // 查询数据
+                String resultJson = api.billQuery(JSON.toJSONString(map));
+                if (resultJson.isEmpty()||resultJson.equals("[]")) {
+                    // 处理空结果的情况
+                    flag = false;
+                }else {
+                    mapList = JSON.parseArray(resultJson, JdMaterialInfoVo.class);
+                    // 处理数据(例如插入到数据库)
+                    int i = materialInfoMapper.batchInsertJdMaterialInfoVo(mapList);
+                    System.out.println(1);
+                    if (mapList.size() < 1000) {
+                        flag = false;
+                    }
+                    // 更新起始行号
+                    startRow += limit;
+                    // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+                }
+
+            } while (flag);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        //abc
+        return AjaxResult.success("详细信息拉取成功");
+    }
+}

+ 127 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionBomsImpl.java

@@ -0,0 +1,127 @@
+package com.zkqy.amichi.jd.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.zkqy.amichi.jd.domain.JdBomVersionDetailVo;
+import com.zkqy.amichi.jd.domain.JdProductionBomsDetailsVo;
+import com.zkqy.amichi.jd.domain.JdProductionBomsVo;
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import com.zkqy.amichi.jd.service.JdProductionBomsService;
+import com.zkqy.amichi.jd.service.JdProductionOrderService;
+import com.zkqy.amichi.mapper.ProductionBomsDetailsMapper;
+import com.zkqy.amichi.mapper.ProductionBomsMapper;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class JdProductionBomsImpl implements JdProductionBomsService {
+
+
+    @Autowired
+    private ProductionBomsMapper productionBomsMapper;
+
+    @Autowired
+    private ProductionBomsDetailsMapper productionBomsDetailsMapper;
+
+
+    @Override
+    public AjaxResult jdProductionBomsPull() {
+        String queryString = "{\n" +
+                "    \"FormId\": \"PRD_PPBOM\",\n" +
+                "    \"FieldKeys\": \"FBillNo,FMaterialID.FNumber,FMaterialName,FMaterialModel2,FMaterialModel,F_PONP_SALEORDERNO,FPlanStartDate,FPlanFinishDate,FMOBillNO,FMOType.FName,FMoEntryStatus,FMOEntrySeq,FQty,FUnitID.FName,FPRDORGID,FWORKSHOPID,FWorkshopID.FName,FDOCUMENTSTATUS,FAUXPROPID,FBOMID.FNumber\",\n" +
+                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"10\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"StartRow\": 0,\n" +
+                "    \"Limit\": 1000,\n" +
+                "    \"SubSystemId\": \"\"\n" +
+                "}";
+        //查询条件
+        Map<String, String> map = JSON.parseObject(queryString, Map.class);
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+        int limit = 1000; // 每次查询的数量
+        List<JdProductionBomsVo> mapList;
+        boolean flag = true;
+        try {
+            do {
+                // 更新查询条件中的起始行号
+                map.put("StartRow", String.valueOf(startRow));
+                // 查询数据
+                String resultJson = api.billQuery(JSON.toJSONString(map));
+                if (resultJson.isEmpty()) {
+                    // 处理空结果的情况
+                    flag = false;
+                }
+                mapList = JSON.parseArray(resultJson, JdProductionBomsVo.class);
+                // 处理数据(例如插入到数据库)
+                int i = productionBomsMapper.insertBomsBatch(mapList);
+                System.out.println(1);
+                if (mapList.size() < 1000) {
+                    flag = false;
+                }
+                // 更新起始行号
+                startRow += limit;
+                // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+            } while (flag);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        //abc
+        return AjaxResult.success("详细信息拉取成功");
+    }
+
+
+    @Override
+    public AjaxResult jdProductionBomsDetailsPull() {
+        String queryString ="\n" +
+                "{\n" +
+                "    \"FormId\": \"PRD_PPBOM\",\n" +
+                "    \"FieldKeys\": \"FBillNo,FMaterialID2.FNumber,FMaterialName1,FMaterialModel1,F_PONP_BaseProperty,FMaterialType,FSupplyType,FUseRate,FOperID,FNumerator,FDenominator,FUnitID2.FName,FFixScrapQty,FScrapRate,FMustQty,FBASENUMERATOR,FBASEDENOMINATOR,FPROCESSID,FISSUETYPE,FBackFlushType,FSTOCKID,FPICKEDQTY,FNOPICKEDQTY,FINVENTORYQTY,FISSKIP,FSUPPLYMODE,FGLDBQTY,FBASENEEDQTY,FACTUALPICKQTY\",\n" +
+                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FBillNo\",\"Compare\":\"67\",\"Value\":\"PPBOM00053760\",\"Right\":\"\",\"Logic\":0}],\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"StartRow\": 0,\n" +
+                "    \"Limit\": 2000,\n" +
+                "    \"SubSystemId\": \"\"\n" +
+                "}";
+        //查询条件
+        Map<String, String> map = JSON.parseObject(queryString, Map.class);
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+        int limit = 1000; // 每次查询的数量
+        List<JdProductionBomsDetailsVo> mapList;
+        boolean flag = true;
+        try {
+            do {
+                // 更新查询条件中的起始行号
+                map.put("StartRow", String.valueOf(startRow));
+                // 查询数据
+                String resultJson = api.billQuery(JSON.toJSONString(map));
+                if (resultJson.isEmpty()) {
+                    // 处理空结果的情况
+                    flag = false;
+                }
+                mapList = JSON.parseArray(resultJson, JdProductionBomsDetailsVo.class);
+                // 处理数据(例如插入到数据库)
+                int i = productionBomsDetailsMapper.insertBomsBatch(mapList);
+                System.out.println(1);
+                if (mapList.size() < 1000) {
+                    flag = false;
+                }
+                // 更新起始行号
+                startRow += limit;
+                // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+            } while (flag);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        //abc
+        return AjaxResult.success("详细信息拉取成功");
+    }
+}

+ 363 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionOrderServiceImpl.java

@@ -0,0 +1,363 @@
+package com.zkqy.amichi.jd.service.impl;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.alibaba.fastjson2.JSON;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.zkqy.amichi.domain.PlanTaskDetails;
+import com.zkqy.amichi.domain.ProductionCardFlow;
+import com.zkqy.amichi.domain.ProductionPlanningManagement;
+import com.zkqy.amichi.mapper.PlanTaskDetailsMapper;
+import com.zkqy.amichi.mapper.ProductionCardFlowMapper;
+import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
+import com.zkqy.amichi.utils.AmichiCommissionNumberGenerator;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.jd.mapper.JdProductionOrderMapper;
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import com.zkqy.amichi.jd.service.JdProductionOrderService;
+
+/**
+ * 金蝶-生产订单信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+@Service
+public class JdProductionOrderServiceImpl implements JdProductionOrderService
+{
+    @Autowired
+    private JdProductionOrderMapper jdProductionOrderMapper;
+    @Autowired
+    private ProductionPlanningManagementMapper productionPlanningManagementMapper;
+
+    @Autowired
+    private PlanTaskDetailsMapper planTaskDetailsMapper;
+
+    @Autowired
+    private AmichiCommissionNumberGenerator generator;
+
+    @Autowired
+    private ProductionCardFlowMapper productionCardFlowMapper;
+
+    /**
+     * 查询金蝶-生产订单信息
+     * 
+     * @param id 金蝶-生产订单信息主键
+     * @return 金蝶-生产订单信息
+     */
+    @Override
+    public JdProductionOrder selectJdProductionOrderById(Long id)
+    {
+        return jdProductionOrderMapper.selectJdProductionOrderById(id);
+    }
+
+    /**
+     * 查询金蝶-生产订单信息列表
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 金蝶-生产订单信息
+     */
+    @Override
+    public List<JdProductionOrder> selectJdProductionOrderList(JdProductionOrder jdProductionOrder)
+    {
+        return jdProductionOrderMapper.selectJdProductionOrderList(jdProductionOrder);
+    }
+
+    /**
+     * 新增金蝶-生产订单信息
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    @Override
+    public int insertJdProductionOrder(JdProductionOrder jdProductionOrder)
+    {
+        jdProductionOrder.setCreateTime(DateUtils.getNowDate());
+        return jdProductionOrderMapper.insertJdProductionOrder(jdProductionOrder);
+    }
+
+    /**
+     * 修改金蝶-生产订单信息
+     * 
+     * @param jdProductionOrder 金蝶-生产订单信息
+     * @return 结果
+     */
+    @Override
+    public int updateJdProductionOrder(JdProductionOrder jdProductionOrder)
+    {
+        jdProductionOrder.setUpdateTime(DateUtils.getNowDate());
+        return jdProductionOrderMapper.updateJdProductionOrder(jdProductionOrder);
+    }
+
+    /**
+     * 批量删除金蝶-生产订单信息
+     * 
+     * @param ids 需要删除的金蝶-生产订单信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteJdProductionOrderByIds(Long[] ids)
+    {
+        return jdProductionOrderMapper.deleteJdProductionOrderByIds(ids);
+    }
+
+    /**
+     * 删除金蝶-生产订单信息信息
+     * 
+     * @param id 金蝶-生产订单信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteJdProductionOrderById(Long id)
+    {
+        return jdProductionOrderMapper.deleteJdProductionOrderById(id);
+    }
+
+//    @Override
+//    public AjaxResult jdProductionOrderPull(JdProductionOrder jdProductionOrder) {
+//        //1、查询开始同步的单据编号         String s="MO051961";
+//        String s = jdProductionOrderMapper.selectJdProductionOrderMaxId();
+//        //2、大于这个编号的所有订单全部拉取回来
+//            //2.1、new金蝶jdk工具类
+//            K3CloudApi api = new K3CloudApi();
+//            //2.2、
+//            HashMap<String,Object > stringHashMap=new HashMap();
+//            stringHashMap.put("FormId","PRD_MO");
+//                List<String> stringList=new ArrayList<>();
+//                stringList.add("FBillNo");
+//                stringList.add("FBillType");
+//                stringList.add("FDate");
+//                stringList.add("FDocumentStatus");
+//                stringList.add("FProductType");
+//                stringList.add("FMaterialId");
+//                stringList.add("FWorkShopID0");
+//                stringList.add("FQty");
+//                stringList.add("FStatus");
+//                stringList.add("FSaleOrderNo");
+//                stringList.add("FPickMtrlStatus");
+//                stringHashMap.put("FieldKeys",stringList.stream().collect(Collectors.joining(",")));
+//                HashMap gl=new HashMap();
+//                gl.put("FieldName","FBillNo");
+//                gl.put("Compare","72");
+//                gl.put("Value",s);
+//                gl.put("Left","");
+//                gl.put("Right","");
+//                gl.put("Logic","0");
+//                List<Map> mapList=new ArrayList<>();
+//                mapList.add(gl);
+//            stringHashMap.put("FilterString",mapList);
+//            String jsonString = JSON.toJSONString(stringHashMap);
+//            try {
+//                String resultJson = String.valueOf(api.executeBillQuery(jsonString));
+//                List<JdProductionOrder> arrayLists = JSON.parseArray(resultJson, JdProductionOrder.class);
+//                int i = jdProductionOrderMapper.insertBatchJdProductionOrder(arrayLists);
+//                if(i>0){
+//                    return AjaxResult.success("数据拉去成功");
+//                }
+//            } catch (Exception e) {
+//                throw new RuntimeException(e);
+//            }
+//            return AjaxResult.error("数据拉取失败");
+//    }
+
+
+    @Override
+    public AjaxResult jdProductionOrderPull(JdProductionOrder jdProductionOrder) {
+        //1、查询开始同步的单据编号
+//        String s = jdProductionOrderMapper.selectJdProductionOrderMaxId();
+        String s="MO051961";
+        //2、大于这个编号的所有订单全部拉取回来
+            //2.1、new金蝶jdk工具类
+            K3CloudApi api = new K3CloudApi();
+            //2.2、
+            HashMap<String,Object > stringHashMap=new HashMap();
+            stringHashMap.put("FormId","PRD_MO");
+                List<String> stringList=new ArrayList<>();
+                stringList.add("FBillNo");
+                stringList.add("FBillType");
+                stringList.add("FDate");
+                stringList.add("FDocumentStatus");
+                stringList.add("FProductType");
+                stringList.add("FMaterialId");
+                stringList.add("FWorkShopID0");
+                stringList.add("FQty");
+                stringList.add("FStatus");
+                stringList.add("FSaleOrderNo");
+                stringList.add("FPickMtrlStatus");
+                stringList.add("FMaterialId.FNumber");
+                stringList.add("FMaterialName");
+                stringList.add("F_PONP_BaseProperty");
+                stringList.add("FSpecification");
+                stringList.add("FUnitId.FName");
+            stringHashMap.put("FieldKeys",stringList.stream().collect(Collectors.joining(",")));
+                HashMap gl1=new HashMap();
+                gl1.put("FieldName","FBillNo");
+                gl1.put("Compare","72");
+                gl1.put("Value",s);
+                gl1.put("Left","");
+                gl1.put("Right","");
+                gl1.put("Logic","0");
+                HashMap gl2=new HashMap();
+                gl2.put("FieldName","FStatus");
+                gl2.put("Compare","105");
+                gl2.put("Value",4);
+                gl2.put("Left","");
+                gl2.put("Right","");
+                gl2.put("Logic","0");
+                List<Map> mapList=new ArrayList<>();
+                mapList.add(gl1);
+                mapList.add(gl2);
+                stringHashMap.put("FilterString",mapList);
+                stringHashMap.put("OrderString","FBillNo DESC");
+                stringHashMap.put("TopRowCount",0);
+                stringHashMap.put("StartRow",0);
+                stringHashMap.put("Limit",2000);
+                stringHashMap.put("SubSystemId","");
+                String jsonString = JSON.toJSONString(stringHashMap);
+
+        String resultJson = null;
+        try {
+            resultJson = api.billQuery(jsonString);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+                    //生产信息
+                    List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                    List<String> collect = jdProductionOrders.stream().map(JdProductionOrder::getDemandDocument).collect(Collectors.toList());
+                    Set<String> collect1 = collect.stream().collect(Collectors.toSet());
+                    List<String> collect2 = collect1.stream().collect(Collectors.toList());
+                    //销售订单信息
+                    List<Map> salesOrderInfoList = this.jdSalesOrderInfo(collect2);
+                    salesOrderInfoList.stream().forEach(item->{
+                        ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
+                        //任务编号
+                        String planNumnber = generator.generateCommissionNumber();
+                        //编号订单号
+                        String fBillNo = item.get("FBillNo").toString();//单据编号
+                        //合同号
+                        String F_PONP_Text = item.get("F.PONP.Text").toString();//合同号
+                        //下单时间
+                        String FDate = item.get("FDate").toString();//日期
+                        //要货日期
+                        String F_PONP_Datetime = item.get("F.PONP.Datetime").toString();//要货日期
+                        //特殊要求
+                        String F_PONP_Remarks1 = item.get("F.PONP.Remarks1").toString();//特殊要求
+                        ////备注
+                        String FNote = item.get("FNote").toString();
+                        productionPlanningManagement.setPlanNumber(planNumnber);
+                        productionPlanningManagement.setOrderNumber(fBillNo);
+                        productionPlanningManagement.setContractNumber(F_PONP_Text);
+                        productionPlanningManagement.setCompletionTime(F_PONP_Datetime);
+                        productionPlanningManagement.setSpecialRequirements(F_PONP_Datetime);
+                        productionPlanningManagement.setSpecialRequirements(F_PONP_Remarks1);
+                        productionPlanningManagement.setRemark(FNote);
+                        productionPlanningManagement.setPlanType("0"); //待生产
+                        productionPlanningManagement.setTaskStatus("2");//待排产
+                        //======处理基本的订单信息
+                        productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
+                        //生产信息循环
+                        jdProductionOrders.stream().filter(xi->xi.getDemandDocument().equals(item.get("FBillNo"))).forEach(a->{
+                            PlanTaskDetails planTaskDetails=new PlanTaskDetails();
+                            //需求单据
+                            planTaskDetails.setDemandDocument(a.getDocumentNumber());//单据编号
+                            planTaskDetails.setMaterialId(a.getMaterialCode());//原材料id
+                            planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
+                            planTaskDetails.setQuantity(a.getQuantity());//数量
+                            planTaskDetails.setMaterialName(a.getMaterialName());//名称
+                            planTaskDetails.setModelNumber(a.getModelNumber());//型号
+                            planTaskDetails.setSpecification(a.getSpecification());//规格
+                            planTaskDetails.setMaterialUnit(a.getUnit());//单位
+                            planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
+                        });
+                    });
+                    //处理订单序列号问题
+                    jdProductionOrders.stream().forEach(item->{
+                        String documentNumber = item.getDocumentNumber();//需求单据编号
+                        String stringQuery="{\n" +
+                                "    \"FormId\": \"PRD_MO\",\n" +
+                                "    \"FieldKeys\": \"FSerialNo,FSNQty1,FSaleOrderNo\",\n" +
+                                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FBillNo\",\"Compare\":\"67\",\"Value\":\""+documentNumber+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                                "    \"OrderString\": \"\",\n" +
+                                "    \"TopRowCount\": 0,\n" +
+                                "    \"StartRow\": 0,\n" +
+                                "    \"Limit\": 2000,\n" +
+                                "    \"SubSystemId\": \"\"\n" +
+                                "}";
+                        try {
+                            String xlhString = api.billQuery(stringQuery);
+                            List<Map> mapList1 = JSON.parseArray(xlhString,  Map.class);
+                            mapList1.forEach(b->{
+                                ProductionCardFlow flow=new ProductionCardFlow();
+                                String fSerialNo = b.get("FSerialNo").toString();
+                                String fSerialNo1 = b.get("FSNQty1").toString();
+                                BigDecimal bd=new BigDecimal(fSerialNo1);
+                                // 设置保留两位小数,并使用四舍五入模式
+                                BigDecimal formattedNumber = bd.setScale(2, RoundingMode.HALF_UP);
+
+                                String FSaleOrderNo = b.get("FSaleOrderNo").toString();
+                                flow.setSerialNumber(fSerialNo);
+                                flow.setPrintQuantity(formattedNumber.toString());
+                                flow.setDemandDocumentNumber(documentNumber);
+                                flow.setProductionOrderListId(FSaleOrderNo);
+                                int i = productionCardFlowMapper.insertProductionCardFlow(flow);
+                            });
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+            return AjaxResult.error("数据拉取失败");
+    }
+
+
+    /**
+     * 查询订单信息
+     */
+    List<Map>  jdSalesOrderInfo(List<String> stringList){
+        K3CloudApi api = new K3CloudApi();
+        //查询内容
+        HashMap queryNR=new HashMap();
+        queryNR.put("FormId","SAL_SaleOrder");
+            List<String> fieldKeysList=new ArrayList<>();
+            fieldKeysList.add("FBillNo"); //单据号
+        fieldKeysList.add("F_PONP_Text"); //合同号
+        fieldKeysList.add("FDate"); //日期
+        fieldKeysList.add("FCreateDate"); //创建时间
+        fieldKeysList.add("FNote"); //备注
+        fieldKeysList.add("F_PONP_Remarks1");//特殊要求
+        fieldKeysList.add("F_PONP_Datetime");//要货日期
+        queryNR.put("FieldKeys",fieldKeysList.stream().collect(Collectors.joining(",")));
+        //过滤条件组装
+        List<Map> conditionsList=new ArrayList<>();
+        stringList.stream().forEach(item->{
+            HashMap conditions=new HashMap();
+            conditions.put("FieldName","FBillNo");
+            conditions.put("Compare","67");
+            conditions.put("Value",item);
+            conditions.put("Left","");
+            conditions.put("Right","");
+            conditions.put("Logic",1);
+            conditionsList.add(conditions);
+        });
+        queryNR.put("FilterString",conditionsList);
+        queryNR.put("OrderString","FBillNo DESC");
+        queryNR.put("TopRowCount",0);
+        queryNR.put("StartRow",0);
+        queryNR.put("Limit",2000);
+        queryNR.put("SubSystemId","");
+        try {
+            String jsonString = JSON.toJSONString(queryNR);
+            String resultJson = String.valueOf(api.billQuery(jsonString));
+            //查询返回结果json
+            List<Map> mapList = JSON.parseArray(resultJson, Map.class);
+            return  mapList;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}

+ 70 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BomGroupMapper.java

@@ -0,0 +1,70 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BomGroup;
+import com.zkqy.amichi.jd.domain.JdBomGroupVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * BOM分组信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+@Mapper
+public interface BomGroupMapper 
+{
+    /**
+     * 查询BOM分组信息
+     * 
+     * @param id BOM分组信息主键
+     * @return BOM分组信息
+     */
+    public BomGroup selectBomGroupById(Long id);
+
+    /**
+     * 查询BOM分组信息列表
+     * 
+     * @param bomGroup BOM分组信息
+     * @return BOM分组信息集合
+     */
+    public List<BomGroup> selectBomGroupList(BomGroup bomGroup);
+
+    /**
+     * 新增BOM分组信息
+     * 
+     * @param bomGroup BOM分组信息
+     * @return 结果
+     */
+    public int insertBomGroup(BomGroup bomGroup);
+
+    /**
+     * 修改BOM分组信息
+     * 
+     * @param bomGroup BOM分组信息
+     * @return 结果
+     */
+    public int updateBomGroup(BomGroup bomGroup);
+
+    /**
+     * 删除BOM分组信息
+     * 
+     * @param id BOM分组信息主键
+     * @return 结果
+     */
+    public int deleteBomGroupById(Long id);
+
+    /**
+     * 批量删除BOM分组信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBomGroupByIds(Long[] ids);
+
+    /**
+     * 批量插入BOM分组信息
+     * @param mapList
+     */
+    int insertBomGroupBatch(List<JdBomGroupVo> mapList);
+}

+ 71 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BomVersionDetailMapper.java

@@ -0,0 +1,71 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BomVersionDetail;
+import com.zkqy.amichi.jd.domain.JdBomVersionDetailVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * bom明细Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-15
+ */
+@Mapper
+public interface BomVersionDetailMapper 
+{
+    /**
+     * 查询bom明细
+     * 
+     * @param id bom明细主键
+     * @return bom明细
+     */
+    public BomVersionDetail selectBomVersionDetailById(Long id);
+
+    /**
+     * 查询bom明细列表
+     * 
+     * @param bomVersionDetail bom明细
+     * @return bom明细集合
+     */
+    public List<BomVersionDetail> selectBomVersionDetailList(BomVersionDetail bomVersionDetail);
+
+    /**
+     * 新增bom明细
+     * 
+     * @param bomVersionDetail bom明细
+     * @return 结果
+     */
+    public int insertBomVersionDetail(BomVersionDetail bomVersionDetail);
+
+    /**
+     * 修改bom明细
+     * 
+     * @param bomVersionDetail bom明细
+     * @return 结果
+     */
+    public int updateBomVersionDetail(BomVersionDetail bomVersionDetail);
+
+    /**
+     * 删除bom明细
+     * 
+     * @param id bom明细主键
+     * @return 结果
+     */
+    public int deleteBomVersionDetailById(Long id);
+
+    /**
+     * 批量删除bom明细
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBomVersionDetailByIds(Long[] ids);
+
+    /**
+     * 批量插入物料详细信息
+     * @param mapList
+     * @return
+     */
+    int insertBomVersionDetailBatch(List<JdBomVersionDetailVo> mapList);
+}

+ 73 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/BomVersionListMapper.java

@@ -0,0 +1,73 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.zkqy.amichi.domain.BomVersionList;
+import com.zkqy.amichi.jd.domain.JdBomVersionListVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * BOM版本信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+@Mapper
+public interface BomVersionListMapper 
+{
+    /**
+     * 查询BOM版本信息
+     * 
+     * @param id BOM版本信息主键
+     * @return BOM版本信息
+     */
+    public BomVersionList selectBomVersionListById(Long id);
+
+    /**
+     * 查询BOM版本信息列表
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return BOM版本信息集合
+     */
+    public List<BomVersionList> selectBomVersionListList(BomVersionList bomVersionList);
+
+    /**
+     * 新增BOM版本信息
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return 结果
+     */
+    public int insertBomVersionList(BomVersionList bomVersionList);
+
+    /**
+     * 修改BOM版本信息
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return 结果
+     */
+    public int updateBomVersionList(BomVersionList bomVersionList);
+
+    /**
+     * 删除BOM版本信息
+     * 
+     * @param id BOM版本信息主键
+     * @return 结果
+     */
+    public int deleteBomVersionListById(Long id);
+
+    /**
+     * 批量删除BOM版本信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBomVersionListByIds(Long[] ids);
+
+    /**
+     * 批量插入BOM信息
+     * @param mapList
+     * @return
+     */
+    int insertBomVersionListBatch(List<JdBomVersionListVo> mapList);
+}

+ 8 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/MaterialInfoMapper.java

@@ -3,6 +3,7 @@ package com.zkqy.amichi.mapper;
 import java.util.List;
 
 import com.zkqy.amichi.domain.MaterialInfo;
+import com.zkqy.amichi.jd.domain.JdMaterialInfoVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -71,6 +72,13 @@ public interface MaterialInfoMapper
      */
     int batchInsert(List<MaterialInfo> toBeInserted);
 
+    /**
+     * 批量新增
+     * @param list
+     * @return
+     */
+    int batchInsertJdMaterialInfoVo(List<JdMaterialInfoVo> list);
+
     /**
      * 批量修改
      * @param toBeUpdated

+ 4 - 2
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionBomsDetailsMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.zkqy.amichi.domain.ProductionBomsDetails;
 import com.zkqy.amichi.domain.vo.ProductionBomsDetailsVo;
+import com.zkqy.amichi.jd.domain.JdProductionBomsDetailsVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -74,8 +75,9 @@ public interface ProductionBomsDetailsMapper
 
 
     /**
-     * 查询物料跟物料库存表
+     * 批量插入订单信息
+     * @param mapList
      * @return
      */
-    ProductionBomsDetailsVo selectProductionBomsDetailsListAndStockInfo();
+    int insertBomsBatch(List<JdProductionBomsDetailsVo> mapList);
 }

+ 9 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProductionBomsMapper.java

@@ -3,6 +3,7 @@ package com.zkqy.amichi.mapper;
 import java.util.List;
 
 import com.zkqy.amichi.domain.ProductionBoms;
+import com.zkqy.amichi.jd.domain.JdProductionBomsVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -61,4 +62,12 @@ public interface ProductionBomsMapper
      * @return 结果
      */
     public int deleteProductionBomsByIds(Long[] ids);
+
+
+    /**
+     * 批量插入生产BOM
+     * @param mapList
+     * @return
+     */
+    int  insertBomsBatch(List<JdProductionBomsVo> mapList);
 }

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.RingScanInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 指环王扫描日志信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+@Mapper
+public interface RingScanInformationMapper 
+{
+    /**
+     * 查询指环王扫描日志信息
+     * 
+     * @param id 指环王扫描日志信息主键
+     * @return 指环王扫描日志信息
+     */
+    public RingScanInformation selectRingScanInformationById(Long id);
+
+    /**
+     * 查询指环王扫描日志信息列表
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 指环王扫描日志信息集合
+     */
+    public List<RingScanInformation> selectRingScanInformationList(RingScanInformation ringScanInformation);
+
+    /**
+     * 新增指环王扫描日志信息
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 结果
+     */
+    public int insertRingScanInformation(RingScanInformation ringScanInformation);
+
+    /**
+     * 修改指环王扫描日志信息
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 结果
+     */
+    public int updateRingScanInformation(RingScanInformation ringScanInformation);
+
+    /**
+     * 删除指环王扫描日志信息
+     * 
+     * @param id 指环王扫描日志信息主键
+     * @return 结果
+     */
+    public int deleteRingScanInformationById(Long id);
+
+    /**
+     * 批量删除指环王扫描日志信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteRingScanInformationByIds(Long[] ids);
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TerminalInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 终端信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-10-09
+ */
+@Mapper
+public interface TerminalInformationMapper 
+{
+    /**
+     * 查询终端信息
+     * 
+     * @param id 终端信息主键
+     * @return 终端信息
+     */
+    public TerminalInformation selectTerminalInformationById(Long id);
+
+    /**
+     * 查询终端信息列表
+     * 
+     * @param terminalInformation 终端信息
+     * @return 终端信息集合
+     */
+    public List<TerminalInformation> selectTerminalInformationList(TerminalInformation terminalInformation);
+
+    /**
+     * 新增终端信息
+     * 
+     * @param terminalInformation 终端信息
+     * @return 结果
+     */
+    public int insertTerminalInformation(TerminalInformation terminalInformation);
+
+    /**
+     * 修改终端信息
+     * 
+     * @param terminalInformation 终端信息
+     * @return 结果
+     */
+    public int updateTerminalInformation(TerminalInformation terminalInformation);
+
+    /**
+     * 删除终端信息
+     * 
+     * @param id 终端信息主键
+     * @return 结果
+     */
+    public int deleteTerminalInformationById(Long id);
+
+    /**
+     * 批量删除终端信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTerminalInformationByIds(Long[] ids);
+}

+ 71 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IBomGroupService.java

@@ -0,0 +1,71 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BomGroup;
+import com.zkqy.amichi.domain.vo.BomGroupVo;
+import com.zkqy.amichi.jd.domain.JdBomGroupVo;
+
+/**
+ * BOM分组信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+public interface IBomGroupService 
+{
+    /**
+     * 查询BOM分组信息
+     * 
+     * @param id BOM分组信息主键
+     * @return BOM分组信息
+     */
+    public BomGroup selectBomGroupById(Long id);
+
+    /**
+     * 查询BOM分组信息列表
+     * 
+     * @param bomGroup BOM分组信息
+     * @return BOM分组信息集合
+     */
+    public List<BomGroup> selectBomGroupList(BomGroup bomGroup);
+
+    /**
+     * 新增BOM分组信息
+     * 
+     * @param bomGroup BOM分组信息
+     * @return 结果
+     */
+    public int insertBomGroup(BomGroup bomGroup);
+
+
+
+    /**
+     * 修改BOM分组信息
+     * 
+     * @param bomGroup BOM分组信息
+     * @return 结果
+     */
+    public int updateBomGroup(BomGroup bomGroup);
+
+    /**
+     * 批量删除BOM分组信息
+     * 
+     * @param ids 需要删除的BOM分组信息主键集合
+     * @return 结果
+     */
+    public int deleteBomGroupByIds(Long[] ids);
+
+    /**
+     * 删除BOM分组信息信息
+     * 
+     * @param id BOM分组信息主键
+     * @return 结果
+     */
+    public int deleteBomGroupById(Long id);
+
+    /**
+     * 构建树型结构数据
+     * @return
+     */
+    List<BomGroupVo> selectBomGroupListTree();
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BomVersionDetail;
+
+/**
+ * bom明细Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-15
+ */
+public interface IBomVersionDetailService 
+{
+    /**
+     * 查询bom明细
+     * 
+     * @param id bom明细主键
+     * @return bom明细
+     */
+    public BomVersionDetail selectBomVersionDetailById(Long id);
+
+    /**
+     * 查询bom明细列表
+     * 
+     * @param bomVersionDetail bom明细
+     * @return bom明细集合
+     */
+    public List<BomVersionDetail> selectBomVersionDetailList(BomVersionDetail bomVersionDetail);
+
+    /**
+     * 新增bom明细
+     * 
+     * @param bomVersionDetail bom明细
+     * @return 结果
+     */
+    public int insertBomVersionDetail(BomVersionDetail bomVersionDetail);
+
+    /**
+     * 修改bom明细
+     * 
+     * @param bomVersionDetail bom明细
+     * @return 结果
+     */
+    public int updateBomVersionDetail(BomVersionDetail bomVersionDetail);
+
+    /**
+     * 批量删除bom明细
+     * 
+     * @param ids 需要删除的bom明细主键集合
+     * @return 结果
+     */
+    public int deleteBomVersionDetailByIds(Long[] ids);
+
+    /**
+     * 删除bom明细信息
+     * 
+     * @param id bom明细主键
+     * @return 结果
+     */
+    public int deleteBomVersionDetailById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.BomVersionList;
+
+/**
+ * BOM版本信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+public interface IBomVersionListService 
+{
+    /**
+     * 查询BOM版本信息
+     * 
+     * @param id BOM版本信息主键
+     * @return BOM版本信息
+     */
+    public BomVersionList selectBomVersionListById(Long id);
+
+    /**
+     * 查询BOM版本信息列表
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return BOM版本信息集合
+     */
+    public List<BomVersionList> selectBomVersionListList(BomVersionList bomVersionList);
+
+    /**
+     * 新增BOM版本信息
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return 结果
+     */
+    public int insertBomVersionList(BomVersionList bomVersionList);
+
+    /**
+     * 修改BOM版本信息
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return 结果
+     */
+    public int updateBomVersionList(BomVersionList bomVersionList);
+
+    /**
+     * 批量删除BOM版本信息
+     * 
+     * @param ids 需要删除的BOM版本信息主键集合
+     * @return 结果
+     */
+    public int deleteBomVersionListByIds(Long[] ids);
+
+    /**
+     * 删除BOM版本信息信息
+     * 
+     * @param id BOM版本信息主键
+     * @return 结果
+     */
+    public int deleteBomVersionListById(Long id);
+}

+ 25 - 26
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProductionBomsDetailsService.java

@@ -1,61 +1,60 @@
 package com.zkqy.amichi.service;
 
 import java.util.List;
-
 import com.zkqy.amichi.domain.ProductionBomsDetails;
 
 /**
- * 生产用料清单详细Service接口
- * 
- * @author zkqy
- * @date 2024-07-18
+ * bom明细Service接口
+ *
+ * @author ruoyi
+ * @date 2024-10-16
  */
-public interface IProductionBomsDetailsService 
+public interface IProductionBomsDetailsService
 {
     /**
-     * 查询生产用料清单详
-     * 
-     * @param id 生产用料清单详细主键
-     * @return 生产用料清单详
+     * 查询bom明
+     *
+     * @param id bom明细主键
+     * @return bom明
      */
     public ProductionBomsDetails selectProductionBomsDetailsById(Long id);
 
     /**
-     * 查询生产用料清单详细列表
-     * 
-     * @param productionBomsDetails 生产用料清单详
-     * @return 生产用料清单详细集合
+     * 查询bom明细列表
+     *
+     * @param productionBomsDetails bom明
+     * @return bom明细集合
      */
     public List<ProductionBomsDetails> selectProductionBomsDetailsList(ProductionBomsDetails productionBomsDetails);
 
     /**
-     * 新增生产用料清单详
-     * 
-     * @param productionBomsDetails 生产用料清单详
+     * 新增bom明
+     *
+     * @param productionBomsDetails bom明
      * @return 结果
      */
     public int insertProductionBomsDetails(ProductionBomsDetails productionBomsDetails);
 
     /**
-     * 修改生产用料清单详
-     * 
-     * @param productionBomsDetails 生产用料清单详
+     * 修改bom明
+     *
+     * @param productionBomsDetails bom明
      * @return 结果
      */
     public int updateProductionBomsDetails(ProductionBomsDetails productionBomsDetails);
 
     /**
-     * 批量删除生产用料清单详
-     * 
-     * @param ids 需要删除的生产用料清单详细主键集合
+     * 批量删除bom明
+     *
+     * @param ids 需要删除的bom明细主键集合
      * @return 结果
      */
     public int deleteProductionBomsDetailsByIds(Long[] ids);
 
     /**
-     * 删除生产用料清单详细信息
-     * 
-     * @param id 生产用料清单详细主键
+     * 删除bom明细信息
+     *
+     * @param id bom明细主键
      * @return 结果
      */
     public int deleteProductionBomsDetailsById(Long id);

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.RingScanInformation;
+
+/**
+ * 指环王扫描日志信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+public interface IRingScanInformationService 
+{
+    /**
+     * 查询指环王扫描日志信息
+     * 
+     * @param id 指环王扫描日志信息主键
+     * @return 指环王扫描日志信息
+     */
+    public RingScanInformation selectRingScanInformationById(Long id);
+
+    /**
+     * 查询指环王扫描日志信息列表
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 指环王扫描日志信息集合
+     */
+    public List<RingScanInformation> selectRingScanInformationList(RingScanInformation ringScanInformation);
+
+    /**
+     * 新增指环王扫描日志信息
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 结果
+     */
+    public int insertRingScanInformation(RingScanInformation ringScanInformation);
+
+    /**
+     * 修改指环王扫描日志信息
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 结果
+     */
+    public int updateRingScanInformation(RingScanInformation ringScanInformation);
+
+    /**
+     * 批量删除指环王扫描日志信息
+     * 
+     * @param ids 需要删除的指环王扫描日志信息主键集合
+     * @return 结果
+     */
+    public int deleteRingScanInformationByIds(Long[] ids);
+
+    /**
+     * 删除指环王扫描日志信息信息
+     * 
+     * @param id 指环王扫描日志信息主键
+     * @return 结果
+     */
+    public int deleteRingScanInformationById(Long id);
+}

+ 13 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStationInformationService.java

@@ -3,6 +3,7 @@ package com.zkqy.amichi.service;
 import java.util.List;
 
 import com.zkqy.amichi.domain.StationInformation;
+import com.zkqy.amichi.domain.vo.StationProductScanningRingVo;
 
 /**
  * 工位信息Service接口
@@ -60,5 +61,17 @@ public interface IStationInformationService
      */
     public int deleteStationInformationById(Long id);
 
+    /**
+     * 手持机扫描
+     * @param contentString
+     * @return
+     */
     String stationProductScanning(String contentString);
+
+    /**
+     * 指环王扫描
+     * @param stationProductScanningRingVo
+     * @return
+     */
+    String stationProductScanningRing(StationProductScanningRingVo stationProductScanningRingVo);
 }

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.TerminalInformation;
+
+/**
+ * 终端信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-10-09
+ */
+public interface ITerminalInformationService 
+{
+    /**
+     * 查询终端信息
+     * 
+     * @param id 终端信息主键
+     * @return 终端信息
+     */
+    public TerminalInformation selectTerminalInformationById(Long id);
+
+    /**
+     * 查询终端信息列表
+     * 
+     * @param terminalInformation 终端信息
+     * @return 终端信息集合
+     */
+    public List<TerminalInformation> selectTerminalInformationList(TerminalInformation terminalInformation);
+
+    /**
+     * 新增终端信息
+     * 
+     * @param terminalInformation 终端信息
+     * @return 结果
+     */
+    public int insertTerminalInformation(TerminalInformation terminalInformation);
+
+    /**
+     * 修改终端信息
+     * 
+     * @param terminalInformation 终端信息
+     * @return 结果
+     */
+    public int updateTerminalInformation(TerminalInformation terminalInformation);
+
+    /**
+     * 批量删除终端信息
+     * 
+     * @param ids 需要删除的终端信息主键集合
+     * @return 结果
+     */
+    public int deleteTerminalInformationByIds(Long[] ids);
+
+    /**
+     * 删除终端信息信息
+     * 
+     * @param id 终端信息主键
+     * @return 结果
+     */
+    public int deleteTerminalInformationById(Long id);
+}

+ 150 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BomGroupServiceImpl.java

@@ -0,0 +1,150 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.zkqy.amichi.domain.SemiFinishedMaterialList;
+import com.zkqy.amichi.domain.vo.BomGroupVo;
+import com.zkqy.amichi.domain.vo.SemiFinishedMaterialListVo;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.BomGroupMapper;
+import com.zkqy.amichi.domain.BomGroup;
+import com.zkqy.amichi.service.IBomGroupService;
+
+/**
+ * BOM分组信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+@Service
+public class BomGroupServiceImpl implements IBomGroupService 
+{
+
+    @Autowired
+    private BomGroupMapper bomGroupMapper;
+
+    /**
+     * 查询BOM分组信息
+     * 
+     * @param id BOM分组信息主键
+     * @return BOM分组信息
+     */
+    @Override
+    public BomGroup selectBomGroupById(Long id)
+    {
+        return bomGroupMapper.selectBomGroupById(id);
+    }
+
+    /**
+     * 查询BOM分组信息列表
+     * 
+     * @param bomGroup BOM分组信息
+     * @return BOM分组信息
+     */
+    @Override
+    public List<BomGroup> selectBomGroupList(BomGroup bomGroup)
+    {
+        return bomGroupMapper.selectBomGroupList(bomGroup);
+    }
+
+    /**
+     * 新增BOM分组信息
+     * 
+     * @param bomGroup BOM分组信息
+     * @return 结果
+     */
+    @Override
+    public int insertBomGroup(BomGroup bomGroup)
+    {
+        bomGroup.setCreateTime(DateUtils.getNowDate());
+        return bomGroupMapper.insertBomGroup(bomGroup);
+    }
+
+    /**
+     * 修改BOM分组信息
+     * 
+     * @param bomGroup BOM分组信息
+     * @return 结果
+     */
+    @Override
+    public int updateBomGroup(BomGroup bomGroup)
+    {
+        bomGroup.setUpdateTime(DateUtils.getNowDate());
+        return bomGroupMapper.updateBomGroup(bomGroup);
+    }
+
+    /**
+     * 批量删除BOM分组信息
+     * 
+     * @param ids 需要删除的BOM分组信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBomGroupByIds(Long[] ids)
+    {
+        return bomGroupMapper.deleteBomGroupByIds(ids);
+    }
+
+    /**
+     * 删除BOM分组信息信息
+     * 
+     * @param id BOM分组信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBomGroupById(Long id)
+    {
+        return bomGroupMapper.deleteBomGroupById(id);
+    }
+
+    /**
+     * 查询abc
+     * @return
+     */
+    @Override
+    public List<BomGroupVo> selectBomGroupListTree() {
+        //设置查询条件查询全部信息
+        BomGroup bomGroup=new BomGroup();
+        List<BomGroup> bomGroupsAll = bomGroupMapper.selectBomGroupList(bomGroup);
+        //查询父级别的
+        List<BomGroup> bomGroupsParent = bomGroupsAll.stream().filter(item->item.getId().toString().equals("0")).collect(Collectors.toList());
+        //循环
+        List<BomGroupVo> collect = bomGroupsParent.stream().map(item -> {
+            // new一个变量
+            BomGroupVo bomGroupVo=new BomGroupVo();
+            bomGroupVo.setId(item.getId());
+            bomGroupVo.setfName(item.getfName());
+            bomGroupVo.setfParentid(item.getfParentid());
+            bomGroupVo.setfNumber(item.getfNumber());//
+            //调用递归方法
+            List<BomGroupVo> children = this.findChildren(item.getId().toString(),bomGroupsAll);
+            bomGroupVo.setChilderns(children);
+            return bomGroupVo;
+        }).collect(Collectors.toList());
+        return collect;
+    }
+
+    private List<BomGroupVo> findChildren(String parentId, List<BomGroup> bomGroupList) {
+        List<BomGroupVo> collect = bomGroupList.stream()
+                .filter(child -> child.getfParentid().equals(parentId))
+                .map(child -> {
+                    // new一个变量
+                    BomGroupVo bomGroupVo=new BomGroupVo();
+                    bomGroupVo.setId(child.getId());
+                    bomGroupVo.setfName(child.getfName());
+                    bomGroupVo.setfParentid(child.getfParentid());
+                    bomGroupVo.setfNumber(child.getfNumber());//
+                    // 递归查找孙子节点
+                    List<BomGroupVo> children = findChildren(child.getId().toString(), bomGroupList);
+                    if (!children.isEmpty()) {
+                        bomGroupVo.setChilderns(children);
+                    }
+                    return  bomGroupVo;
+                }).collect(Collectors.toList());
+        return  collect;
+    }
+}

+ 93 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BomVersionDetailServiceImpl.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.BomVersionDetailMapper;
+import com.zkqy.amichi.domain.BomVersionDetail;
+import com.zkqy.amichi.service.IBomVersionDetailService;
+
+/**
+ * bom明细Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-10-15
+ */
+@Service
+public class BomVersionDetailServiceImpl implements IBomVersionDetailService 
+{
+    @Autowired
+    private BomVersionDetailMapper bomVersionDetailMapper;
+
+    /**
+     * 查询bom明细
+     * 
+     * @param id bom明细主键
+     * @return bom明细
+     */
+    @Override
+    public BomVersionDetail selectBomVersionDetailById(Long id)
+    {
+        return bomVersionDetailMapper.selectBomVersionDetailById(id);
+    }
+
+    /**
+     * 查询bom明细列表
+     * 
+     * @param bomVersionDetail bom明细
+     * @return bom明细
+     */
+    @Override
+    public List<BomVersionDetail> selectBomVersionDetailList(BomVersionDetail bomVersionDetail)
+    {
+        return bomVersionDetailMapper.selectBomVersionDetailList(bomVersionDetail);
+    }
+
+    /**
+     * 新增bom明细
+     * 
+     * @param bomVersionDetail bom明细
+     * @return 结果
+     */
+    @Override
+    public int insertBomVersionDetail(BomVersionDetail bomVersionDetail)
+    {
+        return bomVersionDetailMapper.insertBomVersionDetail(bomVersionDetail);
+    }
+
+    /**
+     * 修改bom明细
+     * 
+     * @param bomVersionDetail bom明细
+     * @return 结果
+     */
+    @Override
+    public int updateBomVersionDetail(BomVersionDetail bomVersionDetail)
+    {
+        return bomVersionDetailMapper.updateBomVersionDetail(bomVersionDetail);
+    }
+
+    /**
+     * 批量删除bom明细
+     * 
+     * @param ids 需要删除的bom明细主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBomVersionDetailByIds(Long[] ids)
+    {
+        return bomVersionDetailMapper.deleteBomVersionDetailByIds(ids);
+    }
+
+    /**
+     * 删除bom明细信息
+     * 
+     * @param id bom明细主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBomVersionDetailById(Long id)
+    {
+        return bomVersionDetailMapper.deleteBomVersionDetailById(id);
+    }
+}

+ 97 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/BomVersionListServiceImpl.java

@@ -0,0 +1,97 @@
+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.BomVersionListMapper;
+import com.zkqy.amichi.domain.BomVersionList;
+import com.zkqy.amichi.service.IBomVersionListService;
+
+/**
+ * BOM版本信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-10-14
+ */
+@Service
+public class BomVersionListServiceImpl implements IBomVersionListService {
+
+    @Autowired
+    private BomVersionListMapper bomVersionListMapper;
+
+    /**
+     * 查询BOM版本信息
+     * 
+     * @param id BOM版本信息主键
+     * @return BOM版本信息
+     */
+    @Override
+    public BomVersionList selectBomVersionListById(Long id)
+    {
+        return bomVersionListMapper.selectBomVersionListById(id);
+    }
+
+    /**
+     * 查询BOM版本信息列表
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return BOM版本信息
+     */
+    @Override
+    public List<BomVersionList> selectBomVersionListList(BomVersionList bomVersionList)
+    {
+        return bomVersionListMapper.selectBomVersionListList(bomVersionList);
+    }
+
+    /**
+     * 新增BOM版本信息
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return 结果
+     */
+    @Override
+    public int insertBomVersionList(BomVersionList bomVersionList)
+    {
+        bomVersionList.setCreateTime(DateUtils.getNowDate());
+        return bomVersionListMapper.insertBomVersionList(bomVersionList);
+    }
+
+    /**
+     * 修改BOM版本信息
+     * 
+     * @param bomVersionList BOM版本信息
+     * @return 结果
+     */
+    @Override
+    public int updateBomVersionList(BomVersionList bomVersionList)
+    {
+        bomVersionList.setUpdateTime(DateUtils.getNowDate());
+        return bomVersionListMapper.updateBomVersionList(bomVersionList);
+    }
+
+    /**
+     * 批量删除BOM版本信息
+     * 
+     * @param ids 需要删除的BOM版本信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBomVersionListByIds(Long[] ids)
+    {
+        return bomVersionListMapper.deleteBomVersionListByIds(ids);
+    }
+
+    /**
+     * 删除BOM版本信息信息
+     * 
+     * @param id BOM版本信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBomVersionListById(Long id)
+    {
+        return bomVersionListMapper.deleteBomVersionListById(id);
+    }
+}

+ 1 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/MaterialInfoServiceImpl.java

@@ -245,7 +245,7 @@ public class MaterialInfoServiceImpl implements IMaterialInfoService
            MaterialInfo materialInfo1=new MaterialInfo();
            materialInfo1.setMaterialCode(materialInfo.getMaterialCode());
            materialInfo1.setMaterialName(materialInfo.getMaterialName());
-           materialInfo1.setCkId(materialInfo.getCkId());
+           materialInfo1.setCkNumber(materialInfo.getCkNumber());
            //根据物料编码和物料名称
            List<MaterialInfo> materialInfos1 = materialInfoMapper.selectMaterialInfoList(materialInfo1);
            if(materialInfos1.size()>0){

+ 26 - 31
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionBomsDetailsServiceImpl.java

@@ -1,31 +1,29 @@
 package com.zkqy.amichi.service.impl;
 
 import java.util.List;
-
-import com.zkqy.amichi.domain.ProductionBomsDetails;
-import com.zkqy.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zkqy.amichi.mapper.ProductionBomsDetailsMapper;
+import com.zkqy.amichi.domain.ProductionBomsDetails;
 import com.zkqy.amichi.service.IProductionBomsDetailsService;
 
 /**
- * 生产用料清单详细Service业务层处理
- * 
- * @author zkqy
- * @date 2024-07-18
+ * bom明细Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-10-16
  */
 @Service
-public class ProductionBomsDetailsServiceImpl implements IProductionBomsDetailsService 
+public class ProductionBomsDetailsServiceImpl implements IProductionBomsDetailsService
 {
     @Autowired
     private ProductionBomsDetailsMapper productionBomsDetailsMapper;
 
     /**
-     * 查询生产用料清单详
-     * 
-     * @param id 生产用料清单详细主键
-     * @return 生产用料清单详
+     * 查询bom明
+     *
+     * @param id bom明细主键
+     * @return bom明
      */
     @Override
     public ProductionBomsDetails selectProductionBomsDetailsById(Long id)
@@ -34,10 +32,10 @@ public class ProductionBomsDetailsServiceImpl implements IProductionBomsDetailsS
     }
 
     /**
-     * 查询生产用料清单详细列表
-     * 
-     * @param productionBomsDetails 生产用料清单详
-     * @return 生产用料清单详
+     * 查询bom明细列表
+     *
+     * @param productionBomsDetails bom明
+     * @return bom明
      */
     @Override
     public List<ProductionBomsDetails> selectProductionBomsDetailsList(ProductionBomsDetails productionBomsDetails)
@@ -46,36 +44,33 @@ public class ProductionBomsDetailsServiceImpl implements IProductionBomsDetailsS
     }
 
     /**
-     * 新增生产用料清单详
-     * 
-     * @param productionBomsDetails 生产用料清单详
+     * 新增bom明
+     *
+     * @param productionBomsDetails bom明
      * @return 结果
      */
     @Override
     public int insertProductionBomsDetails(ProductionBomsDetails productionBomsDetails)
     {
-        productionBomsDetails.setCreateTime(DateUtils.getNowDate());
-        productionBomsDetails.setDelFlag("0");
         return productionBomsDetailsMapper.insertProductionBomsDetails(productionBomsDetails);
     }
 
     /**
-     * 修改生产用料清单详
-     * 
-     * @param productionBomsDetails 生产用料清单详
+     * 修改bom明
+     *
+     * @param productionBomsDetails bom明
      * @return 结果
      */
     @Override
     public int updateProductionBomsDetails(ProductionBomsDetails productionBomsDetails)
     {
-        productionBomsDetails.setUpdateTime(DateUtils.getNowDate());
         return productionBomsDetailsMapper.updateProductionBomsDetails(productionBomsDetails);
     }
 
     /**
-     * 批量删除生产用料清单详
-     * 
-     * @param ids 需要删除的生产用料清单详细主键
+     * 批量删除bom明
+     *
+     * @param ids 需要删除的bom明细主键
      * @return 结果
      */
     @Override
@@ -85,9 +80,9 @@ public class ProductionBomsDetailsServiceImpl implements IProductionBomsDetailsS
     }
 
     /**
-     * 删除生产用料清单详细信息
-     * 
-     * @param id 生产用料清单详细主键
+     * 删除bom明细信息
+     *
+     * @param id bom明细主键
      * @return 结果
      */
     @Override

+ 1 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionBomsServiceImpl.java

@@ -18,6 +18,7 @@ import com.zkqy.amichi.service.IProductionBomsService;
 @Service
 public class ProductionBomsServiceImpl implements IProductionBomsService 
 {
+
     @Autowired
     private ProductionBomsMapper productionBomsMapper;
 

+ 14 - 11
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionPlanningManagementServiceImpl.java

@@ -134,22 +134,25 @@ public class ProductionPlanningManagementServiceImpl implements IProductionPlann
         List<ProductionPlanningManagementVo> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementListVo(productionPlanningManagement);
         //当前计划信息循环
         List<ProductionPlanningManagementVo> collect = productionPlanningManagements.stream().map(item -> {
-           /** //查询当前计划的详情信息
-            TaskDetails taskDetails = new TaskDetails();
-            taskDetails.setTaskId(item.getTaskId());
-            List<TaskDetails> taskDetails1 = taskDetailsService.selectTaskDetailsList(taskDetails);
-            //保存当前计划的详细信息
-            item.setTaskDetails(taskDetails1);**/
             //查询计划详细信息
             PlanTaskDetails planTaskDetails1=new PlanTaskDetails();
             planTaskDetails1.setPlanId(item.getId());
             List<PlanTaskDetails> planTaskDetails = planTaskDetailsMapper.selectPlanTaskDetailsList(planTaskDetails1);
+            // 使用 Stream API 计算总和
+            // 使用 Stream API 计算总和
+            Double totalQuantity = planTaskDetails.stream()
+                    .mapToDouble(c -> {
+                        try {
+                            return Double.parseDouble(c.getQuantity());
+                        } catch (NumberFormatException e) {
+                            // 处理异常,例如记录日志或返回默认值
+                            System.err.println("Invalid quantity value: " + c.getQuantity());
+                            return 0.0; // 返回0或其他默认值
+                        }
+                    })
+                    .sum();
+            item.setQuantity(totalQuantity.toString());
             item.setPlanTaskDetails(planTaskDetails);
-            //查询任务单信息(主要是为了拿订单号,或者其他信息,这里面我没有做字段冗余)
-            ProductionTasks productionTasks = productionTasksMapper.selectProductionTasksById(Long.valueOf(item.getTaskId()));
-            Long id1 = item.getId();
-            BeanUtils.copyProperties(productionTasks,item);
-            item.setId(id1);
             return item;
         }).collect(Collectors.toList());
         //返回信息

+ 1 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProductionTasksServiceImpl.java

@@ -250,7 +250,7 @@ public class ProductionTasksServiceImpl implements IProductionTasksService {
             productionPlanningManagement.setSparea(totalTime.get().toString());//存这个时间计算出来的东西
             //把计划添加进去
             productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-            //添加到计划表中
+            //添加到计划详情表中
             taskDetails.forEach(item->{
                 //添加详情信息到计划信息中
                 PlanTaskDetails planTaskDetails=new PlanTaskDetails();

+ 93 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/RingScanInformationServiceImpl.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.RingScanInformationMapper;
+import com.zkqy.amichi.domain.RingScanInformation;
+import com.zkqy.amichi.service.IRingScanInformationService;
+
+/**
+ * 指环王扫描日志信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-10-12
+ */
+@Service
+public class RingScanInformationServiceImpl implements IRingScanInformationService 
+{
+    @Autowired
+    private RingScanInformationMapper ringScanInformationMapper;
+
+    /**
+     * 查询指环王扫描日志信息
+     * 
+     * @param id 指环王扫描日志信息主键
+     * @return 指环王扫描日志信息
+     */
+    @Override
+    public RingScanInformation selectRingScanInformationById(Long id)
+    {
+        return ringScanInformationMapper.selectRingScanInformationById(id);
+    }
+
+    /**
+     * 查询指环王扫描日志信息列表
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 指环王扫描日志信息
+     */
+    @Override
+    public List<RingScanInformation> selectRingScanInformationList(RingScanInformation ringScanInformation)
+    {
+        return ringScanInformationMapper.selectRingScanInformationList(ringScanInformation);
+    }
+
+    /**
+     * 新增指环王扫描日志信息
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 结果
+     */
+    @Override
+    public int insertRingScanInformation(RingScanInformation ringScanInformation)
+    {
+        return ringScanInformationMapper.insertRingScanInformation(ringScanInformation);
+    }
+
+    /**
+     * 修改指环王扫描日志信息
+     * 
+     * @param ringScanInformation 指环王扫描日志信息
+     * @return 结果
+     */
+    @Override
+    public int updateRingScanInformation(RingScanInformation ringScanInformation)
+    {
+        return ringScanInformationMapper.updateRingScanInformation(ringScanInformation);
+    }
+
+    /**
+     * 批量删除指环王扫描日志信息
+     * 
+     * @param ids 需要删除的指环王扫描日志信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteRingScanInformationByIds(Long[] ids)
+    {
+        return ringScanInformationMapper.deleteRingScanInformationByIds(ids);
+    }
+
+    /**
+     * 删除指环王扫描日志信息信息
+     * 
+     * @param id 指环王扫描日志信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteRingScanInformationById(Long id)
+    {
+        return ringScanInformationMapper.deleteRingScanInformationById(id);
+    }
+}

+ 202 - 16
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java

@@ -1,18 +1,15 @@
 package com.zkqy.amichi.service.impl;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
 import cn.hutool.core.date.DateTime;
-import com.zkqy.amichi.domain.ExceptionReportInformationSheet;
-import com.zkqy.amichi.domain.ProductionPlanningManagement;
-import com.zkqy.amichi.domain.ReportInformationSheet;
+import com.zkqy.amichi.domain.*;
+import com.zkqy.amichi.domain.vo.StationProductScanningRingVo;
+import com.zkqy.amichi.mapper.*;
 import com.zkqy.amichi.utils.WarehouseEntryNumberGenerator;
-import com.zkqy.amichi.domain.StationInformation;
-import com.zkqy.amichi.mapper.ExceptionReportInformationSheetMapper;
-import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
-import com.zkqy.amichi.mapper.ReportInformationSheetMapper;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeLog;
 import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
@@ -21,7 +18,6 @@ import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.zkqy.amichi.mapper.StationInformationMapper;
 import com.zkqy.amichi.service.IStationInformationService;
 
 /**
@@ -31,7 +27,7 @@ import com.zkqy.amichi.service.IStationInformationService;
  * @date 2024-08-20
  */
 @Service
-public class StationInformationServiceImpl implements IStationInformationService 
+public class StationInformationServiceImpl implements IStationInformationService
 {
     @Autowired
     private StationInformationMapper stationInformationMapper;
@@ -53,6 +49,15 @@ public class StationInformationServiceImpl implements IStationInformationService
     @Autowired
     private  PlanTaskDetailsServiceImpl planTaskDetailsService;
 
+    @Autowired
+    private RingScanInformationMapper ringScanInformationMapper;
+
+    public static void main(String[] args) {
+       String aaa="scan@&GWM-001&SMSB001";
+        boolean contains = aaa.contains("scan@");
+        System.out.println(contains);
+    }
+
     /**
      * 查询工位信息
      * 
@@ -178,7 +183,8 @@ public class StationInformationServiceImpl implements IStationInformationService
                 StationInformation stationInformation1 = stationInformationsTwo.get(0);
                 return "工位:"+stationInformation1.getStationName()+" 班组:"+stationInformation1.getTeamName();
             }
-            else{ //产品扫描逻辑
+            else{
+                //产品扫描逻辑
                 String[] content = contentString.split("&");
                 StationInformation stationInformation=new StationInformation();
                 stationInformation.setDeviceName(content[1]);//设备名称
@@ -333,6 +339,188 @@ public class StationInformationServiceImpl implements IStationInformationService
         }
     }
 
+
+    /**
+     * 指环王扫描信息
+     * @param stationProductScanningRingVo
+     * @return
+     */
+    @Override
+    public String stationProductScanningRing(StationProductScanningRingVo stationProductScanningRingVo) {
+//        boolean fjqy = stationProductScanningRingVo.getContentInformation().contains("FJQY");
+//        if(!fjqy){
+//            return "请扫描相关二维码";
+//        };
+        try {
+            String deviceNumberAndName = stationProductScanningRingVo.getDeviceNumber();//设备号
+            String[] split = deviceNumberAndName.split("-");
+            String deviceNumber=split[0];
+            String deviceName=split[1];
+            String scanningTime = stationProductScanningRingVo.getScanningTime();//扫描时间
+            String contentInformation = stationProductScanningRingVo.getContentInformation();//扫描内容
+            RingScanInformation ringScanInformation=new RingScanInformation();
+            ringScanInformation.setContentInformation(contentInformation);
+            LocalDateTime localDateTime = DateUtils.toLocalDateTime(scanningTime, "yyyy-MM-dd HH:mm:ss");
+            ringScanInformation.setScanningTime(localDateTime);
+            ringScanInformation.setDeviceName(deviceName);
+            ringScanInformation.setDeviceNumber(deviceNumber);
+            int i2 = ringScanInformationMapper.insertRingScanInformation(ringScanInformation);
+            if(i2>0){
+                return "扫描成功";
+            }else {
+                return "扫描失败";
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+//        //产品扫描逻辑
+//            String[] content = stationProductScanningRingVo.getContentInformation().split("&");
+//            StationInformation stationInformation=new StationInformation();
+//            stationInformation.setDeviceName(content[1]);//设备名称
+//            //查询工位信息表
+//            List<StationInformation> stationInformations = stationInformationMapper.selectStationInformationList(stationInformation);
+//            //节点.
+//            if(stationInformations.size()>0){
+//                StationInformation stationInformation1 = stationInformations.get(0);//根据手持机设备名称得到工位信息
+//                ReportInformationSheet reportInformationSheet=new ReportInformationSheet();
+//                reportInformationSheet.setCurrentStationStationPeople(stationInformation1.getPersonnelName());//工位人员姓名
+//                reportInformationSheet.setStationCode(stationInformation1.getStationCode());//工位码
+//                reportInformationSheet.setProcess(stationInformation1.getStationName());//工序名称
+//                reportInformationSheet.setProductCode(content[0]);//产品码
+//                reportInformationSheet.setHandheldDevice(content[1]);//手持机
+//                reportInformationSheet.setCreateTime(new DateTime());//创建时间
+//                //推算出来产品编号或者订单编号
+//                String modifiedString = "DQY" + content[0].substring(0, content[0].length() - 3);
+//                reportInformationSheet.setOrderNumber(modifiedString);//订单号或任务号
+//                //更新节点生产数量
+//                //先拿到当前任务数量
+//                List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementByOrderNumebrOrPlanNumber(modifiedString, modifiedString);
+//                if(productionPlanningManagements.size()<=0){
+//                    //插入异常报工信息
+//                    extracted(reportInformationSheet,"未找到当前产品计划报工失败--信息不匹配");
+//                    return "未找到当前产品计划报工失败--信息不匹配";
+//                }else {
+//                    boolean equals = productionPlanningManagements.get(0).getPlanType().equals("3");
+//                    if(equals){
+//                        //插入异常报工信息
+//                        extracted(reportInformationSheet,"该计划已经完成--信息不匹配");
+//                        return "该计划已经完成--信息不匹配";
+//                    }else {
+//                        //找到计划了先确认下数量(我计划下的数量)
+//                        ProductionPlanningManagement productionPlanningManagement = productionPlanningManagements.get(0);
+//                        //拿到计划id------->根据计划id查询流程信息
+//                        BpmExecuteProcess process=new BpmExecuteProcess();
+//                        process.setTaskPlanKey(productionPlanningManagement.getId().toString());//计划id
+//                        List<BpmExecuteProcess> bpmExecuteProcesses = bpmExecuteProcessMapper.selectBpmExecuteProcessListfjqy(process);
+//                        if(bpmExecuteProcesses.size()<=0){
+//                            //插入异常报工信息
+//                            extracted(reportInformationSheet,"没有找到当前计划的流程管道--信息不匹配");
+//                            return "没有找到当前计划的流程管道--信息不匹配";
+//                        }else {
+//                            //管道
+//                            String taskKey = bpmExecuteProcesses.get(0).getTaskKey();
+//                            BpmExecuteNodeLog bpmExecuteNodeLog=new BpmExecuteNodeLog();
+//                            bpmExecuteNodeLog.setTaskProcessKey(taskKey);//流程编号
+//                            bpmExecuteNodeLog.setTaskNodeName(stationInformation1.getStationName());//工序名称
+//                            List<BpmExecuteNodeLog> bpmExecuteNodeLogs = bpmExecuteNodeLogMapper.selectBpmExecuteNodeLogListfjqy(bpmExecuteNodeLog);
+//                            String taskNodeNumber = bpmExecuteNodeLogs.get(0).getTaskNodeNumber();//节点数量
+//                            //判断你当前报工工序节点是否已经报够数量了
+//                            if(taskNodeNumber==null||taskNodeNumber.equals("")){
+//                                taskNodeNumber="0";
+//                            }
+//                            if(Integer.parseInt(taskNodeNumber)>=Integer.parseInt(productionPlanningManagement.getQuantity())){
+//                                //插入异常报工信息
+//                                extracted(reportInformationSheet,"当前工序已完成计划数量");
+//                                return "当前工序已完成计划数量";
+//                            }else {
+//                                //否则更新接单已完成数量
+//                                int i = Math.addExact(Integer.parseInt(taskNodeNumber), 1);
+//                                BpmExecuteNodeLog upBpmExecuteNodeLog=new BpmExecuteNodeLog();
+//                                upBpmExecuteNodeLog.setTaskNodeNumber(String.valueOf(i));//更新数量
+//                                upBpmExecuteNodeLog.setId(bpmExecuteNodeLogs.get(0).getId());//节点日志id
+//                                //判断同一部手持机扫描时间间隔是否超过一分钟
+//                                ReportInformationSheet sheetsjjg=new ReportInformationSheet();
+//                                sheetsjjg.setProcess(stationInformation1.getStationName());//工序
+//                                sheetsjjg.setHandheldDevice(content[2]);//设备信息
+//                                ReportInformationSheet reportInformationSheetsSc = reportInformationSheetMapper.selectReportInformationSheetListOrderBy(sheetsjjg);
+//                                Date date1 = reportInformationSheetsSc.getCreateTime(); //上次扫码时间
+//                                Date date2 = new Date();//当前时间
+//                                String s = DateUtils.timeDistanceMin(date2, date1);
+//                                if(Integer.parseInt(s)<1){
+//                                    //插入异常报工信息
+//                                    extracted(reportInformationSheet,"两次扫码之间的间隔不能小于1分钟");//???? 看看那个小工人有这个坏心思
+//                                    return "两次扫码之间的间隔不能小于1分钟";
+//                                }
+//                                //工序--产品重复扫描
+//                                ReportInformationSheet reportInformationSheet1=new ReportInformationSheet();
+//                                reportInformationSheet1.setProcess(stationInformation1.getStationName());//工序名称
+//                                reportInformationSheet1.setProductCode(stationInformation1.getStationName());//产品码
+//                                List<ReportInformationSheet> reportInformationSheets = reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet1);
+//                                if(reportInformationSheets.size()>0){
+//                                    //插入异常报工信息
+//                                    extracted(reportInformationSheet,"产品不能重复扫描");
+//                                    return "产品不能重复扫描";
+//                                }
+//
+//                                //当前产品只能被下一个工序进行扫描
+//                                //查询当前计划的所有工序信息
+//                                BpmExecuteNodeLog bpmExecuteNodeLogString=new BpmExecuteNodeLog();
+//                                bpmExecuteNodeLog.setTaskProcessKey(taskKey);//流程编号
+//                                List<BpmExecuteNodeLog> bpmExecuteNodeLogsString = bpmExecuteNodeLogMapper.selectBpmExecuteNodeLogListfjqy(bpmExecuteNodeLogString);
+//                                List<String> collect = bpmExecuteNodeLogsString.stream().map(BpmExecuteNodeLog::getTaskNodeName).collect(Collectors.toList());
+//                                //所有的集合我拿到了
+//                                ReportInformationSheet reportInformationSheet1String=new ReportInformationSheet();
+//                                reportInformationSheet1String.setProductCode(stationInformation1.getStationName());//产品码
+//                                List<ReportInformationSheet> reportInformationSheetsString = reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet1String);
+//                                ReportInformationSheet reportInformationSheet2 = reportInformationSheetsString.get(0);
+//                                String process1 = reportInformationSheet2.getProcess();//这个产品编码上一次是那个工序扫的?
+//                                int nextIndex=0;
+//                                for (int i1 = 0; i1 < collect.size(); i1++) {
+//                                    //如果工序名称相同
+//                                    if(collect.get(i1).equals(process1)){
+//                                        nextIndex=i1+1;
+//                                    }
+//                                }
+//                                //说明已经在最后一个节点了,你前边的手持工序在怎么扫都扫不上的
+//                                if(nextIndex>=collect.size()){
+//                                    //插入异常报工信息
+//                                    extracted(reportInformationSheet,"请选择对应工序的手持机进行扫描");
+//                                    return "请选择对应工序的手持机进行扫描";
+//                                }else {
+//                                    if(!stationInformation1.getStationName().equals(collect.get(nextIndex))){
+//                                        //插入异常报工信息
+//                                        extracted(reportInformationSheet,"请选择当前产品对应的工序信息进行扫描");
+//                                        return "请选择当前产品对应的工序信息进行扫描";
+//                                    }
+//                                }
+//                                //当前工序有没有漏扫
+//                                int result = Math.subtractExact(Integer.parseInt(stationInformation1.getStationName()), 1);
+//                                reportInformationSheet1.setProductCode(String.valueOf(result));//产品码
+//                                List<ReportInformationSheet> reportInformationSheetsLS = reportInformationSheetMapper.selectReportInformationSheetList(reportInformationSheet1);
+//                                if(reportInformationSheetsLS.size()>0){
+//                                    //插入异常报工信息
+//                                    extracted(reportInformationSheet,"当前工序漏扫了一个产品信息--请核对信息");
+//                                    return "当前工序漏扫了一个产品信息--请核对信息";
+//                                }
+//                                //根据工位码查询 ---->节点报工日志
+//                                reportInformationSheetMapper.insertReportInformationSheet(reportInformationSheet);
+//                                int i1 = bpmExecuteNodeLogMapper.updateBpmExecuteNodeLogfjqy(upBpmExecuteNodeLog);
+//                                //更新当前工序节点信息
+//                                if(i1 >0){
+//                                    return "产品信息扫描成功";
+//                                }else {
+//                                    extracted(reportInformationSheet,"更新节点管道工序任务数量失败");
+//                                    return "扫码报工失败";
+//                                }
+//                            }
+//                        }
+//                    }
+//                }
+//            }else{
+//                return  "当前设备未绑定工位信息";
+//            }
+        }
+
     /**
      * 插入异常报工信息
      * @param reportInformationSheet
@@ -344,10 +532,8 @@ public class StationInformationServiceImpl implements IStationInformationService
         exceptionReportInformationSheet.setExceptionMessage(msg);
         exceptionReportInformationSheetMapper.insertExceptionReportInformationSheet(exceptionReportInformationSheet);
     }
-
-    public static void main(String[] args) {
-       String aaa="scan@&GWM-001&SMSB001";
-        boolean contains = aaa.contains("scan@");
-        System.out.println(contains);
-    }
 }
+
+
+
+

+ 11 - 2
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TeamPersonnelInformationServiceImpl.java

@@ -24,6 +24,7 @@ public class TeamPersonnelInformationServiceImpl implements ITeamPersonnelInform
     private final TeamPersonnelInformationMapper teamPersonnelInformationMapper;
 
 
+
     public TeamPersonnelInformationServiceImpl(TeamPersonnelInformationMapper teamPersonnelInformationMapper) {
         this.teamPersonnelInformationMapper = teamPersonnelInformationMapper;
     }
@@ -55,7 +56,7 @@ public class TeamPersonnelInformationServiceImpl implements ITeamPersonnelInform
     {
         teamPersonnelInformation.setDelFlag("0");
         if(teamPersonnelInformation.getCreateTime()!=null){
-//            DateUtils.to
+
         }
         return teamPersonnelInformationMapper.selectTeamPersonnelInformationList(teamPersonnelInformation);
     }
@@ -96,7 +97,14 @@ public class TeamPersonnelInformationServiceImpl implements ITeamPersonnelInform
     public int updateTeamPersonnelInformation(TeamPersonnelInformation teamPersonnelInformation)
     {
         teamPersonnelInformation.setUpdateTime(DateUtils.getNowDate());
-        return teamPersonnelInformationMapper.updateTeamPersonnelInformation(teamPersonnelInformation);
+        if(teamPersonnelInformation.getProcessKey().equals("临时调整")){
+            //拷贝新增信息添加到有变动的一个信息表中
+            TeamPersonnelChangeInformation changeInformation=new TeamPersonnelChangeInformation();
+            BeanUtils.copyProperties(teamPersonnelInformation,changeInformation);
+            return personnelChangeInformationMapper.updateTeamPersonnelChangeInformation(changeInformation);
+        }else {
+            return teamPersonnelInformationMapper.updateTeamPersonnelInformation(teamPersonnelInformation);
+        }
     }
 
     /**
@@ -122,4 +130,5 @@ public class TeamPersonnelInformationServiceImpl implements ITeamPersonnelInform
     {
         return teamPersonnelInformationMapper.deleteTeamPersonnelInformationById(id);
     }
+
 }

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/TerminalInformationServiceImpl.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.TerminalInformationMapper;
+import com.zkqy.amichi.domain.TerminalInformation;
+import com.zkqy.amichi.service.ITerminalInformationService;
+
+/**
+ * 终端信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-10-09
+ */
+@Service
+public class TerminalInformationServiceImpl implements ITerminalInformationService 
+{
+    @Autowired
+    private TerminalInformationMapper terminalInformationMapper;
+
+    /**
+     * 查询终端信息
+     * 
+     * @param id 终端信息主键
+     * @return 终端信息
+     */
+    @Override
+    public TerminalInformation selectTerminalInformationById(Long id)
+    {
+        return terminalInformationMapper.selectTerminalInformationById(id);
+    }
+
+    /**
+     * 查询终端信息列表
+     * 
+     * @param terminalInformation 终端信息
+     * @return 终端信息
+     */
+    @Override
+    public List<TerminalInformation> selectTerminalInformationList(TerminalInformation terminalInformation)
+    {
+        return terminalInformationMapper.selectTerminalInformationList(terminalInformation);
+    }
+
+    /**
+     * 新增终端信息
+     * 
+     * @param terminalInformation 终端信息
+     * @return 结果
+     */
+    @Override
+    public int insertTerminalInformation(TerminalInformation terminalInformation)
+    {
+        terminalInformation.setCreateTime(DateUtils.getNowDate());
+        return terminalInformationMapper.insertTerminalInformation(terminalInformation);
+    }
+
+    /**
+     * 修改终端信息
+     * 
+     * @param terminalInformation 终端信息
+     * @return 结果
+     */
+    @Override
+    public int updateTerminalInformation(TerminalInformation terminalInformation)
+    {
+        terminalInformation.setUpdateTime(DateUtils.getNowDate());
+        return terminalInformationMapper.updateTerminalInformation(terminalInformation);
+    }
+
+    /**
+     * 批量删除终端信息
+     * 
+     * @param ids 需要删除的终端信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTerminalInformationByIds(Long[] ids)
+    {
+        return terminalInformationMapper.deleteTerminalInformationByIds(ids);
+    }
+
+    /**
+     * 删除终端信息信息
+     * 
+     * @param id 终端信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTerminalInformationById(Long id)
+    {
+        return terminalInformationMapper.deleteTerminalInformationById(id);
+    }
+}

+ 51 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/utils/QueryUtils.java

@@ -0,0 +1,51 @@
+package com.zkqy.amichi.utils;
+
+import com.alibaba.fastjson2.JSON;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
+import com.zkqy.amichi.jd.domain.JdProductionBomsVo;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.util.List;
+import java.util.Map;
+
+public class QueryUtils {
+
+    /**
+     * 原本想抽一个工具出来呢结果发现do while循环不好控制,
+     * 时间比价着急、所以暂时搁置
+     * 不是ok 就是被ko,目前状态快被ko---->hmc
+     * @param queryParameter 查询参数json字符串
+     * @param limit  每次查询的数量
+     * @return
+     */
+    private static List<T>  queryList(String queryParameter, String limit) throws Exception {
+        //查询参数
+        Map<String, String> map = JSON.parseObject(queryParameter, Map.class);
+
+        //金蝶JDK查询工具类
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+
+        //定义返回的数据集合
+        List<T> mapList;
+
+        //默认门打开
+        boolean flag = true;
+
+        //只要没拉去完对应的就一直拉数据
+
+        // 更新查询条件中的起始行号
+        map.put("StartRow", String.valueOf(startRow));
+        // 查询数据
+        String resultJson = api.billQuery(JSON.toJSONString(map));
+        //如果查询到空就关门
+        if (resultJson.isEmpty()) {
+           System.out.println("查询的内容为空了?是' '|还是[ ]");
+                // 处理空结果的情况
+                flag = false;
+        }
+            mapList = JSON.parseArray(resultJson, T.class);
+
+        return  null;
+    }
+}

+ 134 - 0
zkqy-fujian-amichi/src/main/resources/mapper/BomGroupMapper.xml

@@ -0,0 +1,134 @@
+<?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.BomGroupMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.BomGroup" id="BomGroupResult">
+        <result property="id"    column="id"    />
+        <result property="fNumber"    column="f_number"    />
+        <result property="fName"    column="f_name"    />
+        <result property="fParentid"    column="f_parentId"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+    <sql id="selectBomGroupVo">
+        select id, f_number, f_name, f_parentId, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag from fjqydb.bom_group
+    </sql>
+
+    <select id="selectBomGroupList" parameterType="com.zkqy.amichi.domain.BomGroup" resultMap="BomGroupResult">
+        <include refid="selectBomGroupVo"/>
+        <where>  
+            <if test="fNumber != null  and fNumber != ''"> and f_number = #{fNumber}</if>
+            <if test="fName != null  and fName != ''"> and f_name like concat('%', #{fName}, '%')</if>
+            <if test="fParentid != null  and fParentid != ''"> and f_parentId = #{fParentid}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+        </where>
+    </select>
+    
+    <select id="selectBomGroupById" parameterType="Long" resultMap="BomGroupResult">
+        <include refid="selectBomGroupVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBomGroup" parameterType="com.zkqy.amichi.domain.BomGroup" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.bom_group
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="fNumber != null">f_number,</if>
+            <if test="fName != null">f_name,</if>
+            <if test="fParentid != null">f_parentId,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="fNumber != null">#{fNumber},</if>
+            <if test="fName != null">#{fName},</if>
+            <if test="fParentid != null">#{fParentid},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+         </trim>
+    </insert>
+    <insert id="insertBomGroupBatch" parameterType="java.util.List" >
+        <foreach collection="list" item="item" separator=";">
+         insert into fjqydb.bom_group
+                <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="item.id != null">id,</if>
+                    <if test="item.fNumber != null">f_number,</if>
+                    <if test="item.fName != null">f_name,</if>
+                    <if test="item.fParentId != null">f_parentId,</if>
+                    <if test="item.remark != null">remark,</if>
+                    <if test="item.createById != null">create_by_id,</if>
+                    <if test="item.createBy != null">create_by,</if>
+                    <if test="item.createTime != null">create_time,</if>
+                    <if test="item.updateById != null">update_by_id,</if>
+                    <if test="item.updateBy != null">update_by,</if>
+                    <if test="item.updateTime != null">update_time,</if>
+                    <if test="item.delFlag != null">del_flag,</if>
+                </trim>
+                values
+                    <trim prefix="(" suffix=")" suffixOverrides=",">
+                        <if test="item.id != null">#{item.id},</if>
+                        <if test="item.fNumber != null">#{item.fNumber},</if>
+                        <if test="item.fName != null">#{item.fName},</if>
+                        <if test="item.fParentId != null">#{item.fParentId},</if>
+                        <if test="item.remark != null">#{item.remark},</if>
+                        <if test="item.createById != null">#{item.createById},</if>
+                        <if test="item.createBy != null">#{item.createBy},</if>
+                        <if test="item.createTime != null">#{item.createTime},</if>
+                        <if test="item.updateById != null">#{item.updateById},</if>
+                        <if test="item.updateBy != null">#{item.updateBy},</if>
+                        <if test="item.updateTime != null">#{item.updateTime},</if>
+                        <if test="item.delFlag != null">#{item.delFlag},</if>
+                    </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateBomGroup" parameterType="com.zkqy.amichi.domain.BomGroup">
+        update fjqydb.bom_group
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="fNumber != null">f_number = #{fNumber},</if>
+            <if test="fName != null">f_name = #{fName},</if>
+            <if test="fParentid != null">f_parentId = #{fParentid},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBomGroupById" parameterType="Long">
+        delete from fjqydb.bom_group where id = #{id}
+    </delete>
+
+    <delete id="deleteBomGroupByIds" parameterType="String">
+        delete from fjqydb.bom_group where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 240 - 0
zkqy-fujian-amichi/src/main/resources/mapper/BomVersionDetailMapper.xml

@@ -0,0 +1,240 @@
+<?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.BomVersionDetailMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.BomVersionDetail" id="BomVersionDetailResult">
+        <result property="id"    column="id"    />
+        <result property="fmaterialidchildFnumber"    column="fmaterialidchild_fnumber"    />
+        <result property="fchilditemname"    column="fchilditemname"    />
+        <result property="fchilditemmodel"    column="fchilditemmodel"    />
+        <result property="fPonpXinghao"    column="f_ponp_xinghao"    />
+        <result property="fitempproperty"    column="fitempproperty"    />
+        <result property="fsupplytype"    column="fsupplytype"    />
+        <result property="fmaterialtype"    column="fmaterialtype"    />
+        <result property="fprocessidFname"    column="fprocessid_fname"    />
+        <result property="fprocessidFnumber"    column="fprocessid_fnumber"    />
+        <result property="fchildunitidFname"    column="fchildunitid_fname"    />
+        <result property="fdosagetype"    column="fdosagetype"    />
+        <result property="fnumerator"    column="fnumerator"    />
+        <result property="fdenominator"    column="fdenominator"    />
+        <result property="ffixscrapqty"    column="ffixscrapqty"    />
+        <result property="fscraprate"    column="fscraprate"    />
+        <result property="fchildsupplyorgid"    column="fchildsupplyorgid"    />
+        <result property="fbomidFnumber"    column="fbomid_fnumber"    />
+        <result property="fsubmdlid"    column="fsubmdlid"    />
+        <result property="fmemo"    column="fmemo"    />
+        <result property="fsupplyorg"    column="fsupplyorg"    />
+        <result property="fstockid"    column="fstockid"    />
+        <result property="fissuetype"    column="fissuetype"    />
+        <result property="fisskip"    column="fisskip"    />
+        <result property="fiscanreplace"    column="fiscanreplace"    />
+        <result property="fnetdemandrate"    column="fnetdemandrate"    />
+    </resultMap>
+
+    <sql id="selectBomVersionDetailVo">
+        select id, fmaterialidchild_fnumber, fchilditemname, fchilditemmodel, f_ponp_xinghao, fitempproperty, fsupplytype, fmaterialtype, fprocessid_fname, fprocessid_fnumber, fchildunitid_fname, fdosagetype, fnumerator, fdenominator, ffixscrapqty, fscraprate, fchildsupplyorgid, fbomid_fnumber, fsubmdlid, fmemo, fsupplyorg, fstockid, fissuetype, fisskip, fiscanreplace, fnetdemandrate from fjqydb.bom_version_detail
+    </sql>
+
+    <select id="selectBomVersionDetailList" parameterType="com.zkqy.amichi.domain.BomVersionDetail" resultMap="BomVersionDetailResult">
+        <include refid="selectBomVersionDetailVo"/>
+        <where>  
+            <if test="fmaterialidchildFnumber != null  and fmaterialidchildFnumber != ''"> and fmaterialidchild_fnumber = #{fmaterialidchildFnumber}</if>
+            <if test="fchilditemname != null  and fchilditemname != ''"> and fchilditemname like concat('%', #{fchilditemname}, '%')</if>
+            <if test="fchilditemmodel != null  and fchilditemmodel != ''"> and fchilditemmodel = #{fchilditemmodel}</if>
+            <if test="fPonpXinghao != null  and fPonpXinghao != ''"> and f_ponp_xinghao = #{fPonpXinghao}</if>
+            <if test="fitempproperty != null  and fitempproperty != ''"> and fitempproperty = #{fitempproperty}</if>
+            <if test="fsupplytype != null  and fsupplytype != ''"> and fsupplytype = #{fsupplytype}</if>
+            <if test="fmaterialtype != null  and fmaterialtype != ''"> and fmaterialtype = #{fmaterialtype}</if>
+            <if test="fprocessidFname != null  and fprocessidFname != ''"> and fprocessid_fname like concat('%', #{fprocessidFname}, '%')</if>
+            <if test="fprocessidFnumber != null  and fprocessidFnumber != ''"> and fprocessid_fnumber = #{fprocessidFnumber}</if>
+            <if test="fchildunitidFname != null  and fchildunitidFname != ''"> and fchildunitid_fname like concat('%', #{fchildunitidFname}, '%')</if>
+            <if test="fdosagetype != null  and fdosagetype != ''"> and fdosagetype = #{fdosagetype}</if>
+            <if test="fnumerator != null "> and fnumerator = #{fnumerator}</if>
+            <if test="fdenominator != null "> and fdenominator = #{fdenominator}</if>
+            <if test="ffixscrapqty != null "> and ffixscrapqty = #{ffixscrapqty}</if>
+            <if test="fscraprate != null "> and fscraprate = #{fscraprate}</if>
+            <if test="fchildsupplyorgid != null "> and fchildsupplyorgid = #{fchildsupplyorgid}</if>
+            <if test="fbomidFnumber != null  and fbomidFnumber != ''"> and fbomid_fnumber = #{fbomidFnumber}</if>
+            <if test="fsubmdlid != null "> and fsubmdlid = #{fsubmdlid}</if>
+            <if test="fmemo != null  and fmemo != ''"> and fmemo = #{fmemo}</if>
+            <if test="fsupplyorg != null  and fsupplyorg != ''"> and fsupplyorg = #{fsupplyorg}</if>
+            <if test="fstockid != null "> and fstockid = #{fstockid}</if>
+            <if test="fissuetype != null  and fissuetype != ''"> and fissuetype = #{fissuetype}</if>
+            <if test="fisskip != null "> and fisskip = #{fisskip}</if>
+            <if test="fiscanreplace != null "> and fiscanreplace = #{fiscanreplace}</if>
+            <if test="fnetdemandrate != null "> and fnetdemandrate = #{fnetdemandrate}</if>
+            <if test="parentMaterialCode!=null">and parent_material_code=#{parentMaterialCode}</if>
+        </where>
+    </select>
+    
+    <select id="selectBomVersionDetailById" parameterType="Long" resultMap="BomVersionDetailResult">
+        <include refid="selectBomVersionDetailVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBomVersionDetail" parameterType="com.zkqy.amichi.domain.BomVersionDetail" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.bom_version_detail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="fmaterialidchildFnumber != null">fmaterialidchild_fnumber,</if>
+            <if test="fchilditemname != null">fchilditemname,</if>
+            <if test="fchilditemmodel != null">fchilditemmodel,</if>
+            <if test="fPonpXinghao != null">f_ponp_xinghao,</if>
+            <if test="fitempproperty != null">fitempproperty,</if>
+            <if test="fsupplytype != null">fsupplytype,</if>
+            <if test="fmaterialtype != null">fmaterialtype,</if>
+            <if test="fprocessidFname != null">fprocessid_fname,</if>
+            <if test="fprocessidFnumber != null">fprocessid_fnumber,</if>
+            <if test="fchildunitidFname != null">fchildunitid_fname,</if>
+            <if test="fdosagetype != null">fdosagetype,</if>
+            <if test="fnumerator != null">fnumerator,</if>
+            <if test="fdenominator != null">fdenominator,</if>
+            <if test="ffixscrapqty != null">ffixscrapqty,</if>
+            <if test="fscraprate != null">fscraprate,</if>
+            <if test="fchildsupplyorgid != null">fchildsupplyorgid,</if>
+            <if test="fbomidFnumber != null">fbomid_fnumber,</if>
+            <if test="fsubmdlid != null">fsubmdlid,</if>
+            <if test="fmemo != null">fmemo,</if>
+            <if test="fsupplyorg != null">fsupplyorg,</if>
+            <if test="fstockid != null">fstockid,</if>
+            <if test="fissuetype != null">fissuetype,</if>
+            <if test="fisskip != null">fisskip,</if>
+            <if test="fiscanreplace != null">fiscanreplace,</if>
+            <if test="fnetdemandrate != null">fnetdemandrate,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="fmaterialidchildFnumber != null">#{fmaterialidchildFnumber},</if>
+            <if test="fchilditemname != null">#{fchilditemname},</if>
+            <if test="fchilditemmodel != null">#{fchilditemmodel},</if>
+            <if test="fPonpXinghao != null">#{fPonpXinghao},</if>
+            <if test="fitempproperty != null">#{fitempproperty},</if>
+            <if test="fsupplytype != null">#{fsupplytype},</if>
+            <if test="fmaterialtype != null">#{fmaterialtype},</if>
+            <if test="fprocessidFname != null">#{fprocessidFname},</if>
+            <if test="fprocessidFnumber != null">#{fprocessidFnumber},</if>
+            <if test="fchildunitidFname != null">#{fchildunitidFname},</if>
+            <if test="fdosagetype != null">#{fdosagetype},</if>
+            <if test="fnumerator != null">#{fnumerator},</if>
+            <if test="fdenominator != null">#{fdenominator},</if>
+            <if test="ffixscrapqty != null">#{ffixscrapqty},</if>
+            <if test="fscraprate != null">#{fscraprate},</if>
+            <if test="fchildsupplyorgid != null">#{fchildsupplyorgid},</if>
+            <if test="fbomidFnumber != null">#{fbomidFnumber},</if>
+            <if test="fsubmdlid != null">#{fsubmdlid},</if>
+            <if test="fmemo != null">#{fmemo},</if>
+            <if test="fsupplyorg != null">#{fsupplyorg},</if>
+            <if test="fstockid != null">#{fstockid},</if>
+            <if test="fissuetype != null">#{fissuetype},</if>
+            <if test="fisskip != null">#{fisskip},</if>
+            <if test="fiscanreplace != null">#{fiscanreplace},</if>
+            <if test="fnetdemandrate != null">#{fnetdemandrate},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBomVersionDetailBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        <foreach collection="list" item="item" separator=";">
+            insert into fjqydb.bom_version_detail
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.fmaterialidchildFnumber != null">fmaterialidchild_fnumber,</if>
+                <if test="item.fchilditemname != null">fchilditemname,</if>
+                <if test="item.fchilditemmodel != null">fchilditemmodel,</if>
+                <if test="item.fPonpXinghao != null">f_ponp_xinghao,</if>
+                <if test="item.fitempproperty != null">fitempproperty,</if>
+                <if test="item.fsupplytype != null">fsupplytype,</if>
+                <if test="item.fmaterialtype != null">fmaterialtype,</if>
+                <if test="item.fprocessidFname != null">fprocessid_fname,</if>
+                <if test="item.fprocessidFnumber != null">fprocessid_fnumber,</if>
+                <if test="item.fchildunitidFname != null">fchildunitid_fname,</if>
+                <if test="item.fdosagetype != null">fdosagetype,</if>
+                <if test="item.fnumerator != null">fnumerator,</if>
+                <if test="item.fdenominator != null">fdenominator,</if>
+                <if test="item.ffixscrapqty != null">ffixscrapqty,</if>
+                <if test="item.fscraprate != null">fscraprate,</if>
+                <if test="item.fchildsupplyorgid != null">fchildsupplyorgid,</if>
+                <if test="item.fbomidFnumber != null">fbomid_fnumber,</if>
+                <if test="item.fsubmdlid != null">fsubmdlid,</if>
+                <if test="item.fmemo != null">fmemo,</if>
+                <if test="item.fsupplyorg != null">fsupplyorg,</if>
+                <if test="item.fstockid != null">fstockid,</if>
+                <if test="item.fissuetype != null">fissuetype,</if>
+                <if test="item.fisskip != null">fisskip,</if>
+                <if test="item.fiscanreplace != null">fiscanreplace,</if>
+                <if test="item.fnetdemandrate != null">fnetdemandrate,</if>
+                <if test="item.parentMaterialCode != null">parent_material_code,</if>
+            </trim>
+            values
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.fmaterialidchildFnumber != null">#{item.fmaterialidchildFnumber},</if>
+                <if test="item.fchilditemname != null">#{item.fchilditemname},</if>
+                <if test="item.fchilditemmodel != null">#{item.fchilditemmodel},</if>
+                <if test="item.fPonpXinghao != null">#{item.fPonpXinghao},</if>
+                <if test="item.fitempproperty != null">#{item.fitempproperty},</if>
+                <if test="item.fsupplytype != null">#{item.fsupplytype},</if>
+                <if test="item.fmaterialtype != null">#{item.fmaterialtype},</if>
+                <if test="item.fprocessidFname != null">#{item.fprocessidFname},</if>
+                <if test="item.fprocessidFnumber != null">#{item.fprocessidFnumber},</if>
+                <if test="item.fchildunitidFname != null">#{item.fchildunitidFname},</if>
+                <if test="item.fdosagetype != null">#{item.fdosagetype},</if>
+                <if test="item.fnumerator != null">#{item.fnumerator},</if>
+                <if test="item.fdenominator != null">#{item.fdenominator},</if>
+                <if test="item.ffixscrapqty != null">#{item.ffixscrapqty},</if>
+                <if test="item.fscraprate != null">#{item.fscraprate},</if>
+                <if test="item.fchildsupplyorgid != null">#{item.fchildsupplyorgid},</if>
+                <if test="item.fbomidFnumber != null">#{item.fbomidFnumber},</if>
+                <if test="item.fsubmdlid != null">#{item.fsubmdlid},</if>
+                <if test="item.fmemo != null">#{item.fmemo},</if>
+                <if test="item.fsupplyorg != null">#{item.fsupplyorg},</if>
+                <if test="item.fstockid != null">#{item.fstockid},</if>
+                <if test="item.fissuetype != null">#{item.fissuetype},</if>
+                <if test="item.fisskip != null">#{item.fisskip},</if>
+                <if test="item.fiscanreplace != null">#{item.fiscanreplace},</if>
+                <if test="item.fnetdemandrate != null">#{item.fnetdemandrate},</if>
+                <if test="item.parentMaterialCode != null">#{item.parentMaterialCode},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateBomVersionDetail" parameterType="com.zkqy.amichi.domain.BomVersionDetail">
+        update fjqydb.bom_version_detail
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="fmaterialidchildFnumber != null">fmaterialidchild_fnumber = #{fmaterialidchildFnumber},</if>
+            <if test="fchilditemname != null">fchilditemname = #{fchilditemname},</if>
+            <if test="fchilditemmodel != null">fchilditemmodel = #{fchilditemmodel},</if>
+            <if test="fPonpXinghao != null">f_ponp_xinghao = #{fPonpXinghao},</if>
+            <if test="fitempproperty != null">fitempproperty = #{fitempproperty},</if>
+            <if test="fsupplytype != null">fsupplytype = #{fsupplytype},</if>
+            <if test="fmaterialtype != null">fmaterialtype = #{fmaterialtype},</if>
+            <if test="fprocessidFname != null">fprocessid_fname = #{fprocessidFname},</if>
+            <if test="fprocessidFnumber != null">fprocessid_fnumber = #{fprocessidFnumber},</if>
+            <if test="fchildunitidFname != null">fchildunitid_fname = #{fchildunitidFname},</if>
+            <if test="fdosagetype != null">fdosagetype = #{fdosagetype},</if>
+            <if test="fnumerator != null">fnumerator = #{fnumerator},</if>
+            <if test="fdenominator != null">fdenominator = #{fdenominator},</if>
+            <if test="ffixscrapqty != null">ffixscrapqty = #{ffixscrapqty},</if>
+            <if test="fscraprate != null">fscraprate = #{fscraprate},</if>
+            <if test="fchildsupplyorgid != null">fchildsupplyorgid = #{fchildsupplyorgid},</if>
+            <if test="fbomidFnumber != null">fbomid_fnumber = #{fbomidFnumber},</if>
+            <if test="fsubmdlid != null">fsubmdlid = #{fsubmdlid},</if>
+            <if test="fmemo != null">fmemo = #{fmemo},</if>
+            <if test="fsupplyorg != null">fsupplyorg = #{fsupplyorg},</if>
+            <if test="fstockid != null">fstockid = #{fstockid},</if>
+            <if test="fissuetype != null">fissuetype = #{fissuetype},</if>
+            <if test="fisskip != null">fisskip = #{fisskip},</if>
+            <if test="fiscanreplace != null">fiscanreplace = #{fiscanreplace},</if>
+            <if test="fnetdemandrate != null">fnetdemandrate = #{fnetdemandrate},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBomVersionDetailById" parameterType="Long">
+        delete from fjqydb.bom_version_detail where id = #{id}
+    </delete>
+
+    <delete id="deleteBomVersionDetailByIds" parameterType="String">
+        delete from fjqydb.bom_version_detail where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 172 - 0
zkqy-fujian-amichi/src/main/resources/mapper/BomVersionListMapper.xml

@@ -0,0 +1,172 @@
+<?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.BomVersionListMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.BomVersionList" id="BomVersionListResult">
+        <result property="id"    column="id"    />
+        <result property="groupNumber"    column="group_number"    />
+        <result property="fNumber"    column="f_number"    />
+        <result property="fName"    column="f_name"    />
+        <result property="fBomcategory"    column="f_bomcategory"    />
+        <result property="fMaterialId"    column="f_material_id"    />
+        <result property="fMaterialName"    column="f_material_name"    />
+        <result property="fMaterialModel"    column="f_material_model"    />
+        <result property="fDescription"    column="f_description"    />
+        <result property="fDocumentStatus"    column="f_document_status"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+    <sql id="selectBomVersionListVo">
+        select id, group_number, f_number, f_name, f_bomcategory, f_material_id, f_material_name, f_material_model, f_description, f_document_status, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag from fjqydb.bom_version_list
+    </sql>
+
+    <select id="selectBomVersionListList" parameterType="com.zkqy.amichi.domain.BomVersionList" resultMap="BomVersionListResult">
+        <include refid="selectBomVersionListVo"/>
+        <where>  
+            <if test="groupNumber != null  and groupNumber != ''"> and group_number = #{groupNumber}</if>
+            <if test="fNumber != null  and fNumber != ''"> and f_number = #{fNumber}</if>
+            <if test="fName != null  and fName != ''"> and f_name like concat('%', #{fName}, '%')</if>
+            <if test="fBomcategory != null  and fBomcategory != ''"> and f_bomcategory = #{fBomcategory}</if>
+            <if test="fMaterialId != null  and fMaterialId != ''"> and f_material_id = #{fMaterialId}</if>
+            <if test="fMaterialName != null  and fMaterialName != ''"> and f_material_name like concat('%', #{fMaterialName}, '%')</if>
+            <if test="fMaterialModel != null  and fMaterialModel != ''"> and f_material_model = #{fMaterialModel}</if>
+            <if test="fDescription != null  and fDescription != ''"> and f_description = #{fDescription}</if>
+            <if test="fDocumentStatus != null  and fDocumentStatus != ''"> and f_document_status = #{fDocumentStatus}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+        </where>
+    </select>
+    
+    <select id="selectBomVersionListById" parameterType="Long" resultMap="BomVersionListResult">
+        <include refid="selectBomVersionListVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBomVersionList" parameterType="com.zkqy.amichi.domain.BomVersionList">
+        insert into fjqydb.bom_version_list
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="groupNumber != null">group_number,</if>
+            <if test="fNumber != null">f_number,</if>
+            <if test="fName != null">f_name,</if>
+            <if test="fBomcategory != null">f_bomcategory,</if>
+            <if test="fMaterialId != null">f_material_id,</if>
+            <if test="fMaterialName != null">f_material_name,</if>
+            <if test="fMaterialModel != null">f_material_model,</if>
+            <if test="fDescription != null">f_description,</if>
+            <if test="fDocumentStatus != null">f_document_status,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="groupNumber != null">#{groupNumber},</if>
+            <if test="fNumber != null">#{fNumber},</if>
+            <if test="fName != null">#{fName},</if>
+            <if test="fBomcategory != null">#{fBomcategory},</if>
+            <if test="fMaterialId != null">#{fMaterialId},</if>
+            <if test="fMaterialName != null">#{fMaterialName},</if>
+            <if test="fMaterialModel != null">#{fMaterialModel},</if>
+            <if test="fDescription != null">#{fDescription},</if>
+            <if test="fDocumentStatus != null">#{fDocumentStatus},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+         </trim>
+    </insert>
+    <insert id="insertBomVersionListBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        <foreach collection="list" item="item" separator=";">
+                insert into fjqydb.bom_version_list
+                <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="item.id != null">id,</if>
+                    <if test="item.groupNumber != null">group_number,</if>
+                    <if test="item.fNumber != null">f_number,</if>
+                    <if test="item.fName != null">f_name,</if>
+                    <if test="item.fBomcategory != null">f_bomcategory,</if>
+                    <if test="item.fMaterialId != null">f_material_id,</if>
+                    <if test="item.fMaterialName != null">f_material_name,</if>
+                    <if test="item.fMaterialModel != null">f_material_model,</if>
+                    <if test="item.fDescription != null">f_description,</if>
+                    <if test="item.fDocumentStatus != null">f_document_status,</if>
+                    <if test="item.createById != null">create_by_id,</if>
+                    <if test="item.createBy != null">create_by,</if>
+                    <if test="item.createTime != null">create_time,</if>
+                    <if test="item.updateById != null">update_by_id,</if>
+                    <if test="item.updateBy != null">update_by,</if>
+                    <if test="item.updateTime != null">update_time,</if>
+                    <if test="item.delFlag != null">del_flag,</if>
+                </trim>
+                values
+                <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="item.id != null">#{item.id},</if>
+                    <if test="item.groupNumber != null">#{item.groupNumber},</if>
+                    <if test="item.fNumber != null">#{item.fNumber},</if>
+                    <if test="item.fName != null">#{item.fName},</if>
+                    <if test="item.fBomcategory != null">#{item.fBomcategory},</if>
+                    <if test="item.fMaterialId != null">#{item.fMaterialId},</if>
+                    <if test="item.fMaterialName != null">#{item.fMaterialName},</if>
+                    <if test="item.fMaterialModel != null">#{item.fMaterialModel},</if>
+                    <if test="item.fDescription != null">#{item.fDescription},</if>
+                    <if test="item.fDocumentStatus != null">#{item.fDocumentStatus},</if>
+                    <if test="item.createById != null">#{item.createById},</if>
+                    <if test="item.createBy != null">#{item.createBy},</if>
+                    <if test="item.createTime != null">#{item.createTime},</if>
+                    <if test="item.updateById != null">#{item.updateById},</if>
+                    <if test="item.updateBy != null">#{item.updateBy},</if>
+                    <if test="item.updateTime != null">#{item.updateTime},</if>
+                    <if test="item.delFlag != null">#{item.delFlag}</if>
+                </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateBomVersionList" parameterType="com.zkqy.amichi.domain.BomVersionList">
+        update fjqydb.bom_version_list
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="groupNumber != null">group_number = #{groupNumber},</if>
+            <if test="fNumber != null">f_number = #{fNumber},</if>
+            <if test="fName != null">f_name = #{fName},</if>
+            <if test="fBomcategory != null">f_bomcategory = #{fBomcategory},</if>
+            <if test="fMaterialId != null">f_material_id = #{fMaterialId},</if>
+            <if test="fMaterialName != null">f_material_name = #{fMaterialName},</if>
+            <if test="fMaterialModel != null">f_material_model = #{fMaterialModel},</if>
+            <if test="fDescription != null">f_description = #{fDescription},</if>
+            <if test="fDocumentStatus != null">f_document_status = #{fDocumentStatus},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBomVersionListById" parameterType="Long">
+        delete from fjqydb.bom_version_list where id = #{id}
+    </delete>
+
+    <delete id="deleteBomVersionListByIds" parameterType="String">
+        delete from fjqydb.bom_version_list where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 242 - 0
zkqy-fujian-amichi/src/main/resources/mapper/JdProductionOrderMapper.xml

@@ -0,0 +1,242 @@
+<?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.jd.mapper.JdProductionOrderMapper">
+    
+    <resultMap type="com.zkqy.amichi.jd.domain.JdProductionOrder" id="JdProductionOrderResult">
+        <result property="id"    column="id"    />
+        <result property="documentNumber"    column="document_number"    />
+        <result property="documentTyep"    column="document_tyep"    />
+        <result property="documentDate"    column="document_date"    />
+        <result property="documentStatus"    column="document_status"    />
+        <result property="productType"    column="product_type"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="modelNumber"    column="model_number"    />
+        <result property="specification"    column="specification"    />
+        <result property="productionWorkshop"    column="production_workshop"    />
+        <result property="unit"    column="unit"    />
+        <result property="quantity"    column="quantity"    />
+        <result property="serviceStatus"    column="service_status"    />
+        <result property="demandDocument"    column="demand_document"    />
+        <result property="materialRequisitionStatus"    column="material_requisition_status"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="byOne"    column="by_one"    />
+        <result property="byTwo"    column="by_two"    />
+        <result property="planNumber"    column="plan_number"    />
+        <result property="planName"    column="plan_name"    />
+    </resultMap>
+
+    <sql id="selectJdProductionOrderVo">
+        select id, document_number, document_tyep, document_date, document_status, product_type, material_code, material_name, model_number, specification, production_workshop, unit, quantity, service_status, demand_document, material_requisition_status, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, by_one, by_two, plan_number, plan_name from fjqydb.jd_production_order
+    </sql>
+
+    <select id="selectJdProductionOrderList" parameterType="com.zkqy.amichi.jd.domain.JdProductionOrder" resultMap="JdProductionOrderResult">
+        <include refid="selectJdProductionOrderVo"/>
+        <where>  
+            <if test="documentNumber != null  and documentNumber != ''">and document_number LIKE concat('%', #{documentNumber}, '%')</if>
+            <if test="documentTyep != null  and documentTyep != ''"> and document_tyep = #{documentTyep}</if>
+            <if test="documentDate != null "> and document_date = #{documentDate}</if>
+            <if test="documentStatus != null  and documentStatus != ''"> and document_status = #{documentStatus}</if>
+            <if test="productType != null  and productType != ''"> and product_type = #{productType}</if>
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</if>
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="modelNumber != null  and modelNumber != ''"> and model_number = #{modelNumber}</if>
+            <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="productionWorkshop != null  and productionWorkshop != ''"> and production_workshop = #{productionWorkshop}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</if>
+            <if test="serviceStatus != null  and serviceStatus != ''"> and service_status = #{serviceStatus}</if>
+            <if test="demandDocument != null  and demandDocument != ''"> and demand_document = #{demandDocument}</if>
+            <if test="materialRequisitionStatus != null  and materialRequisitionStatus != ''"> and material_requisition_status = #{materialRequisitionStatus}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="byOne != null  and byOne != ''"> and by_one = #{byOne}</if>
+            <if test="byTwo != null  and byTwo != ''"> and by_two = #{byTwo}</if>
+            <if test="planNumber != null  and planNumber != ''"> and plan_number = #{planNumber}</if>
+            <if test="planName != null  and planName != ''"> and plan_name like concat('%', #{planName}, '%')</if>
+        </where>
+    </select>
+    
+    <select id="selectJdProductionOrderById" parameterType="Long" resultMap="JdProductionOrderResult">
+        <include refid="selectJdProductionOrderVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectJdProductionOrderMaxId" parameterType="Long" resultMap="JdProductionOrderResult">
+        select MAX(document_number) as document_number from fjqydb.jd_production_order
+    </select>
+
+    <insert id="insertJdProductionOrder" parameterType="com.zkqy.amichi.jd.domain.JdProductionOrder" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.jd_production_order
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="documentNumber != null">document_number,</if>
+            <if test="documentTyep != null">document_tyep,</if>
+            <if test="documentDate != null">document_date,</if>
+            <if test="documentStatus != null">document_status,</if>
+            <if test="productType != null">product_type,</if>
+            <if test="materialCode != null">material_code,</if>
+            <if test="materialName != null">material_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="specification != null">specification,</if>
+            <if test="productionWorkshop != null">production_workshop,</if>
+            <if test="unit != null">unit,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="serviceStatus != null">service_status,</if>
+            <if test="demandDocument != null">demand_document,</if>
+            <if test="materialRequisitionStatus != null">material_requisition_status,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="byOne != null">by_one,</if>
+            <if test="byTwo != null">by_two,</if>
+            <if test="planNumber != null">plan_number,</if>
+            <if test="planName != null">plan_name,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="documentNumber != null">#{documentNumber},</if>
+            <if test="documentTyep != null">#{documentTyep},</if>
+            <if test="documentDate != null">#{documentDate},</if>
+            <if test="documentStatus != null">#{documentStatus},</if>
+            <if test="productType != null">#{productType},</if>
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="materialName != null">#{materialName},</if>
+            <if test="modelNumber != null">#{modelNumber},</if>
+            <if test="specification != null">#{specification},</if>
+            <if test="productionWorkshop != null">#{productionWorkshop},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="quantity != null">#{quantity},</if>
+            <if test="serviceStatus != null">#{serviceStatus},</if>
+            <if test="demandDocument != null">#{demandDocument},</if>
+            <if test="materialRequisitionStatus != null">#{materialRequisitionStatus},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="byOne != null">#{byOne},</if>
+            <if test="byTwo != null">#{byTwo},</if>
+            <if test="planNumber != null">#{planNumber},</if>
+            <if test="planName != null">#{planName},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBatchJdProductionOrder" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.jd_production_order
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="documentNumber != null">document_number,</if>
+            <if test="documentTyep != null">document_tyep,</if>
+            <if test="documentDate != null">document_date,</if>
+            <if test="documentStatus != null">document_status,</if>
+            <if test="productType != null">product_type,</if>
+            <if test="materialCode != null">material_code,</if>
+            <if test="materialName != null">material_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="specification != null">specification,</if>
+            <if test="productionWorkshop != null">production_workshop,</if>
+            <if test="unit != null">unit,</if>
+            <if test="quantity != null">quantity,</if>
+            <if test="serviceStatus != null">service_status,</if>
+            <if test="demandDocument != null">demand_document,</if>
+            <if test="materialRequisitionStatus != null">material_requisition_status,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="byOne != null">by_one,</if>
+            <if test="byTwo != null">by_two,</if>
+            <if test="planNumber != null">plan_number,</if>
+            <if test="planName != null">plan_name,</if>
+        </trim>
+        values
+        <foreach collection="list" item="item" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.documentNumber != null">#{item.documentNumber},</if>
+                <if test="item.documentTyep != null">#{item.documentTyep},</if>
+                <if test="item.documentDate != null">#{item.documentDate},</if>
+                <if test="item.documentStatus != null">#{item.documentStatus},</if>
+                <if test="item.productType != null">#{item.productType},</if>
+                <if test="item.materialCode != null">#{item.materialCode},</if>
+                <if test="item.materialName != null">#{item.materialName},</if>
+                <if test="item.modelNumber != null">#{item.modelNumber},</if>
+                <if test="item.specification != null">#{item.specification},</if>
+                <if test="item.productionWorkshop != null">#{item.productionWorkshop},</if>
+                <if test="item.unit != null">#{item.unit},</if>
+                <if test="item.quantity != null">#{item.quantity},</if>
+                <if test="item.serviceStatus != null">#{item.serviceStatus},</if>
+                <if test="item.demandDocument != null">#{item.demandDocument},</if>
+                <if test="item.materialRequisitionStatus != null">#{item.materialRequisitionStatus},</if>
+                <if test="item.createById != null">#{item.createById},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+                <if test="item.createTime != null">#{item.createTime},</if>
+                <if test="item.updateById != null">#{item.updateById},</if>
+                <if test="item.updateBy != null">#{item.updateBy},</if>
+                <if test="item.updateTime != null">#{item.updateTime},</if>
+                <if test="item.delFlag != null">#{item.delFlag},</if>
+                <if test="item.byOne != null">#{item.byOne},</if>
+                <if test="item.byTwo != null">#{item.byTwo},</if>
+                <if test="item.planNumber != null">#{item.planNumber},</if>
+                <if test="item.planName != null">#{item.planName},</if>
+            </trim>
+        </foreach>
+    </insert>
+    <update id="updateJdProductionOrder" parameterType="com.zkqy.amichi.jd.domain.JdProductionOrder">
+        update fjqydb.jd_production_order
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="documentNumber != null">document_number = #{documentNumber},</if>
+            <if test="documentTyep != null">document_tyep = #{documentTyep},</if>
+            <if test="documentDate != null">document_date = #{documentDate},</if>
+            <if test="documentStatus != null">document_status = #{documentStatus},</if>
+            <if test="productType != null">product_type = #{productType},</if>
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="materialName != null">material_name = #{materialName},</if>
+            <if test="modelNumber != null">model_number = #{modelNumber},</if>
+            <if test="specification != null">specification = #{specification},</if>
+            <if test="productionWorkshop != null">production_workshop = #{productionWorkshop},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="quantity != null">quantity = #{quantity},</if>
+            <if test="serviceStatus != null">service_status = #{serviceStatus},</if>
+            <if test="demandDocument != null">demand_document = #{demandDocument},</if>
+            <if test="materialRequisitionStatus != null">material_requisition_status = #{materialRequisitionStatus},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="byOne != null">by_one = #{byOne},</if>
+            <if test="byTwo != null">by_two = #{byTwo},</if>
+            <if test="planNumber != null">plan_number = #{planNumber},</if>
+            <if test="planName != null">plan_name = #{planName},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteJdProductionOrderById" parameterType="Long">
+        delete from fjqydb.jd_production_order where id = #{id}
+    </delete>
+
+    <delete id="deleteJdProductionOrderByIds" parameterType="String">
+        delete from fjqydb.jd_production_order where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 186 - 97
zkqy-fujian-amichi/src/main/resources/mapper/MaterialInfoMapper.xml

@@ -8,12 +8,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="id"    column="id"    />
         <result property="materialCode"    column="material_code"    />
         <result property="materialName"    column="material_name"    />
-        <result property="model"    column="model"    />
         <result property="specification"    column="specification"    />
+        <result property="model"    column="model"    />
+        <result property="mapNumber"    column="map_number"    />
+        <result property="description"    column="description"    />
+        <result property="ckNumber"    column="ck_number"    />
+        <result property="ckName"    column="ck_name"    />
+        <result property="lotNumber"    column="lot_number"    />
         <result property="unit"    column="unit"    />
-        <result property="attribute"    column="attribute"    />
-        <result property="issueMethod"    column="issueMethod"    />
         <result property="stockQuantity"    column="stockQuantity"    />
+        <result property="availableAmount"    column="available_amount"    />
+        <result property="stockStatus"    column="stock_status"    />
+        <result property="ownerType"    column="owner_type"    />
+        <result property="ownerNumber"    column="owner_number"    />
+        <result property="ownerName"    column="owner_name"    />
+        <result property="custodianType"    column="custodian_type"    />
+        <result property="custodianCode"    column="custodian_code"    />
+        <result property="custodianName"    column="custodian_name"    />
         <result property="remark"    column="remark"    />
         <result property="createById"    column="create_by_id"    />
         <result property="createBy"    column="create_by"    />
@@ -22,21 +33,10 @@ 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="dataApprovalStatus"    column="data_approval_status"    />
-        <result property="processKey"    column="process_key"    />
-        <result property="taskProcessKey"    column="task_process_key"    />
-        <result property="taskNodeKey"    column="task_node_key"    />
-        <result property="ckId"    column="ck_id"    />
-        <result property="mapNumber"    column="map_number"    />
-        <result property="description"    column="description"    />
-        <result property="lotNumber"    column="lot_number"    />
     </resultMap>
 
     <sql id="selectMaterialInfoVo">
-        select id, material_code, material_name, model, specification,
-               unit, attribute, issueMethod, stockQuantity, remark, create_by_id,
-               create_by, create_time, update_by_id, update_by, update_time, del_flag,
-               data_approval_status, process_key, task_process_key, task_node_key, ck_id, map_number, description, lot_number from {DBNAME}.materialInfo
+        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
     </sql>
 
     <select id="selectMaterialInfoList" parameterType="com.zkqy.amichi.domain.MaterialInfo" resultMap="MaterialInfoResult">
@@ -44,22 +44,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</if>
             <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
-            <if test="model != null  and model != ''"> and model = #{model}</if>
             <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="mapNumber != null  and mapNumber != ''"> and map_number = #{mapNumber}</if>
+            <if test="description != null  and description != ''"> and description = #{description}</if>
+            <if test="ckNumber != null  and ckNumber != ''"> and ck_number = #{ckNumber}</if>
+            <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="attribute != null  and attribute != ''"> and attribute = #{attribute}</if>
-            <if test="issueMethod != null  and issueMethod != ''"> and issueMethod = #{issueMethod}</if>
             <if test="stockQuantity != null "> and stockQuantity = #{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>
+            <if test="ownerNumber != null  and ownerNumber != ''"> and owner_number = #{ownerNumber}</if>
+            <if test="ownerName != null  and ownerName != ''"> and owner_name like concat('%', #{ownerName}, '%')</if>
+            <if test="custodianType != null  and custodianType != ''"> and custodian_type = #{custodianType}</if>
+            <if test="custodianCode != null  and custodianCode != ''"> and custodian_code = #{custodianCode}</if>
+            <if test="custodianName != null  and custodianName != ''"> and custodian_name like concat('%', #{custodianName}, '%')</if>
             <if test="createById != null "> and create_by_id = #{createById}</if>
             <if test="updateById != null "> and update_by_id = #{updateById}</if>
-            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
-            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
-            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
-            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
-            <if test="ckId != null and ckId!='' ">and ck_id = #{ckId}</if>
-            <if test="mapNumber != null  and mapNumber != ''"> and map_number = #{mapNumber}</if>
-            <if test="description != null  and description != ''"> and description = #{description}</if>
-            <if test="lotNumber != null  and lotNumber != ''"> and lot_number = #{lotNumber}</if>
              and del_flag =0
         </where>
     </select>
@@ -70,16 +73,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <insert id="insertMaterialInfo" parameterType="com.zkqy.amichi.domain.MaterialInfo" useGeneratedKeys="true" keyProperty="id">
-        insert into {DBNAME}.materialInfo
+        insert into fjqydb.materialInfo
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="materialCode != null and materialCode != ''">material_code,</if>
             <if test="materialName != null and materialName != ''">material_name,</if>
-            <if test="model != null">model,</if>
             <if test="specification != null">specification,</if>
-            <if test="unit != null and unit != ''">unit,</if>
-            <if test="attribute != null and attribute != ''">attribute,</if>
-            <if test="issueMethod != null">issueMethod,</if>
+            <if test="model != null">model,</if>
+            <if test="mapNumber != null">map_number,</if>
+            <if test="description != null">description,</if>
+            <if test="ckNumber != null">ck_number,</if>
+            <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="availableAmount != null">available_amount,</if>
+            <if test="stockStatus != null">stock_status,</if>
+            <if test="ownerType != null">owner_type,</if>
+            <if test="ownerNumber != null">owner_number,</if>
+            <if test="ownerName != null">owner_name,</if>
+            <if test="custodianType != null">custodian_type,</if>
+            <if test="custodianCode != null">custodian_code,</if>
+            <if test="custodianName != null">custodian_name,</if>
             <if test="remark != null">remark,</if>
             <if test="createById != null">create_by_id,</if>
             <if test="createBy != null">create_by,</if>
@@ -88,24 +102,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="delFlag != null">del_flag,</if>
-            <if test="dataApprovalStatus != null">data_approval_status,</if>
-            <if test="processKey != null">process_key,</if>
-            <if test="taskProcessKey != null">task_process_key,</if>
-            <if test="taskNodeKey != null">task_node_key,</if>
-            <if test="ckId != null">ck_id,</if>
-            <if test="mapNumber != null">map_number,</if>
-            <if test="description != null">description,</if>
-            <if test="lotNumber != null">lot_number,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="materialCode != null and materialCode != ''">#{materialCode},</if>
             <if test="materialName != null and materialName != ''">#{materialName},</if>
-            <if test="model != null">#{model},</if>
             <if test="specification != null">#{specification},</if>
-            <if test="unit != null and unit != ''">#{unit},</if>
-            <if test="attribute != null and attribute != ''">#{attribute},</if>
-            <if test="issueMethod != null">#{issueMethod},</if>
+            <if test="model != null">#{model},</if>
+            <if test="mapNumber != null">#{mapNumber},</if>
+            <if test="description != null">#{description},</if>
+            <if test="ckNumber != null">#{ckNumber},</if>
+            <if test="ckName != null">#{ckName},</if>
+            <if test="lotNumber != null">#{lotNumber},</if>
+            <if test="unit != null">#{unit},</if>
             <if test="stockQuantity != null">#{stockQuantity},</if>
+            <if test="availableAmount != null">#{availableAmount},</if>
+            <if test="stockStatus != null">#{stockStatus},</if>
+            <if test="ownerType != null">#{ownerType},</if>
+            <if test="ownerNumber != null">#{ownerNumber},</if>
+            <if test="ownerName != null">#{ownerName},</if>
+            <if test="custodianType != null">#{custodianType},</if>
+            <if test="custodianCode != null">#{custodianCode},</if>
+            <if test="custodianName != null">#{custodianName},</if>
             <if test="remark != null">#{remark},</if>
             <if test="createById != null">#{createById},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -114,29 +131,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="delFlag != null">#{delFlag},</if>
-            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
-            <if test="processKey != null">#{processKey},</if>
-            <if test="taskProcessKey != null">#{taskProcessKey},</if>
-            <if test="taskNodeKey != null">#{taskNodeKey},</if>
-            <if test="ckId != null">#{ckId},</if>
-            <if test="mapNumber != null">#{mapNumber},</if>
-            <if test="description != null">#{description},</if>
-            <if test="lotNumber != null">#{lotNumber},</if>
-         </trim>
+        </trim>
     </insert>
     <insert id="batchInsert" parameterType="java.util.List">
         <!-- 使用foreach遍历list中的每一个元素 -->
         <foreach item="item"  collection="list"  separator =";">
             insert into {DBNAME}.materialInfo
             <trim prefix="(" suffix=")" suffixOverrides=",">
-                <if test="item.materialCode != null and item.materialCode != ''">material_code,</if>
-                <if test="item.materialName != null and item.materialName != ''">material_name,</if>
-                <if test="item.model != null">model,</if>
+                <if test="item.materialCode != null">material_code,</if>
+                <if test="item.materialName != null">material_name,</if>
                 <if test="item.specification != null">specification,</if>
-                <if test="item.unit != null and item.unit != ''">unit,</if>
-                <if test="item.attribute != null and item.attribute != ''">`attribute`,</if>
-                <if test="item.issueMethod != null">issueMethod,</if>
+                <if test="item.model != null">model,</if>
+                <if test="item.mapNumber != null">map_number,</if>
+                <if test="item.description != null">description,</if>
+                <if test="item.ckNumber != null">ck_number,</if>
+                <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.availableAmount != null">available_amount,</if>
+                <if test="item.stockStatus != null">stock_status,</if>
+                <if test="item.ownerType != null">owner_type,</if>
+                <if test="item.ownerNumber != null">owner_number,</if>
+                <if test="item.ownerName != null">owner_name,</if>
+                <if test="item.custodianType != null">custodian_type,</if>
+                <if test="item.custodianCode != null">custodian_code,</if>
+                <if test="item.custodianName != null">custodian_name,</if>
                 <if test="item.remark != null">remark,</if>
                 <if test="item.createById != null">create_by_id,</if>
                 <if test="item.createBy != null">create_by,</if>
@@ -145,24 +165,92 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.updateBy != null">update_by,</if>
                 <if test="item.updateTime != null">update_time,</if>
                 <if test="item.delFlag != null">del_flag,</if>
-                <if test="item.dataApprovalStatus != null">data_approval_status,</if>
-                <if test="item.processKey != null">process_key,</if>
-                <if test="item.taskProcessKey != null">task_process_key,</if>
-                <if test="item.taskNodeKey != null">task_node_key,</if>
-                <if test="item.ckId != null">ck_id,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.materialCode != null and materialCode != ''">#{item.materialCode},</if>
+                <if test="item.materialName != null and materialName != ''">#{item.materialName},</if>
+                <if test="item.specification != null">#{item.specification},</if>
+                <if test="item.model != null">#{item.model},</if>
+                <if test="item.mapNumber != null">#{item.mapNumber},</if>
+                <if test="item.description != null">#{item.description},</if>
+                <if test="item.ckNumber != null">#{item.ckNumber},</if>
+                <if test="item.ckName != null">#{item.ckName},</if>
+                <if test="item.lotNumber != null">#{item.lotNumber},</if>
+                <if test="item.unit != null">#{item.unit},</if>
+                <if test="item.stockQuantity != null">#{item.stockQuantity},</if>
+                <if test="item.availableAmount != null">#{item.availableAmount},</if>
+                <if test="item.stockStatus != null">#{item.stockStatus},</if>
+                <if test="item.ownerType != null">#{item.ownerType},</if>
+                <if test="item.ownerNumber != null">#{item.ownerNumber},</if>
+                <if test="item.ownerName != null">#{item.ownerName},</if>
+                <if test="item.custodianType != null">#{item.custodianType},</if>
+                <if test="item.custodianCode != null">#{item.custodianCode},</if>
+                <if test="item.custodianName != null">#{item.custodianName},</if>
+                <if test="item.remark != null">#{item.remark},</if>
+                <if test="item.createById != null">#{item.createById},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+                <if test="item.createTime != null">#{item.createTime},</if>
+                <if test="item.updateById != null">#{item.updateById},</if>
+                <if test="item.updateBy != null">#{item.updateBy},</if>
+                <if test="item.updateTime != null">#{item.updateTime},</if>
+                <if test="item.delFlag != null">#{item.delFlag},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <insert id="batchInsertJdMaterialInfoVo" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" >
+        <!-- 使用foreach遍历list中的每一个元素 -->
+        <foreach  collection="list" item="item"   separator =";">
+            insert into fjqydb.materialInfo
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.materialCode != null and item.materialCode != ''">material_code,</if>
+                <if test="item.materialName != null and item.materialName != ''">material_name,</if>
+                <if test="item.specification != null">specification,</if>
+                <if test="item.model != null">model,</if>
                 <if test="item.mapNumber != null">map_number,</if>
                 <if test="item.description != null">description,</if>
+                <if test="item.ckNumber != null">ck_number,</if>
+                <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.availableAmount != null">available_amount,</if>
+                <if test="item.stockStatus != null">stock_status,</if>
+                <if test="item.ownerType != null">owner_type,</if>
+                <if test="item.ownerNumber != null">owner_number,</if>
+                <if test="item.ownerName != null">owner_name,</if>
+                <if test="item.custodianType != null">custodian_type,</if>
+                <if test="item.custodianCode != null">custodian_code,</if>
+                <if test="item.custodianName != null">custodian_name,</if>
+                <if test="item.remark != null">remark,</if>
+                <if test="item.createById != null">create_by_id,</if>
+                <if test="item.createBy != null">create_by,</if>
+                <if test="item.createTime != null">create_time,</if>
+                <if test="item.updateById != null">update_by_id,</if>
+                <if test="item.updateBy != null">update_by,</if>
+                <if test="item.updateTime != null">update_time,</if>
+                <if test="item.delFlag != null">del_flag,</if>
             </trim>
             <trim prefix="values (" suffix=")" suffixOverrides=",">
                 <if test="item.materialCode != null and item.materialCode != ''">#{item.materialCode},</if>
                 <if test="item.materialName != null and item.materialName != ''">#{item.materialName},</if>
-                <if test="item.model != null">#{item.model},</if>
                 <if test="item.specification != null">#{item.specification},</if>
-                <if test="item.unit != null and item.unit != ''">#{item.unit},</if>
-                <if test="item.attribute != null and item.attribute != ''">#{item.attribute},</if>
-                <if test="item.issueMethod != null">#{item.issueMethod},</if>
+                <if test="item.model != null">#{item.model},</if>
+                <if test="item.mapNumber != null">#{item.mapNumber},</if>
+                <if test="item.description != null">#{item.description},</if>
+                <if test="item.ckNumber != null">#{item.ckNumber},</if>
+                <if test="item.ckName != null">#{item.ckName},</if>
+                <if test="item.lotNumber != null">#{item.lotNumber},</if>
+                <if test="item.unit != null">#{item.unit},</if>
                 <if test="item.stockQuantity != null">#{item.stockQuantity},</if>
+                <if test="item.availableAmount != null">#{item.availableAmount},</if>
+                <if test="item.stockStatus != null">#{item.stockStatus},</if>
+                <if test="item.ownerType != null">#{item.ownerType},</if>
+                <if test="item.ownerNumber != null">#{item.ownerNumber},</if>
+                <if test="item.ownerName != null">#{item.ownerName},</if>
+                <if test="item.custodianType != null">#{item.custodianType},</if>
+                <if test="item.custodianCode != null">#{item.custodianCode},</if>
+                <if test="item.custodianName != null">#{item.custodianName},</if>
                 <if test="item.remark != null">#{item.remark},</if>
                 <if test="item.createById != null">#{item.createById},</if>
                 <if test="item.createBy != null">#{item.createBy},</if>
@@ -171,14 +259,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.updateBy != null">#{item.updateBy},</if>
                 <if test="item.updateTime != null">#{item.updateTime},</if>
                 <if test="item.delFlag != null">#{item.delFlag},</if>
-                <if test="item.dataApprovalStatus != null">#{item.dataApprovalStatus},</if>
-                <if test="item.processKey != null">#{item.processKey},</if>
-                <if test="item.taskProcessKey != null">#{item.taskProcessKey},</if>
-                <if test="item.taskNodeKey != null">#{item.taskNodeKey},</if>
-                <if test="item.ckId != null">#{item.ckId},</if>
-                <if test="item.mapNumber != null">#{item.mapNumber},</if>
-                <if test="item.description != null">#{item.description},</if>
-                <if test="item.lotNumber != null">#{item.lotNumber},</if>
             </trim>
         </foreach>
     </insert>
@@ -188,12 +268,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <trim prefix="SET" suffixOverrides=",">
             <if test="materialCode != null and materialCode != ''">material_code = #{materialCode},</if>
             <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
-            <if test="model != null">model = #{model},</if>
             <if test="specification != null">specification = #{specification},</if>
-            <if test="unit != null and unit != ''">unit = #{unit},</if>
-            <if test="attribute != null and attribute != ''">attribute = #{attribute},</if>
-            <if test="issueMethod != null">issueMethod = #{issueMethod},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="mapNumber != null">map_number = #{mapNumber},</if>
+            <if test="description != null">description = #{description},</if>
+            <if test="ckNumber != null">ck_number = #{ckNumber},</if>
+            <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="availableAmount != null">available_amount = #{availableAmount},</if>
+            <if test="stockStatus != null">stock_status = #{stockStatus},</if>
+            <if test="ownerType != null">owner_type = #{ownerType},</if>
+            <if test="ownerNumber != null">owner_number = #{ownerNumber},</if>
+            <if test="ownerName != null">owner_name = #{ownerName},</if>
+            <if test="custodianType != null">custodian_type = #{custodianType},</if>
+            <if test="custodianCode != null">custodian_code = #{custodianCode},</if>
+            <if test="custodianName != null">custodian_name = #{custodianName},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createById != null">create_by_id = #{createById},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
@@ -202,14 +293,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
-            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
-            <if test="processKey != null">process_key = #{processKey},</if>
-            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
-            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
-            <if test="ckId != null">ck_id = #{ckId},</if>
-            <if test="mapNumber != null">map_number = #{mapNumber},</if>
-            <if test="description != null">description = #{description},</if>
-            <if test="lotNumber != null">lot_number = #{lotNumber},</if>
         </trim>
         where id = #{id}
     </update>
@@ -218,12 +301,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <trim prefix="SET" suffixOverrides=",">
             <if test="materialCode != null and materialCode != ''">material_code = #{materialCode},</if>
             <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
-            <if test="model != null">model = #{model},</if>
             <if test="specification != null">specification = #{specification},</if>
-            <if test="unit != null and unit != ''">unit = #{unit},</if>
-            <if test="attribute != null and attribute != ''">`attribute` = #{attribute},</if>
-            <if test="issueMethod != null">issueMethod = #{issueMethod},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="mapNumber != null">map_number = #{mapNumber},</if>
+            <if test="description != null">description = #{description},</if>
+            <if test="ckNumber != null">ck_number = #{ckNumber},</if>
+            <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="availableAmount != null">available_amount = #{availableAmount},</if>
+            <if test="stockStatus != null">stock_status = #{stockStatus},</if>
+            <if test="ownerType != null">owner_type = #{ownerType},</if>
+            <if test="ownerNumber != null">owner_number = #{ownerNumber},</if>
+            <if test="ownerName != null">owner_name = #{ownerName},</if>
+            <if test="custodianType != null">custodian_type = #{custodianType},</if>
+            <if test="custodianCode != null">custodian_code = #{custodianCode},</if>
+            <if test="custodianName != null">custodian_name = #{custodianName},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createById != null">create_by_id = #{createById},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
@@ -232,11 +326,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
-            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
-            <if test="processKey != null">process_key = #{processKey},</if>
-            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
-            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
-            <if test="ckId != null  and ckId != ''">ck_id=#{ckId}</if>
         </trim>
         where material_code = #{materialCode}
     </update>

+ 28 - 44
zkqy-fujian-amichi/src/main/resources/mapper/PlanTaskDetailsMapper.xml

@@ -5,14 +5,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="com.zkqy.amichi.mapper.PlanTaskDetailsMapper">
     <resultMap type="com.zkqy.amichi.domain.PlanTaskDetails" id="PlanTaskDetailsResult">
         <result property="id"    column="id"    />
-        <result property="taskId"    column="task_id"    />
-        <result property="model"    column="model"    />
-        <result property="nameplate"    column="nameplate"    />
-        <result property="capacity"    column="capacity"    />
-        <result property="interfaceDisk"    column="interface_disk"    />
-        <result property="length"    column="length"    />
-        <result property="voltage"    column="voltage"    />
-        <result property="programme"    column="programme"    />
+        <result property="planId"    column="plan_id"    />
+        <result property="materialId"    column="material_id"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="modelNumber"    column="model_number"    />
+        <result property="specification"    column="specification"    />
+        <result property="materialUnit"    column="material_unit"    />
         <result property="quantity"    column="quantity"    />
         <result property="sparea"    column="sparea"    />
         <result property="spareb"    column="spareb"    />
@@ -25,28 +23,21 @@ 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="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"/>
         <result property="processKey"    column="process_key"    />
-        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"/>
         <result property="taskNodeKey"    column="task_node_key"    />
-        <result property="planId"    column="plan_id"    />
+        <result property="demandDocument"    column="demand_document"/>
     </resultMap>
 
     <sql id="selectPlanTaskDetailsVo">
-        select id, task_id, model, nameplate, capacity, interface_disk, length, voltage, programme, quantity, sparea, spareb, sparec, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key, plan_id from {DBNAME}.plan_task_details
+        select id,material_id,material_name,model_number,specification,material_unit, quantity, sparea, spareb, sparec, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key, plan_id,demand_document from {DBNAME}.plan_task_details
     </sql>
 
     <select id="selectPlanTaskDetailsList" parameterType="com.zkqy.amichi.domain.PlanTaskDetails" resultMap="PlanTaskDetailsResult">
         <include refid="selectPlanTaskDetailsVo"/>
         <where>  
             <if test="taskId != null  and taskId != ''"> and task_id = #{taskId}</if>
-            <if test="model != null  and model != ''"> and model = #{model}</if>
-            <if test="nameplate != null  and nameplate != ''"> and nameplate = #{nameplate}</if>
-            <if test="capacity != null  and capacity != ''"> and capacity = #{capacity}</if>
-            <if test="interfaceDisk != null  and interfaceDisk != ''"> and interface_disk = #{interfaceDisk}</if>
-            <if test="length != null  and length != ''"> and `length` = #{length}</if>
-            <if test="voltage != null  and voltage != ''"> and voltage = #{voltage}</if>
-            <if test="programme != null  and programme != ''"> and programme = #{programme}</if>
             <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</if>
             <if test="sparea != null  and sparea != ''"> and sparea = #{sparea}</if>
             <if test="spareb != null  and spareb != ''"> and spareb = #{spareb}</if>
@@ -67,16 +58,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
         
     <insert id="insertPlanTaskDetails" parameterType="com.zkqy.amichi.domain.PlanTaskDetails" useGeneratedKeys="true" keyProperty="id">
-        insert into {DBNAME}.plan_task_details
+        insert into fjqydb.plan_task_details
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="taskId != null">task_id,</if>
-            <if test="model != null">model,</if>
-            <if test="nameplate != null">nameplate,</if>
-            <if test="capacity != null">capacity,</if>
-            <if test="interfaceDisk != null">interface_disk,</if>
-            <if test="length != null">`length`,</if>
-            <if test="voltage != null">voltage,</if>
-            <if test="programme != null">programme,</if>
             <if test="quantity != null">quantity,</if>
             <if test="sparea != null">sparea,</if>
             <if test="spareb != null">spareb,</if>
@@ -94,16 +77,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="taskProcessKey != null">task_process_key,</if>
             <if test="taskNodeKey != null">task_node_key,</if>
             <if test="planId != null">plan_id,</if>
+            <if test="materialId != null">material_id,</if>
+            <if test="materialName != null">material_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="specification != null">specification,</if>
+            <if test="materialUnit != null">material_unit,</if>
+            <if test="demandDocument != null">demand_document,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="taskId != null">#{taskId},</if>
-            <if test="model != null">#{model},</if>
-            <if test="nameplate != null">#{nameplate},</if>
-            <if test="capacity != null">#{capacity},</if>
-            <if test="interfaceDisk != null">#{interfaceDisk},</if>
-            <if test="length != null">#{length},</if>
-            <if test="voltage != null">#{voltage},</if>
-            <if test="programme != null">#{programme},</if>
             <if test="quantity != null">#{quantity},</if>
             <if test="sparea != null">#{sparea},</if>
             <if test="spareb != null">#{spareb},</if>
@@ -121,20 +102,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="taskProcessKey != null">#{taskProcessKey},</if>
             <if test="taskNodeKey != null">#{taskNodeKey},</if>
             <if test="planId != null">#{planId},</if>
+            <if test="materialId != null">#{materialId},</if>
+            <if test="materialName != null">#{materialName},</if>
+            <if test="modelNumber != null">#{modelNumber},</if>
+            <if test="specification != null">#{specification},</if>
+            <if test="materialUnit != null">#{materialUnit},</if>
+            <if test="demandDocument != null">#{demandDocument},</if>
          </trim>
     </insert>
 
     <update id="updatePlanTaskDetails" parameterType="com.zkqy.amichi.domain.PlanTaskDetails">
         update {DBNAME}.plan_task_details
         <trim prefix="SET" suffixOverrides=",">
-            <if test="taskId != null">task_id = #{taskId},</if>
-            <if test="model != null">model = #{model},</if>
-            <if test="nameplate != null">nameplate = #{nameplate},</if>
-            <if test="capacity != null">capacity = #{capacity},</if>
-            <if test="interfaceDisk != null">interface_disk = #{interfaceDisk},</if>
-            <if test="length != null">`length` = #{length},</if>
-            <if test="voltage != null">voltage = #{voltage},</if>
-            <if test="programme != null">programme = #{programme},</if>
+            <if test="materialId != null">material_id=#{materialId},</if>
+            <if test="materialName != null">material_name=#{materialName},</if>
+            <if test="modelNumber != null">model_number=#{modelNumber},</if>
+            <if test="specification != null">specification=#{specification},</if>
+            <if test="materialUnit != null">material_unit=#{materialUnit},</if>
             <if test="quantity != null">quantity = #{quantity},</if>
             <if test="sparea != null">sparea = #{sparea},</if>
             <if test="spareb != null">spareb = #{spareb},</if>

+ 225 - 198
zkqy-fujian-amichi/src/main/resources/mapper/ProductionBomsDetailsMapper.xml

@@ -1,234 +1,261 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zkqy.amichi.mapper.ProductionBomsDetailsMapper">
-    
+
     <resultMap type="com.zkqy.amichi.domain.ProductionBomsDetails" id="ProductionBomsDetailsResult">
         <result property="id"    column="id"    />
-        <result property="subitemMaterialCode"    column="subitem_material_code"    />
-        <result property="subitemMaterialName"    column="subitem_material_name"    />
-        <result property="subitemDetailModel"    column="subitem_detail_model"    />
-        <result property="subitemDetailSpecifications"    column="subitem_detail_specifications"    />
-        <result property="workingProcedure"    column="working_procedure"    />
-        <result property="quantityToBeDelivered"    column="quantity_to_be_delivered"    />
-        <result property="unclaimedQuantity"    column="unclaimed_quantity"    />
-        <result property="remark"    column="remark"    />
-        <result property="createById"    column="create_by_id"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateById"    column="update_by_id"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="dataApprovalStatus"    column="data_approval_status"    />
-        <result property="processKey"    column="process_key"    />
-        <result property="taskProcessKey"    column="task_process_key"    />
-        <result property="taskNodeKey"    column="task_node_key"    />
-        <result property="productionBomId" column="production_bom_id"/>
+        <result property="fbillno"    column="fbillno"    />
+        <result property="fmaterialid2Fnumber"    column="fmaterialid2_fnumber"    />
+        <result property="fmaterialname1"    column="fmaterialname1"    />
+        <result property="fmaterialmodel1"    column="fmaterialmodel1"    />
+        <result property="fPonpBaseproperty"    column="f_ponp_baseproperty"    />
+        <result property="fmaterialtype"    column="fmaterialtype"    />
+        <result property="fsupplytype"    column="fsupplytype"    />
+        <result property="fuseRate"    column="fuse_rate"    />
+        <result property="foperid"    column="foperid"    />
+        <result property="fnumerator"    column="fnumerator"    />
+        <result property="fdenominator"    column="fdenominator"    />
+        <result property="funitid2Fname"    column="funitid2_fname"    />
+        <result property="ffixscrapqty"    column="ffixscrapqty"    />
+        <result property="fscraprate"    column="fscraprate"    />
+        <result property="fmustqty"    column="fmustqty"    />
+        <result property="fbasenumerator"    column="fbasenumerator"    />
+        <result property="fbasedenominator"    column="fbasedenominator"    />
+        <result property="fprocessid"    column="fprocessid"    />
+        <result property="fissuetype"    column="fissuetype"    />
+        <result property="fbackflushtype"    column="fbackflushtype"    />
+        <result property="fstockid"    column="fstockid"    />
+        <result property="fpickedqty"    column="fpickedqty"    />
+        <result property="fnopickedqty"    column="fnopickedqty"    />
+        <result property="finventoryqty"    column="finventoryqty"    />
+        <result property="fisskip"    column="fisskip"    />
+        <result property="fsupplymode"    column="fsupplymode"    />
+        <result property="fgldbqty"    column="fgldbqty"    />
+        <result property="fbaseneedqty"    column="fbaseneedqty"    />
+        <result property="factualpickqty"    column="factualpickqty"    />
     </resultMap>
 
     <sql id="selectProductionBomsDetailsVo">
-        select id, subitem_material_code, subitem_material_name, subitem_detail_model, subitem_detail_specifications, working_procedure, quantity_to_be_delivered, unclaimed_quantity, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time,
-               del_flag, data_approval_status, process_key, task_process_key, task_node_key,production_bom_id from {DBNAME}.production_boms_details
+        select id, fbillno, fmaterialid2_fnumber, fmaterialname1, fmaterialmodel1, f_ponp_baseproperty, fmaterialtype, fsupplytype, fuse_rate, foperid, fnumerator, fdenominator, funitid2_fname, ffixscrapqty, fscraprate, fmustqty, fbasenumerator, fbasedenominator, fprocessid, fissuetype, fbackflushtype, fstockid, fpickedqty, fnopickedqty, finventoryqty, fisskip, fsupplymode, fgldbqty, fbaseneedqty, factualpickqty from fjqydb.production_boms_details
     </sql>
 
     <select id="selectProductionBomsDetailsList" parameterType="com.zkqy.amichi.domain.ProductionBomsDetails" resultMap="ProductionBomsDetailsResult">
         <include refid="selectProductionBomsDetailsVo"/>
-        <where>  
-            <if test="subitemMaterialCode != null  and subitemMaterialCode != ''"> and subitem_material_code = #{subitemMaterialCode}</if>
-            <if test="subitemMaterialName != null  and subitemMaterialName != ''"> and subitem_material_name like concat('%', #{subitemMaterialName}, '%')</if>
-            <if test="subitemDetailModel != null  and subitemDetailModel != ''"> and subitem_detail_model = #{subitemDetailModel}</if>
-            <if test="subitemDetailSpecifications != null  and subitemDetailSpecifications != ''"> and subitem_detail_specifications = #{subitemDetailSpecifications}</if>
-            <if test="workingProcedure != null  and workingProcedure != ''"> and working_procedure = #{workingProcedure}</if>
-            <if test="quantityToBeDelivered != null  and quantityToBeDelivered != ''"> and quantity_to_be_delivered = #{quantityToBeDelivered}</if>
-            <if test="unclaimedQuantity != null  and unclaimedQuantity != ''"> and unclaimed_quantity = #{unclaimedQuantity}</if>
-            <if test="createById != null "> and create_by_id = #{createById}</if>
-            <if test="updateById != null "> and update_by_id = #{updateById}</if>
-            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
-            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
-            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
-            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
-            <if test="productionBomId != null  and productionBomId != ''"> and production_bom_id = #{productionBomId}</if>
-            and del_flag=0
+        <where>
+            <if test="fbillno != null  and fbillno != ''"> and fbillno = #{fbillno}</if>
+            <if test="fmaterialid2Fnumber != null  and fmaterialid2Fnumber != ''"> and fmaterialid2_fnumber = #{fmaterialid2Fnumber}</if>
+            <if test="fmaterialname1 != null  and fmaterialname1 != ''"> and fmaterialname1 = #{fmaterialname1}</if>
+            <if test="fmaterialmodel1 != null  and fmaterialmodel1 != ''"> and fmaterialmodel1 = #{fmaterialmodel1}</if>
+            <if test="fPonpBaseproperty != null  and fPonpBaseproperty != ''"> and f_ponp_baseproperty = #{fPonpBaseproperty}</if>
+            <if test="fmaterialtype != null  and fmaterialtype != ''"> and fmaterialtype = #{fmaterialtype}</if>
+            <if test="fsupplytype != null  and fsupplytype != ''"> and fsupplytype = #{fsupplytype}</if>
+            <if test="fuseRate != null "> and fuse_rate = #{fuseRate}</if>
+            <if test="foperid != null "> and foperid = #{foperid}</if>
+            <if test="fnumerator != null "> and fnumerator = #{fnumerator}</if>
+            <if test="fdenominator != null "> and fdenominator = #{fdenominator}</if>
+            <if test="funitid2Fname != null  and funitid2Fname != ''"> and funitid2_fname like concat('%', #{funitid2Fname}, '%')</if>
+            <if test="ffixscrapqty != null "> and ffixscrapqty = #{ffixscrapqty}</if>
+            <if test="fscraprate != null "> and fscraprate = #{fscraprate}</if>
+            <if test="fmustqty != null "> and fmustqty = #{fmustqty}</if>
+            <if test="fbasenumerator != null "> and fbasenumerator = #{fbasenumerator}</if>
+            <if test="fbasedenominator != null "> and fbasedenominator = #{fbasedenominator}</if>
+            <if test="fprocessid != null "> and fprocessid = #{fprocessid}</if>
+            <if test="fissuetype != null  and fissuetype != ''"> and fissuetype = #{fissuetype}</if>
+            <if test="fbackflushtype != null  and fbackflushtype != ''"> and fbackflushtype = #{fbackflushtype}</if>
+            <if test="fstockid != null "> and fstockid = #{fstockid}</if>
+            <if test="fpickedqty != null "> and fpickedqty = #{fpickedqty}</if>
+            <if test="fnopickedqty != null "> and fnopickedqty = #{fnopickedqty}</if>
+            <if test="finventoryqty != null "> and finventoryqty = #{finventoryqty}</if>
+            <if test="fisskip != null "> and fisskip = #{fisskip}</if>
+            <if test="fsupplymode != null  and fsupplymode != ''"> and fsupplymode = #{fsupplymode}</if>
+            <if test="fgldbqty != null "> and fgldbqty = #{fgldbqty}</if>
+            <if test="fbaseneedqty != null "> and fbaseneedqty = #{fbaseneedqty}</if>
+            <if test="factualpickqty != null "> and factualpickqty = #{factualpickqty}</if>
         </where>
     </select>
-    
+
     <select id="selectProductionBomsDetailsById" parameterType="Long" resultMap="ProductionBomsDetailsResult">
         <include refid="selectProductionBomsDetailsVo"/>
-        where id = #{id}   and del_flag=0
-    </select>
-    <select id="selectProductionBomsDetailsListAndStockInfo"
-            resultType="com.zkqy.amichi.domain.vo.ProductionBomsDetailsVo">
-        SELECT
-            pbd.id,
-            pbd.subitem_material_code,
-            pbd.subitem_material_name,
-            pbd.subitem_detail_model,
-            pbd.subitem_detail_specifications,
-            pbd.working_procedure,
-            pbd.quantity_to_be_delivered,
-            pbd.unclaimed_quantity,
-            pbd.remark,
-            pbd.create_by_id,
-            pbd.create_by,
-            pbd.create_time,
-            pbd.update_by_id,
-            pbd.update_by,
-            pbd.update_time,
-            pbd.del_flag,
-            pbd.data_approval_status,
-            pbd.process_key,
-            pbd.task_process_key,
-            pbd.task_node_key,
-            pbd.production_bom_id,
-            m.stockQuantity as stockQuantity
-        FROM
-            {DBNAME}.production_boms_details AS pbd
-                LEFT JOIN {DBNAME}.materialinfo AS m ON pbd.subitem_material_code = m.material_code
-           where pbd.subitem_material_code in
-            <foreach item="materialCode" collection="list" open="(" separator="," close=")">
-                #{materialCode}
-            </foreach>
-    </select>
-    <select id="selectProductionBomsDetailsListByInProductionBomId"
-            resultType="com.zkqy.amichi.domain.vo.ProductionBomsDetailsVo">
-        SELECT
-        pbd.id,
-        pbd.subitem_material_code,
-        pbd.subitem_material_name,
-        pbd.subitem_detail_model,
-        pbd.subitem_detail_specifications,
-        pbd.working_procedure,
-        pbd.quantity_to_be_delivered,
-        pbd.unclaimed_quantity,
-        pbd.remark,
-        pbd.create_by_id,
-        pbd.create_by,
-        pbd.create_time,
-        pbd.update_by_id,
-        pbd.update_by,
-        pbd.update_time,
-        pbd.del_flag,
-        pbd.data_approval_status,
-        pbd.process_key,
-        pbd.task_process_key,
-        pbd.task_node_key,
-        pbd.production_bom_id,
-       -- m.stockQuantity as stockQuantity
-        sum(m.stockQuantity) as stockQuantity,
-        pbs.demand_document as order_number
-        FROM
-        {DBNAME}.production_boms_details AS pbd
-        LEFT JOIN {DBNAME}.materialinfo AS m ON pbd.subitem_material_code = m.material_code
-        LEFT JOIN {DBNAME}.production_boms AS pbs ON pbs.id = pbd.production_bom_id
-        where pbd.production_bom_id in
-        <foreach item="bomId" collection="list" open="(" separator="," close=")">
-            #{bomId}
-        </foreach>
-        group by 	pbd.subitem_material_code,pbd.id,	pbd.subitem_material_name,
-        pbd.subitem_detail_model,
-        pbd.subitem_detail_specifications,
-        pbd.working_procedure,
-        pbd.quantity_to_be_delivered,
-        pbd.unclaimed_quantity,
-        pbd.remark,
-        pbd.create_by_id,
-        pbd.create_by,
-        pbd.create_time,
-        pbd.update_by_id,
-        pbd.update_by,
-        pbd.update_time,
-        pbd.del_flag,
-        pbd.data_approval_status,
-        pbd.process_key,
-        pbd.task_process_key,
-        pbd.task_node_key,
-        pbd.production_bom_id,
-        pbs.demand_document
+        where id = #{id}
     </select>
 
     <insert id="insertProductionBomsDetails" parameterType="com.zkqy.amichi.domain.ProductionBomsDetails" useGeneratedKeys="true" keyProperty="id">
-        insert into {DBNAME}.production_boms_details
+        insert into fjqydb.production_boms_details
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="subitemMaterialCode != null">subitem_material_code,</if>
-            <if test="subitemMaterialName != null">subitem_material_name,</if>
-            <if test="subitemDetailModel != null">subitem_detail_model,</if>
-            <if test="subitemDetailSpecifications != null">subitem_detail_specifications,</if>
-            <if test="workingProcedure != null">working_procedure,</if>
-            <if test="quantityToBeDelivered != null">quantity_to_be_delivered,</if>
-            <if test="unclaimedQuantity != null">unclaimed_quantity,</if>
-            <if test="remark != null">remark,</if>
-            <if test="createById != null">create_by_id,</if>
-            <if test="createBy != null">create_by,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateById != null">update_by_id,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="delFlag != null">del_flag,</if>
-            <if test="dataApprovalStatus != null">data_approval_status,</if>
-            <if test="processKey != null">process_key,</if>
-            <if test="taskProcessKey != null">task_process_key,</if>
-            <if test="taskNodeKey != null">task_node_key,</if>
-            <if test="productionBomId != null  and productionBomId != ''">production_bom_id</if>
-         </trim>
+            <if test="fbillno != null">fbillno,</if>
+            <if test="fmaterialid2Fnumber != null">fmaterialid2_fnumber,</if>
+            <if test="fmaterialname1 != null">fmaterialname1,</if>
+            <if test="fmaterialmodel1 != null">fmaterialmodel1,</if>
+            <if test="fPonpBaseproperty != null">f_ponp_baseproperty,</if>
+            <if test="fmaterialtype != null">fmaterialtype,</if>
+            <if test="fsupplytype != null">fsupplytype,</if>
+            <if test="fuseRate != null">fuse_rate,</if>
+            <if test="foperid != null">foperid,</if>
+            <if test="fnumerator != null">fnumerator,</if>
+            <if test="fdenominator != null">fdenominator,</if>
+            <if test="funitid2Fname != null">funitid2_fname,</if>
+            <if test="ffixscrapqty != null">ffixscrapqty,</if>
+            <if test="fscraprate != null">fscraprate,</if>
+            <if test="fmustqty != null">fmustqty,</if>
+            <if test="fbasenumerator != null">fbasenumerator,</if>
+            <if test="fbasedenominator != null">fbasedenominator,</if>
+            <if test="fprocessid != null">fprocessid,</if>
+            <if test="fissuetype != null">fissuetype,</if>
+            <if test="fbackflushtype != null">fbackflushtype,</if>
+            <if test="fstockid != null">fstockid,</if>
+            <if test="fpickedqty != null">fpickedqty,</if>
+            <if test="fnopickedqty != null">fnopickedqty,</if>
+            <if test="finventoryqty != null">finventoryqty,</if>
+            <if test="fisskip != null">fisskip,</if>
+            <if test="fsupplymode != null">fsupplymode,</if>
+            <if test="fgldbqty != null">fgldbqty,</if>
+            <if test="fbaseneedqty != null">fbaseneedqty,</if>
+            <if test="factualpickqty != null">factualpickqty,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="subitemMaterialCode != null">#{subitemMaterialCode},</if>
-            <if test="subitemMaterialName != null">#{subitemMaterialName},</if>
-            <if test="subitemDetailModel != null">#{subitemDetailModel},</if>
-            <if test="subitemDetailSpecifications != null">#{subitemDetailSpecifications},</if>
-            <if test="workingProcedure != null">#{workingProcedure},</if>
-            <if test="quantityToBeDelivered != null">#{quantityToBeDelivered},</if>
-            <if test="unclaimedQuantity != null">#{unclaimedQuantity},</if>
-            <if test="remark != null">#{remark},</if>
-            <if test="createById != null">#{createById},</if>
-            <if test="createBy != null">#{createBy},</if>
-            <if test="createTime != null">#{createTime},</if>
-            <if test="updateById != null">#{updateById},</if>
-            <if test="updateBy != null">#{updateBy},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="delFlag != null">#{delFlag},</if>
-            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
-            <if test="processKey != null">#{processKey},</if>
-            <if test="taskProcessKey != null">#{taskProcessKey},</if>
-            <if test="taskNodeKey != null">#{taskNodeKey},</if>
-            <if test="productionBomId != null  and productionBomId != ''">#{productionBomId}</if>
-         </trim>
+            <if test="fbillno != null">#{fbillno},</if>
+            <if test="fmaterialid2Fnumber != null">#{fmaterialid2Fnumber},</if>
+            <if test="fmaterialname1 != null">#{fmaterialname1},</if>
+            <if test="fmaterialmodel1 != null">#{fmaterialmodel1},</if>
+            <if test="fPonpBaseproperty != null">#{fPonpBaseproperty},</if>
+            <if test="fmaterialtype != null">#{fmaterialtype},</if>
+            <if test="fsupplytype != null">#{fsupplytype},</if>
+            <if test="fuseRate != null">#{fuseRate},</if>
+            <if test="foperid != null">#{foperid},</if>
+            <if test="fnumerator != null">#{fnumerator},</if>
+            <if test="fdenominator != null">#{fdenominator},</if>
+            <if test="funitid2Fname != null">#{funitid2Fname},</if>
+            <if test="ffixscrapqty != null">#{ffixscrapqty},</if>
+            <if test="fscraprate != null">#{fscraprate},</if>
+            <if test="fmustqty != null">#{fmustqty},</if>
+            <if test="fbasenumerator != null">#{fbasenumerator},</if>
+            <if test="fbasedenominator != null">#{fbasedenominator},</if>
+            <if test="fprocessid != null">#{fprocessid},</if>
+            <if test="fissuetype != null">#{fissuetype},</if>
+            <if test="fbackflushtype != null">#{fbackflushtype},</if>
+            <if test="fstockid != null">#{fstockid},</if>
+            <if test="fpickedqty != null">#{fpickedqty},</if>
+            <if test="fnopickedqty != null">#{fnopickedqty},</if>
+            <if test="finventoryqty != null">#{finventoryqty},</if>
+            <if test="fisskip != null">#{fisskip},</if>
+            <if test="fsupplymode != null">#{fsupplymode},</if>
+            <if test="fgldbqty != null">#{fgldbqty},</if>
+            <if test="fbaseneedqty != null">#{fbaseneedqty},</if>
+            <if test="factualpickqty != null">#{factualpickqty},</if>
+        </trim>
+    </insert>
+    <insert id="insertBomsBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        <foreach collection="list" item="item" separator=";">
+            insert into fjqydb.production_boms_details
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.fbillno != null">fbillno,</if>
+                <if test="item.fmaterialid2Fnumber != null">fmaterialid2_fnumber,</if>
+                <if test="item.fmaterialname1 != null">fmaterialname1,</if>
+                <if test="item.fmaterialmodel1 != null">fmaterialmodel1,</if>
+                <if test="item.fPonpBaseproperty != null">f_ponp_baseproperty,</if>
+                <if test="item.fmaterialtype != null">fmaterialtype,</if>
+                <if test="item.fsupplytype != null">fsupplytype,</if>
+                <if test="item.fuseRate != null">fuse_rate,</if>
+                <if test="item.foperid != null">foperid,</if>
+                <if test="item.fnumerator != null">fnumerator,</if>
+                <if test="item.fdenominator != null">fdenominator,</if>
+                <if test="item.funitid2Fname != null">funitid2_fname,</if>
+                <if test="item.ffixscrapqty != null">ffixscrapqty,</if>
+                <if test="item.fscraprate != null">fscraprate,</if>
+                <if test="item.fmustqty != null">fmustqty,</if>
+                <if test="item.fbasenumerator != null">fbasenumerator,</if>
+                <if test="item.fbasedenominator != null">fbasedenominator,</if>
+                <if test="item.fprocessid != null">fprocessid,</if>
+                <if test="item.fissuetype != null">fissuetype,</if>
+                <if test="item.fbackflushtype != null">fbackflushtype,</if>
+                <if test="item.fstockid != null">fstockid,</if>
+                <if test="item.fpickedqty != null">fpickedqty,</if>
+                <if test="item.fnopickedqty != null">fnopickedqty,</if>
+                <if test="item.finventoryqty != null">finventoryqty,</if>
+                <if test="item.fisskip != null">fisskip,</if>
+                <if test="item.fsupplymode != null">fsupplymode,</if>
+                <if test="item.fgldbqty != null">fgldbqty,</if>
+                <if test="item.fbaseneedqty != null">fbaseneedqty,</if>
+                <if test="item.factualpickqty != null">factualpickqty,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.fbillno != null">#{item.fbillno},</if>
+                <if test="item.fmaterialid2Fnumber != null">#{item.fmaterialid2Fnumber},</if>
+                <if test="item.fmaterialname1 != null">#{item.fmaterialname1},</if>
+                <if test="item.fmaterialmodel1 != null">#{item.fmaterialmodel1},</if>
+                <if test="item.fPonpBaseproperty != null">#{item.fPonpBaseproperty},</if>
+                <if test="item.fmaterialtype != null">#{item.fmaterialtype},</if>
+                <if test="item.fsupplytype != null">#{item.fsupplytype},</if>
+                <if test="item.fuseRate != null">#{item.fuseRate},</if>
+                <if test="item.foperid != null">#{item.foperid},</if>
+                <if test="item.fnumerator != null">#{item.fnumerator},</if>
+                <if test="item.fdenominator != null">#{item.fdenominator},</if>
+                <if test="item.funitid2Fname != null">#{item.funitid2Fname},</if>
+                <if test="item.ffixscrapqty != null">#{item.ffixscrapqty},</if>
+                <if test="item.fscraprate != null">#{item.fscraprate},</if>
+                <if test="item.fmustqty != null">#{item.fmustqty},</if>
+                <if test="item.fbasenumerator != null">#{item.fbasenumerator},</if>
+                <if test="item.fbasedenominator != null">#{item.fbasedenominator},</if>
+                <if test="item.fprocessid != null">#{item.fprocessid},</if>
+                <if test="item.fissuetype != null">#{item.fissuetype},</if>
+                <if test="item.fbackflushtype != null">#{item.fbackflushtype},</if>
+                <if test="item.fstockid != null">#{item.fstockid},</if>
+                <if test="item.fpickedqty != null">#{item.fpickedqty},</if>
+                <if test="item.fnopickedqty != null">#{item.fnopickedqty},</if>
+                <if test="item.finventoryqty != null">#{item.finventoryqty},</if>
+                <if test="item.fisskip != null">#{item.fisskip},</if>
+                <if test="item.fsupplymode != null">#{item.fsupplymode},</if>
+                <if test="item.fgldbqty != null">#{item.fgldbqty},</if>
+                <if test="item.fbaseneedqty != null">#{item.fbaseneedqty},</if>
+                <if test="item.factualpickqty != null">#{item.factualpickqty},</if>
+            </trim>
+        </foreach>
     </insert>
 
     <update id="updateProductionBomsDetails" parameterType="com.zkqy.amichi.domain.ProductionBomsDetails">
-        update {DBNAME}.production_boms_details
+        update fjqydb.production_boms_details
         <trim prefix="SET" suffixOverrides=",">
-            <if test="subitemMaterialCode != null">subitem_material_code = #{subitemMaterialCode},</if>
-            <if test="subitemMaterialName != null">subitem_material_name = #{subitemMaterialName},</if>
-            <if test="subitemDetailModel != null">subitem_detail_model = #{subitemDetailModel},</if>
-            <if test="subitemDetailSpecifications != null">subitem_detail_specifications = #{subitemDetailSpecifications},</if>
-            <if test="workingProcedure != null">working_procedure = #{workingProcedure},</if>
-            <if test="quantityToBeDelivered != null">quantity_to_be_delivered = #{quantityToBeDelivered},</if>
-            <if test="unclaimedQuantity != null">unclaimed_quantity = #{unclaimedQuantity},</if>
-            <if test="remark != null">remark = #{remark},</if>
-            <if test="createById != null">create_by_id = #{createById},</if>
-            <if test="createBy != null">create_by = #{createBy},</if>
-            <if test="createTime != null">create_time = #{createTime},</if>
-            <if test="updateById != null">update_by_id = #{updateById},</if>
-            <if test="updateBy != null">update_by = #{updateBy},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
-            <if test="delFlag != null">del_flag = #{delFlag},</if>
-            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
-            <if test="processKey != null">process_key = #{processKey},</if>
-            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
-            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
-            <if test="productionBomId != null  and productionBomId != ''">production_bom_id=#{productionBomId}</if>
+            <if test="fbillno != null">fbillno = #{fbillno},</if>
+            <if test="fmaterialid2Fnumber != null">fmaterialid2_fnumber = #{fmaterialid2Fnumber},</if>
+            <if test="fmaterialname1 != null">fmaterialname1 = #{fmaterialname1},</if>
+            <if test="fmaterialmodel1 != null">fmaterialmodel1 = #{fmaterialmodel1},</if>
+            <if test="fPonpBaseproperty != null">f_ponp_baseproperty = #{fPonpBaseproperty},</if>
+            <if test="fmaterialtype != null">fmaterialtype = #{fmaterialtype},</if>
+            <if test="fsupplytype != null">fsupplytype = #{fsupplytype},</if>
+            <if test="fuseRate != null">fuse_rate = #{fuseRate},</if>
+            <if test="foperid != null">foperid = #{foperid},</if>
+            <if test="fnumerator != null">fnumerator = #{fnumerator},</if>
+            <if test="fdenominator != null">fdenominator = #{fdenominator},</if>
+            <if test="funitid2Fname != null">funitid2_fname = #{funitid2Fname},</if>
+            <if test="ffixscrapqty != null">ffixscrapqty = #{ffixscrapqty},</if>
+            <if test="fscraprate != null">fscraprate = #{fscraprate},</if>
+            <if test="fmustqty != null">fmustqty = #{fmustqty},</if>
+            <if test="fbasenumerator != null">fbasenumerator = #{fbasenumerator},</if>
+            <if test="fbasedenominator != null">fbasedenominator = #{fbasedenominator},</if>
+            <if test="fprocessid != null">fprocessid = #{fprocessid},</if>
+            <if test="fissuetype != null">fissuetype = #{fissuetype},</if>
+            <if test="fbackflushtype != null">fbackflushtype = #{fbackflushtype},</if>
+            <if test="fstockid != null">fstockid = #{fstockid},</if>
+            <if test="fpickedqty != null">fpickedqty = #{fpickedqty},</if>
+            <if test="fnopickedqty != null">fnopickedqty = #{fnopickedqty},</if>
+            <if test="finventoryqty != null">finventoryqty = #{finventoryqty},</if>
+            <if test="fisskip != null">fisskip = #{fisskip},</if>
+            <if test="fsupplymode != null">fsupplymode = #{fsupplymode},</if>
+            <if test="fgldbqty != null">fgldbqty = #{fgldbqty},</if>
+            <if test="fbaseneedqty != null">fbaseneedqty = #{fbaseneedqty},</if>
+            <if test="factualpickqty != null">factualpickqty = #{factualpickqty},</if>
         </trim>
         where id = #{id}
     </update>
 
     <delete id="deleteProductionBomsDetailsById" parameterType="Long">
-        delete from {DBNAME}.production_boms_details where id = #{id}
+        delete from fjqydb.production_boms_details where id = #{id}
     </delete>
 
     <delete id="deleteProductionBomsDetailsByIds" parameterType="String">
-        delete from {DBNAME}.production_boms_details where id in 
+        delete from fjqydb.production_boms_details where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 143 - 20
zkqy-fujian-amichi/src/main/resources/mapper/ProductionBomsMapper.xml

@@ -3,18 +3,27 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zkqy.amichi.mapper.ProductionBomsMapper">
-    
     <resultMap type="com.zkqy.amichi.domain.ProductionBoms" id="ProductionBomsResult">
         <result property="id"    column="id"    />
         <result property="documentNumber"    column="document_number"    />
-        <result property="demandDocument"    column="demand_document"    />
         <result property="productCode"    column="product_code"    />
         <result property="productName"    column="product_name"    />
         <result property="modelNumber"    column="model_number"    />
         <result property="specification"    column="specification"    />
+        <result property="demandDocument"    column="demand_document"    />
+        <result property="scheduledStartTime"    column="scheduled_start_time"    />
+        <result property="scheduledEndTime"    column="scheduled_end_time"    />
         <result property="productionOrderNumber"    column="production_order_number"    />
+        <result property="productionOrderType"    column="production_order_type"    />
         <result property="productionOrderStatus"    column="production_order_status"    />
+        <result property="productionLineNumber"    column="production_line_number"    />
+        <result property="productionQuantity"    column="production_quantity"    />
+        <result property="productionUnit"    column="production_unit"    />
+        <result property="productionOrganization"    column="production_organization"    />
+        <result property="workshop"    column="workshop"    />
         <result property="documentStatus"    column="document_status"    />
+        <result property="auxiliaryAttribute"    column="auxiliary_attribute"    />
+        <result property="bomVersion"    column="bom_version"    />
         <result property="remark"    column="remark"    />
         <result property="createById"    column="create_by_id"    />
         <result property="createBy"    column="create_by"    />
@@ -30,48 +39,71 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectProductionBomsVo">
-        select id, document_number, demand_document, product_code, product_name, model_number, specification, production_order_number, production_order_status, document_status, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.production_boms
+        select id, document_number, product_code, product_name, model_number, specification, demand_document, scheduled_start_time, scheduled_end_time, production_order_number, production_order_type, production_order_status, production_line_number, production_quantity, production_unit, production_organization, workshop, document_status, auxiliary_attribute, bom_version, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from  fjqydb.production_boms
     </sql>
 
     <select id="selectProductionBomsList" parameterType="com.zkqy.amichi.domain.ProductionBoms" resultMap="ProductionBomsResult">
         <include refid="selectProductionBomsVo"/>
-        <where>  
-            <if test="documentNumber != null  and documentNumber != ''"> and document_number = #{documentNumber}</if>
-            <if test="demandDocument != null  and demandDocument != ''"> and demand_document = #{demandDocument}</if>
-            <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
+        <where>
+            <if test="documentNumber != null  and documentNumber != ''"> and document_number LIKE concat('%', #{documentNumber}, '%')</if>
+
+            <if test="productCode != null  and productCode != ''"> and product_code   LIKE concat('%', #{productCode}, '%')</if>
+            <if test="tabPosition == 1"> and product_code  not  LIKE concat('%','焊', '%')</if>
+            <if test="tabPosition == 2"> and product_code   LIKE concat('%', '焊', '%')</if>
             <if test="productName != null  and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
             <if test="modelNumber != null  and modelNumber != ''"> and model_number = #{modelNumber}</if>
             <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="demandDocument != null  and demandDocument != ''"> and demand_document = #{demandDocument}</if>
+            <if test="scheduledStartTime != null "> and scheduled_start_time = #{scheduledStartTime}</if>
+            <if test="scheduledEndTime != null "> and scheduled_end_time = #{scheduledEndTime}</if>
             <if test="productionOrderNumber != null  and productionOrderNumber != ''"> and production_order_number = #{productionOrderNumber}</if>
+            <if test="productionOrderType != null  and productionOrderType != ''"> and production_order_type = #{productionOrderType}</if>
             <if test="productionOrderStatus != null  and productionOrderStatus != ''"> and production_order_status = #{productionOrderStatus}</if>
+            <if test="productionLineNumber != null  and productionLineNumber != ''"> and production_line_number = #{productionLineNumber}</if>
+            <if test="productionQuantity != null  and productionQuantity != ''"> and production_quantity = #{productionQuantity}</if>
+            <if test="productionUnit != null  and productionUnit != ''"> and production_unit = #{productionUnit}</if>
+            <if test="productionOrganization != null  and productionOrganization != ''"> and production_organization = #{productionOrganization}</if>
+            <if test="workshop != null  and workshop != ''"> and workshop = #{workshop}</if>
             <if test="documentStatus != null  and documentStatus != ''"> and document_status = #{documentStatus}</if>
+            <if test="auxiliaryAttribute != null  and auxiliaryAttribute != ''"> and auxiliary_attribute = #{auxiliaryAttribute}</if>
+            <if test="bomVersion != null  and bomVersion != ''"> and bom_version = #{bomVersion}</if>
             <if test="createById != null "> and create_by_id = #{createById}</if>
             <if test="updateById != null "> and update_by_id = #{updateById}</if>
             <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
             <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
             <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
             <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
-            and del_flag=0
         </where>
+        GROUP BY document_number
     </select>
-    
+
     <select id="selectProductionBomsById" parameterType="Long" resultMap="ProductionBomsResult">
         <include refid="selectProductionBomsVo"/>
-        where id = #{id} and del_flag=0
+        where id = #{id}
     </select>
-        
+
     <insert id="insertProductionBoms" parameterType="com.zkqy.amichi.domain.ProductionBoms" useGeneratedKeys="true" keyProperty="id">
-        insert into {DBNAME}.production_boms
+        insert into fjqydb.production_boms
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="documentNumber != null">document_number,</if>
-            <if test="demandDocument != null">demand_document,</if>
             <if test="productCode != null">product_code,</if>
             <if test="productName != null">product_name,</if>
             <if test="modelNumber != null">model_number,</if>
             <if test="specification != null">specification,</if>
+            <if test="demandDocument != null">demand_document,</if>
+            <if test="scheduledStartTime != null">scheduled_start_time,</if>
+            <if test="scheduledEndTime != null">scheduled_end_time,</if>
             <if test="productionOrderNumber != null">production_order_number,</if>
+            <if test="productionOrderType != null">production_order_type,</if>
             <if test="productionOrderStatus != null">production_order_status,</if>
+            <if test="productionLineNumber != null">production_line_number,</if>
+            <if test="productionQuantity != null">production_quantity,</if>
+            <if test="productionUnit != null">production_unit,</if>
+            <if test="productionOrganization != null">production_organization,</if>
+            <if test="workshop != null">workshop,</if>
             <if test="documentStatus != null">document_status,</if>
+            <if test="auxiliaryAttribute != null">auxiliary_attribute,</if>
+            <if test="bomVersion != null">bom_version,</if>
             <if test="remark != null">remark,</if>
             <if test="createById != null">create_by_id,</if>
             <if test="createBy != null">create_by,</if>
@@ -84,17 +116,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="processKey != null">process_key,</if>
             <if test="taskProcessKey != null">task_process_key,</if>
             <if test="taskNodeKey != null">task_node_key,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="documentNumber != null">#{documentNumber},</if>
-            <if test="demandDocument != null">#{demandDocument},</if>
             <if test="productCode != null">#{productCode},</if>
             <if test="productName != null">#{productName},</if>
             <if test="modelNumber != null">#{modelNumber},</if>
             <if test="specification != null">#{specification},</if>
+            <if test="demandDocument != null">#{demandDocument},</if>
+            <if test="scheduledStartTime != null">#{scheduledStartTime},</if>
+            <if test="scheduledEndTime != null">#{scheduledEndTime},</if>
             <if test="productionOrderNumber != null">#{productionOrderNumber},</if>
+            <if test="productionOrderType != null">#{productionOrderType},</if>
             <if test="productionOrderStatus != null">#{productionOrderStatus},</if>
+            <if test="productionLineNumber != null">#{productionLineNumber},</if>
+            <if test="productionQuantity != null">#{productionQuantity},</if>
+            <if test="productionUnit != null">#{productionUnit},</if>
+            <if test="productionOrganization != null">#{productionOrganization},</if>
+            <if test="workshop != null">#{workshop},</if>
             <if test="documentStatus != null">#{documentStatus},</if>
+            <if test="auxiliaryAttribute != null">#{auxiliaryAttribute},</if>
+            <if test="bomVersion != null">#{bomVersion},</if>
             <if test="remark != null">#{remark},</if>
             <if test="createById != null">#{createById},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -107,21 +149,102 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="processKey != null">#{processKey},</if>
             <if test="taskProcessKey != null">#{taskProcessKey},</if>
             <if test="taskNodeKey != null">#{taskNodeKey},</if>
-         </trim>
+        </trim>
+    </insert>
+    <insert id="insertBomsBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        <foreach collection="list" item="item" separator=";">
+            insert into fjqydb.production_boms
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.documentNumber != null">document_number,</if>
+                <if test="item.productCode != null">product_code,</if>
+                <if test="item.productName != null">product_name,</if>
+                <if test="item.modelNumber != null">model_number,</if>
+                <if test="item.specification != null">specification,</if>
+                <if test="item.demandDocument != null">demand_document,</if>
+                <if test="item.scheduledStartTime != null">scheduled_start_time,</if>
+                <if test="item.scheduledEndTime != null">scheduled_end_time,</if>
+                <if test="item.productionOrderNumber != null">production_order_number,</if>
+                <if test="item.productionOrderType != null">production_order_type,</if>
+                <if test="item.productionOrderStatus != null">production_order_status,</if>
+                <if test="item.productionLineNumber != null">production_line_number,</if>
+                <if test="item.productionQuantity != null">production_quantity,</if>
+                <if test="item.productionUnit != null">production_unit,</if>
+                <if test="item.productionOrganization != null">production_organization,</if>
+                <if test="item.workshop != null">workshop,</if>
+                <if test="item.documentStatus != null">document_status,</if>
+                <if test="item.auxiliaryAttribute != null">auxiliary_attribute,</if>
+                <if test="item.bomVersion != null">bom_version,</if>
+                <if test="item.remark != null">remark,</if>
+                <if test="item.createById != null">create_by_id,</if>
+                <if test="item.createBy != null">create_by,</if>
+                <if test="item.createTime != null">create_time,</if>
+                <if test="item.updateById != null">update_by_id,</if>
+                <if test="item.updateBy != null">update_by,</if>
+                <if test="item.updateTime != null">update_time,</if>
+                <if test="item.delFlag != null">del_flag,</if>
+                <if test="item.dataApprovalStatus != null">data_approval_status,</if>
+                <if test="item.processKey != null">process_key,</if>
+                <if test="item.taskProcessKey != null">task_process_key,</if>
+                <if test="item.taskNodeKey != null">task_node_key,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.documentNumber != null">#{item.documentNumber},</if>
+                <if test="item.productCode != null">#{item.productCode},</if>
+                <if test="item.productName != null">#{item.productName},</if>
+                <if test="item.modelNumber != null">#{item.modelNumber},</if>
+                <if test="item.specification != null">#{item.specification},</if>
+                <if test="item.demandDocument != null">#{item.demandDocument},</if>
+                <if test="item.scheduledStartTime != null">#{item.scheduledStartTime},</if>
+                <if test="item.scheduledEndTime != null">#{item.scheduledEndTime},</if>
+                <if test="item.productionOrderNumber != null">#{item.productionOrderNumber},</if>
+                <if test="item.productionOrderType != null">#{item.productionOrderType},</if>
+                <if test="item.productionOrderStatus != null">#{item.productionOrderStatus},</if>
+                <if test="item.productionLineNumber != null">#{item.productionLineNumber},</if>
+                <if test="item.productionQuantity != null">#{item.productionQuantity},</if>
+                <if test="item.productionUnit != null">#{item.productionUnit},</if>
+                <if test="item.productionOrganization != null">#{item.productionOrganization},</if>
+                <if test="item.workshop != null">#{item.workshop},</if>
+                <if test="item.documentStatus != null">#{item.documentStatus},</if>
+                <if test="item.auxiliaryAttribute != null">#{item.auxiliaryAttribute},</if>
+                <if test="item.bomVersion != null">#{item.bomVersion},</if>
+                <if test="item.remark != null">#{item.remark},</if>
+                <if test="item.createById != null">#{item.createById},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+                <if test="item.createTime != null">#{item.createTime},</if>
+                <if test="item.updateById != null">#{item.updateById},</if>
+                <if test="item.updateBy != null">#{item.updateBy},</if>
+                <if test="item.updateTime != null">#{item.updateTime},</if>
+                <if test="item.delFlag != null">#{item.delFlag},</if>
+                <if test="item.dataApprovalStatus != null">#{item.dataApprovalStatus},</if>
+                <if test="item.processKey != null">#{item.processKey},</if>
+                <if test="item.taskProcessKey != null">#{item.taskProcessKey},</if>
+                <if test="item.taskNodeKey != null">#{item.taskNodeKey},</if>
+            </trim>
+        </foreach>
     </insert>
 
     <update id="updateProductionBoms" parameterType="com.zkqy.amichi.domain.ProductionBoms">
-        update {DBNAME}.production_boms
+        update fjqydb.production_boms
         <trim prefix="SET" suffixOverrides=",">
             <if test="documentNumber != null">document_number = #{documentNumber},</if>
-            <if test="demandDocument != null">demand_document = #{demandDocument},</if>
             <if test="productCode != null">product_code = #{productCode},</if>
             <if test="productName != null">product_name = #{productName},</if>
             <if test="modelNumber != null">model_number = #{modelNumber},</if>
             <if test="specification != null">specification = #{specification},</if>
+            <if test="demandDocument != null">demand_document = #{demandDocument},</if>
+            <if test="scheduledStartTime != null">scheduled_start_time = #{scheduledStartTime},</if>
+            <if test="scheduledEndTime != null">scheduled_end_time = #{scheduledEndTime},</if>
             <if test="productionOrderNumber != null">production_order_number = #{productionOrderNumber},</if>
+            <if test="productionOrderType != null">production_order_type = #{productionOrderType},</if>
             <if test="productionOrderStatus != null">production_order_status = #{productionOrderStatus},</if>
+            <if test="productionLineNumber != null">production_line_number = #{productionLineNumber},</if>
+            <if test="productionQuantity != null">production_quantity = #{productionQuantity},</if>
+            <if test="productionUnit != null">production_unit = #{productionUnit},</if>
+            <if test="productionOrganization != null">production_organization = #{productionOrganization},</if>
+            <if test="workshop != null">workshop = #{workshop},</if>
             <if test="documentStatus != null">document_status = #{documentStatus},</if>
+            <if test="auxiliaryAttribute != null">auxiliary_attribute = #{auxiliaryAttribute},</if>
+            <if test="bomVersion != null">bom_version = #{bomVersion},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createById != null">create_by_id = #{createById},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
@@ -139,11 +262,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteProductionBomsById" parameterType="Long">
-        delete from {DBNAME}.production_boms where id = #{id}
+        delete from fjqydb.fqqy.production_boms where id = #{id}
     </delete>
 
     <delete id="deleteProductionBomsByIds" parameterType="String">
-        delete from {DBNAME}.production_boms where id in 
+        delete from  fjqydb.roduction_boms where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 1 - 1
zkqy-fujian-amichi/src/main/resources/mapper/ProductionCardFlowMapper.xml

@@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
         
     <insert id="insertProductionCardFlow" parameterType="com.zkqy.amichi.domain.ProductionCardFlow" useGeneratedKeys="true" keyProperty="id">
-        insert into {DBNAME}.production_card_flow
+        insert into fjqydb.production_card_flow
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="productionOrderListId != null">production_order_list_id,</if>
             <if test="serialNumber != null">serial_number,</if>

+ 12 - 6
zkqy-fujian-amichi/src/main/resources/mapper/ProductionPlanningManagementMapper.xml

@@ -33,7 +33,7 @@
         <result property="approvedByDepartment"    column="approved_by_department"    />
         <result property="schedulingState"    column="scheduling_state"    />
         <result property="planType"    column="plan_type"    />
-
+        <result property="specialRequirements"    column="special_requirements"    />
     </resultMap>
 
 
@@ -66,10 +66,12 @@
         <result property="approvedByDepartment"    column="approved_by_department"    />
         <result property="schedulingState"    column="scheduling_state"    />
         <result property="planType"    column="plan_type"    />
+        <result property="planType"    column="plan_type"    />
+
     </resultMap>
 
     <sql id="selectProductionPlanningManagementVo">
-        select id, plan_number, plan_name, order_number, quantity, completion_time, task_status, task_id, sparea, spareb, sparec, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key, contract_number, documenter, approved_by_department,scheduling_state,plan_type from {DBNAME}.production_planning_management
+        select id, plan_number, plan_name, order_number, quantity, completion_time, task_status, task_id, sparea, spareb, sparec, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key, contract_number, documenter, approved_by_department,scheduling_state,plan_type,special_requirements from {DBNAME}.production_planning_management
     </sql>
 
     <select id="selectProductionPlanningManagementList" parameterType="com.zkqy.amichi.domain.ProductionPlanningManagement" resultMap="ProductionPlanningManagementResult">
@@ -164,6 +166,7 @@
         ppm.approved_by_department,
         ppm.scheduling_state,
         ppm.plan_type,
+        ppm.special_requirements,
         pt.create_time as ptcreate_time
         FROM
         {DBNAME}.production_planning_management as ppm
@@ -203,7 +206,8 @@
             ppm.documenter,
             ppm.approved_by_department,
             ppm.scheduling_state,
-            ppm.plan_type
+            ppm.plan_type,
+            ppm.special_requirements
         FROM
             fjqydb.production_planning_management as ppm
         <where>
@@ -213,7 +217,7 @@
     </select>
 
     <insert id="insertProductionPlanningManagement" parameterType="com.zkqy.amichi.domain.ProductionPlanningManagement" useGeneratedKeys="true" keyProperty="id">
-        insert into {DBNAME}.production_planning_management
+        insert into fjqydb.production_planning_management
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="planNumber != null">plan_number,</if>
             <if test="planName != null">plan_name,</if>
@@ -241,7 +245,8 @@
             <if test="documenter != null">documenter,</if>
             <if test="approvedByDepartment != null">approved_by_department,</if>
             <if test="schedulingState != null  and schedulingState != ''">scheduling_state,</if>
-            <if test="planType!=null and planType != ''">plan_type</if>
+            <if test="planType!=null and planType != ''">plan_type,</if>
+            <if test="specialRequirements!=null and specialRequirements != ''">special_requirements</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="planNumber != null">#{planNumber},</if>
@@ -270,7 +275,8 @@
             <if test="documenter != null">#{documenter},</if>
             <if test="approvedByDepartment != null">#{approvedByDepartment},</if>
             <if test="schedulingState != null  and schedulingState != ''">#{schedulingState},</if>
-            <if test="planType!=null and planType != ''">#{planType}</if>
+            <if test="planType!=null and planType != ''">#{planType},</if>
+            <if test="specialRequirements!=null and specialRequirements != ''">#{specialRequirements}</if>
         </trim>
     </insert>
 

+ 71 - 0
zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml

@@ -0,0 +1,71 @@
+<?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.RingScanInformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.RingScanInformation" id="RingScanInformationResult">
+        <result property="id"    column="id"    />
+        <result property="deviceNumber"    column="device_number"    />
+        <result property="deviceName"    column="device_name"    />
+        <result property="scanningTime"    column="scanning_time"    />
+        <result property="contentInformation"    column="content_information"    />
+    </resultMap>
+
+    <sql id="selectRingScanInformationVo">
+        select id, device_number, device_name, scanning_time, content_information from fjqydb.ring_scan_information
+    </sql>
+
+    <select id="selectRingScanInformationList" parameterType="com.zkqy.amichi.domain.RingScanInformation" resultMap="RingScanInformationResult">
+        <include refid="selectRingScanInformationVo"/>
+        <where>  
+            <if test="deviceNumber != null  and deviceNumber != ''"> and device_number = #{deviceNumber}</if>
+            <if test="deviceName != null  and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if>
+            <if test="scanningTime != null "> and scanning_time = #{scanningTime}</if>
+            <if test="contentInformation != null  and contentInformation != ''"> and content_information = #{contentInformation}</if>
+        </where>
+    </select>
+    
+    <select id="selectRingScanInformationById" parameterType="Long" resultMap="RingScanInformationResult">
+        <include refid="selectRingScanInformationVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertRingScanInformation" parameterType="com.zkqy.amichi.domain.RingScanInformation" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.ring_scan_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="deviceNumber != null">device_number,</if>
+            <if test="deviceName != null">device_name,</if>
+            <if test="scanningTime != null">scanning_time,</if>
+            <if test="contentInformation != null">content_information,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="deviceNumber != null">#{deviceNumber},</if>
+            <if test="deviceName != null">#{deviceName},</if>
+            <if test="scanningTime != null">#{scanningTime},</if>
+            <if test="contentInformation != null">#{contentInformation},</if>
+         </trim>
+    </insert>
+
+    <update id="updateRingScanInformation" parameterType="com.zkqy.amichi.domain.RingScanInformation">
+        update fjqydb.ring_scan_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="deviceNumber != null">device_number = #{deviceNumber},</if>
+            <if test="deviceName != null">device_name = #{deviceName},</if>
+            <if test="scanningTime != null">scanning_time = #{scanningTime},</if>
+            <if test="contentInformation != null">content_information = #{contentInformation},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteRingScanInformationById" parameterType="Long">
+        delete from fjqydb.ring_scan_information where id = #{id}
+    </delete>
+
+    <delete id="deleteRingScanInformationByIds" parameterType="String">
+        delete from fjqydb.ring_scan_information where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 115 - 0
zkqy-fujian-amichi/src/main/resources/mapper/TerminalInformationMapper.xml

@@ -0,0 +1,115 @@
+<?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.TerminalInformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.TerminalInformation" id="TerminalInformationResult">
+        <result property="id"    column="id"    />
+        <result property="terminalId"    column="terminal_id"    />
+        <result property="stationName"    column="station_name"    />
+        <result property="deviceId"    column="device_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+    </resultMap>
+
+    <sql id="selectTerminalInformationVo">
+        select id, terminal_id, station_name, device_id, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key from fjqydb.terminal_information
+    </sql>
+
+    <select id="selectTerminalInformationList" parameterType="com.zkqy.amichi.domain.TerminalInformation" resultMap="TerminalInformationResult">
+        <include refid="selectTerminalInformationVo"/>
+        <where>  
+            <if test="terminalId != null  and terminalId != ''"> and terminal_id = #{terminalId}</if>
+            <if test="stationName != null  and stationName != ''"> and station_name like concat('%', #{stationName}, '%')</if>
+            <if test="deviceId != null  and deviceId != ''"> and device_id = #{deviceId}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectTerminalInformationById" parameterType="Long" resultMap="TerminalInformationResult">
+        <include refid="selectTerminalInformationVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTerminalInformation" parameterType="com.zkqy.amichi.domain.TerminalInformation" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.terminal_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="terminalId != null">terminal_id,</if>
+            <if test="stationName != null">station_name,</if>
+            <if test="deviceId != null">device_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="terminalId != null">#{terminalId},</if>
+            <if test="stationName != null">#{stationName},</if>
+            <if test="deviceId != null">#{deviceId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTerminalInformation" parameterType="com.zkqy.amichi.domain.TerminalInformation">
+        update fjqydb.terminal_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="terminalId != null">terminal_id = #{terminalId},</if>
+            <if test="stationName != null">station_name = #{stationName},</if>
+            <if test="deviceId != null">device_id = #{deviceId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTerminalInformationById" parameterType="Long">
+        delete from fjqydb.terminal_information where id = #{id}
+    </delete>
+
+    <delete id="deleteTerminalInformationByIds" parameterType="String">
+        delete from fjqydb.terminal_information where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 19 - 3
zkqy-ui/src/api/amichi/BOMList/index.js

@@ -4,12 +4,17 @@ import request from '@/utils/request'
 // 树形数据
 export function treeList(query) {
   return request({
-    url: '/semiFinished/list/tree/list',
+    // url: '/semiFinished/list/tree/list',
+    url: '/bomGroup/group/listTree',
     method: 'get',
     params: query
   })
 }
 
+
+
+
+
 //  树形数据 仅包括菜单数据
 export function excludeTreeList(query) {
   return request({
@@ -22,10 +27,21 @@ export function excludeTreeList(query) {
 
 
 // 物料表格数据
-
 export function bomList(query) {
   return request({
-    url: '/semiFinished/list/list',
+    // url: '/semiFinished/list/list',
+    url: '/bomVersionList/list/list',
+    method: 'get',
+    params: query
+  })
+}
+
+//物料详细信息列表
+// 物料表格数据
+export function bomVersiondetail(query) {
+  return request({
+    // url: '/semiFinished/list/list',
+    url: '/bomVersiondetail/detail/list',
     method: 'get',
     params: query
   })

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询金蝶-生产订单信息列表
+export function listOrder(query) {
+  return request({
+    url: '/jdProductionOrder/order/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询金蝶-生产订单信息详细
+export function getOrder(id) {
+  return request({
+    url: '/jdProductionOrder/order/' + id,
+    method: 'get'
+  })
+}
+
+// 新增金蝶-生产订单信息
+export function addOrder(data) {
+  return request({
+    url: '/jdProductionOrder/order',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改金蝶-生产订单信息
+export function updateOrder(data) {
+  return request({
+    url: '/jdProductionOrder/order',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除金蝶-生产订单信息
+export function delOrder(id) {
+  return request({
+    url: '/jdProductionOrder/order/' + id,
+    method: 'delete'
+  })
+}

+ 1 - 1
zkqy-ui/src/api/amichi/productionBoms/details.js

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 // 查询生产用料清单详细列表
 export function listDetails(query) {
   return request({
-    url: '/amichi/productionBomsDetails/list',
+    url: '/amichi/productionBomsDetails/details/list',
     method: 'get',
     params: query
   })

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询终端信息列表
+export function listTerminalInformation(query) {
+  return request({
+    url: '/amichi/terminalInformation/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询终端信息详细
+export function getTerminalInformation(id) {
+  return request({
+    url: '/amichi/terminalInformation/' + id,
+    method: 'get'
+  })
+}
+
+// 新增终端信息
+export function addTerminalInformation(data) {
+  return request({
+    url: '/amichi/terminalInformation',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改终端信息
+export function updateTerminalInformation(data) {
+  return request({
+    url: '/amichi/terminalInformation',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除终端信息
+export function delTerminalInformation(id) {
+  return request({
+    url: '/amichi/terminalInformation/' + id,
+    method: 'delete'
+  })
+}

+ 2 - 0
zkqy-ui/src/store/modules/permission.js

@@ -128,6 +128,8 @@ export const loadView = (view) => {
   } else {
     // 使用 import 实现生产环境的路由懒加载
     return () => import(`@/views/${view}`)
+    // return (resolve) => require([`@/views/${view}`], resolve)
+
   }
 }
 

+ 4 - 4
zkqy-ui/src/utils/print/LaboratoryLabelsPrint100100.js

@@ -16,7 +16,7 @@ function qrCodeList2(data, domId) {
             <div class="tb" style="width: 85%;height:100%;justify-content: start;text-align: center;">
                 <table border="1px solid black"  style="border-collapse: collapse;margin-left: 0px;width: 100%;height: 100%;border: 1px solid black;color:#000000">
                   <tr>
-                            <td style=" font-size: 10px;text-align: center;width: 80px;">委托单号:</td>
+                            <td style=" font-size: 10px;text-align: center;width: 56px;">委托单号:</td>
                             <td style=" font-size: 10px;">${data.orderNumber}</td>
                             <td style=" font-size: 10px;width: 50px;text-align: center;">样品PN:</td>
                             <td style=" font-size: 10px;">${data.yppn}</td>
@@ -24,7 +24,7 @@ function qrCodeList2(data, domId) {
                         <tr>
                             <td style=" font-size: 10px;text-align: center;">物料说明:</td>
                             <td style=" font-size: 10px;">${data.wlsm}</td>
-                            <td style=" font-size: 10px;text-align: center;">实验室:</td>
+                            <td style=" font-size: 8px;text-align: center;">实验室:</td>
                             <td style=" font-size: 10px;">${data.sys}</td>
                         </tr>
                         <tr>
@@ -40,7 +40,7 @@ function qrCodeList2(data, domId) {
                             <td style=" font-size: 10px;">${data.sqr}</td>
                         </tr>
                         <tr>
-                            <td style=" font-size: 10px;text-align: center;">工段信息:</td>
+                            <td style=" font-size: 8px;text-align: center;">工段信息:</td>
                             <td style=" font-size: 10px;">${data.gdxx}</td>
                             <td style=" font-size: 10px;text-align: center;">送样人:</td>
                             <td style=" font-size: 10px;">${data.syr}</td>
@@ -77,7 +77,7 @@ function qrCodeList2(data, domId) {
             <div style="width: 23.5%;height: 100%;margin-left:0px;">
             </div>
             <div style="width: 100%;height: 100%;margin-left:0px;">
-                <img id="barcode2" style="width: 100%;height: 95%;margin-right:0px;box-sizing: border-box;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAAAoCAYAAAC/6WUhAAAAAXNSR0IArs4c6QAAAxRJREFUeF7tncFygzAMROH/P5pMA7RItdi1gUwOr5dOMkE4slbSrm0yT9O0TIe/ZVlfzvP8/r+/3j9SvX+00bpe2cvX76/vvn+v3X3c1XV3f+/s/6vjzder79M7T9X8qPsqf1bjzONT3yfHbZ6vKt6z3R80ABQjMaiJrRLJaOCpAPg2u1VAVsBX/gQoW8VSSO/NpG5m77WrAta9r8q8KgO7lTWP91N2AUoR2Hni7g6Y3oB2799rF6CsHlMABCgAJWDw6QQBR2kD0+US1fwooCvuA0fZYOD2/AAl1m7VUsJRUqVxWx/l2EqVqMhy/rwi1bReq5p51Q/qesWNquvdFs6tvJW9anyVXSoKFSUAx62sAIV1lGbgqAyoKplbSd1MORrQSpwYtetWAtUxuHZcP1FRBls/lQlVQMNR4ChvD7AyH9Zf/8miAAWgAJSTLTu0XlEEUJUZMl/sAcu9Z6VLq9ZG9bBX95qpCVbjo6JQUagoVBS5GdZNZFQUKkqOlVN5dVRFekqdesquq1YpoLl2UL2SJ93NgG7rR+vFguMxVtytMSw4bl5zMz8cBY4CR4GjwFHSgvtvK8jBrdUVVJQ+P6gWFjIPmYfMHzzgyulqm3vFMSvAQeYh86HCqcytAlVldlcscQNdHeFF9UoeYMHRe0hHFThPybhP2XVlXYACUJpcx+U+n8r8AKWt2nHCsVAxRlsO5GHkYeRh5GFb/VPcSVXI6nq3hYPMQ+Yh842nvrgr6DxcYgMQu4evrXfAUeAowQOKnMFRVneN+oHWizPzTcCpnjr31u5JUeTheKIUjiIe+p0DRmWsUfWp165qVfK4r64fuST122RnN8BZR2EdhXUUg4QDFIACUADKHwquqk7u3qTeFsltgXrt0npFlU1VBPZ63STPAhQv8BRA4ShxL50SW9SmTqWScsJRJAAVsG4lcxMEZL6dSFhw3NQwVK/VAwAFoIRAqOREtwdGHj7/jc3Kj6pCjrZ0yMP8kFCIuVGA0np5T5p0AedWXpWQ3ZYOjgJHCYmAitIWCQAKQAEojYeL5Bb1BTX80LW9y9mSAAAAAElFTkSuQmCC">
+                <img id="barcode2" style="width: 100%;height: 50%;margin-right:0px;box-sizing: border-box;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAAAoCAYAAAC/6WUhAAAAAXNSR0IArs4c6QAAAxRJREFUeF7tncFygzAMROH/P5pMA7RItdi1gUwOr5dOMkE4slbSrm0yT9O0TIe/ZVlfzvP8/r+/3j9SvX+00bpe2cvX76/vvn+v3X3c1XV3f+/s/6vjzder79M7T9X8qPsqf1bjzONT3yfHbZ6vKt6z3R80ABQjMaiJrRLJaOCpAPg2u1VAVsBX/gQoW8VSSO/NpG5m77WrAta9r8q8KgO7lTWP91N2AUoR2Hni7g6Y3oB2799rF6CsHlMABCgAJWDw6QQBR2kD0+US1fwooCvuA0fZYOD2/AAl1m7VUsJRUqVxWx/l2EqVqMhy/rwi1bReq5p51Q/qesWNquvdFs6tvJW9anyVXSoKFSUAx62sAIV1lGbgqAyoKplbSd1MORrQSpwYtetWAtUxuHZcP1FRBls/lQlVQMNR4ChvD7AyH9Zf/8miAAWgAJSTLTu0XlEEUJUZMl/sAcu9Z6VLq9ZG9bBX95qpCVbjo6JQUagoVBS5GdZNZFQUKkqOlVN5dVRFekqdesquq1YpoLl2UL2SJ93NgG7rR+vFguMxVtytMSw4bl5zMz8cBY4CR4GjwFHSgvtvK8jBrdUVVJQ+P6gWFjIPmYfMHzzgyulqm3vFMSvAQeYh86HCqcytAlVldlcscQNdHeFF9UoeYMHRe0hHFThPybhP2XVlXYACUJpcx+U+n8r8AKWt2nHCsVAxRlsO5GHkYeRh5GFb/VPcSVXI6nq3hYPMQ+Yh842nvrgr6DxcYgMQu4evrXfAUeAowQOKnMFRVneN+oHWizPzTcCpnjr31u5JUeTheKIUjiIe+p0DRmWsUfWp165qVfK4r64fuST122RnN8BZR2EdhXUUg4QDFIACUADKHwquqk7u3qTeFsltgXrt0npFlU1VBPZ63STPAhQv8BRA4ShxL50SW9SmTqWScsJRJAAVsG4lcxMEZL6dSFhw3NQwVK/VAwAFoIRAqOREtwdGHj7/jc3Kj6pCjrZ0yMP8kFCIuVGA0np5T5p0AedWXpWQ3ZYOjgJHCYmAitIWCQAKQAEojYeL5Bb1BTX80LW9y9mSAAAAAElFTkSuQmCC">
             </div>
         </div>
     </div>`;

+ 78 - 0
zkqy-ui/src/views/amichi/BOMList/components/operateTable.vue

@@ -0,0 +1,78 @@
+<template>
+  <div style="width: 100%;">
+    <selsetHeader :options="optionsValue" @change="cascaderChangeFun"></selsetHeader>
+    <el-table class="sysDictInfoTable" :data="data" style="width: 100%;margin-top: 20px" row-key="id" lazy
+      ref="tableTree"  :load="load" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+      <el-table-column :prop="options[0].value"  :label="options[0].label"
+        align="center" width="180">
+      </el-table-column>
+      <el-table-column v-for="(item, index) in optionsData" :key="index" :prop="item.value" :label="item.label"
+        align="center">
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+import selsetHeader from './selsetHeader.vue'
+export default {
+  name: 'operateTable',
+  components: { selsetHeader },
+  props: {
+    options: {
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+    data: {
+      type: Array,
+      default: () => {
+        return [];
+      }
+    }
+  },
+  data() {
+    return {
+      optionsValue: [],
+      optionsData: [],
+      loading: false
+    }
+  },
+  watch: {
+    options() {
+      this.setData();
+    }
+  },
+  mounted() {
+    this.setData();
+  },
+  methods: {
+    cascaderChangeFun(e) {
+      this.optionsData = e
+      this.$nextTick(() => {
+        this.$refs['tableTree'].doLayout();
+      });
+    },
+    setData() {
+      this.optionsValue = this.options.slice(1, this.options.length - 1)
+    },
+    load() {
+      this.$emit('load')
+    }
+  }
+}
+</script>
+
+<style scoped lang='scss'>
+// el-table表格对齐
+.sysDictInfoTable ::v-deep .el-table__row:not([class*="el-table__row--level-"]) {
+  td:first-child {
+    //padding-left: 23px !important; //一级数据无Child缩进
+  }
+}
+
+.sysDictInfoTable ::v-deep .el-table__placeholder {
+  margin-left: 3px; //子节点无Child缩进
+}
+</style>

+ 201 - 0
zkqy-ui/src/views/amichi/BOMList/components/selsetHeader.vue

@@ -0,0 +1,201 @@
+<!-- 参考:https://blog.csdn.net/weixin_44384273/article/details/132826286 -->
+
+<template>
+  <el-cascader ref="cascaderEle" popper-class="gy-cascader" :options="optionList" :props="config"
+    :filterable="filterable" :size="size" v-model="choiceEle" @change="selectChange" clearable>
+  </el-cascader>
+</template>
+
+<script>
+/**
+ * options [{ value: "", label: "", childList: []}]
+ * checkStrictly 设置父子节点取消选中关联
+ * 获取选中结果 change事件
+ * all 是全部
+ * size 大小
+ * filterable 是否支持筛选
+  */
+export default {
+  name: 'selsetHeader',
+  props: {
+    options: {
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    width: {
+      type: Number,
+      default: 500
+    },
+    checkStrictly: {
+      type: Boolean,
+      default: false
+    },
+    filterable: {
+      type: Boolean,
+      default: true
+    },
+    size: {
+      type: String,
+      default: "mini"
+    },
+    tLength:{
+      type:String,
+      default:"8"
+    }
+
+  },
+  data() {
+    return {
+      optionList: [],
+      lastSelectedList: [],
+      choiceEle: [],
+      allLength: 0,
+      allOptions: [{ value: "all", label: "全部", childList: null }],
+      config: {
+        multiple: true,
+        checkStrictly: true
+      }
+    }
+  },
+  // watch: {
+  //   options() {
+  //     this.setData();
+  //   }
+  // },
+  mounted() {
+    this.setData();
+    this.config.checkStrictly = this.checkStrictly;
+  },
+  methods: {
+    setData() {
+      this.optionList = [];
+      this.optionList = this.allOptions.concat(this.options);
+      this.loopSelectData(this.optionList.slice(1, this.tLength));
+      // 记录下全部选中时的个数
+      this.allLength = this.optionList.length
+      this.lastSelectedList = [...this.optionList];
+      this.sendInfo();
+    },
+    selectChange(val) {
+      console.log(val)
+      let lastHasAll = this.lastSelectedList.find(arr => {
+        return arr[0] === 'all';
+      });
+      let nowHasAll = val.find(arr => {
+        return arr[0] === 'all';
+      });
+      if (lastHasAll && !nowHasAll) {
+        // 点击取消了 全选
+        // this.clearCascader();
+        this.choiceEle = [];
+        this.lastSelectedList = [];
+        this.$nextTick(() => {
+          this.sendInfo();
+        });
+        return;
+      }
+      if (!lastHasAll && nowHasAll) {
+        this.choiceEle = [];
+        // 点击了 全选
+        this.loopSelectData(this.optionList);
+        this.lastSelectedList = [...this.choiceEle];
+        this.$nextTick(() => {
+          this.sendInfo();
+        });
+        return;
+      }
+      // 当点选了除全部按钮外的所有 选中全部按钮
+      if (!nowHasAll && val.length === this.allLength - 1) {
+        console.log('all===')
+        this.choiceEle = [['all']].concat(this.choiceEle);
+        val = [['all']].concat(val);
+      }
+      // 当全部选项都选中 这时取消了除全部按钮外的一个 去掉选中全部按钮
+      if (nowHasAll && val.length < this.allLength) {
+        console.log('all===111')
+
+        val = val.filter(arr => {
+          return arr[0] !== 'all';
+        });
+        console.log('val', val)
+        this.$nextTick(() => {
+          this.choiceEle = [...val];
+        });
+        console.log('this.choiceEle', this.choiceEle)
+
+      }
+      this.sendInfo();
+      this.lastSelectedList = [...val];
+    },
+    loopSelectData(list, parentNode = []) {
+      list.length > 0 &&
+        list.forEach((e) => {
+          console.log('ee==ee', e)
+          let pNode = [...parentNode]; // 注意这里必须是深拷贝,否则会由于引用类型赋值的是地址(指针),导致parentNode在pNode更新时,同时被更新
+          if (e.children && e.children.length > 0) {
+            pNode.push(e.value);
+            // 当没有关联时 需要每一级都存下
+            if (this.checkStrictly) {
+              this.choiceEle.push([...pNode]);
+            }
+            this.loopSelectData(e.children, pNode);
+          } else {
+            if (parentNode.length > 0) {
+              this.choiceEle.push([...parentNode, e.value]);
+            } else {
+              this.choiceEle.push([e.value]);
+            }
+          }
+        });
+    },
+    sendInfo() {
+      console.log(this.choiceEle, this.options)
+      const matchedObjects = this.options.filter(obj =>
+      this.choiceEle.some(innerArray => innerArray.includes(obj.value))
+      );
+      this.$emit('change', matchedObjects);
+    }
+  }
+};
+</script>
+
+<style scoped>
+.el-cascader {
+  width: 100%;
+}
+
+.gy-cascader {
+  max-width: 500px;
+  background: red;
+  overflow-x: auto;
+
+  &::-webkit-scrollbar-track-piece {
+    background-color: #f8f8f800;
+  }
+
+  &::-webkit-scrollbar {
+    transition: all 2s;
+    height: 6px;
+  }
+
+  &::-webkit-scrollbar-thumb {
+    background-color: #ebeaef;
+    border-radius: 10px;
+  }
+
+  &::-webkit-scrollbar-thumb:hover {
+    background-color: #bbb;
+  }
+
+  &::-webkit-scrollbar-track {
+    background: #ffffff;
+    border-radius: 10px;
+  }
+
+  &::-webkit-scrollbar-corner {
+    background-color: rgba(255, 255, 255, 0);
+  }
+}
+</style>

+ 288 - 112
zkqy-ui/src/views/amichi/BOMList/index.vue

@@ -60,7 +60,7 @@
     </div>
     <div class="main-area">
       <el-row :gutter="10">
-        <el-col :span="6">
+        <el-col :span="5">
           <!-- <div class="top-query">
             <el-row>
               <el-form
@@ -93,7 +93,7 @@
               </el-form>
             </el-row>
           </div> -->
-          <div class="left-area">
+          <div class="left-area" style="border-right: 3px solid #a6d5fa;">
             <el-tree
               :data="treeOptions"
               :props="defaultProps"
@@ -101,82 +101,77 @@
               :filter-node-method="filterNode"
               ref="tree"
               node-key="id"
-              default-expand-all
+
               highlight-current
               @node-click="handleNodeClick"
             >
               <span class="custom-tree-node" slot-scope="{ data }">
-                <span>{{ data.materialName }}</span>
-                <span>
-                  <el-button
-                    size="mini"
-                    type="primary"
-                    icon="el-icon-edit"
-                    circle
-                    @click="editHandler(data)"
-                  ></el-button>
-                  <el-button
-                    size="mini"
-                    type="danger"
-                    icon="el-icon-delete"
-                    circle
-                    @click="deleteHandler(data)"
-                  ></el-button>
-                </span>
+                <span v-if="data.fName!='全部'&& data.fName!='半成品'&&data.fName!='成品'">{{ data.fNumber+"("+data.fName+")" }}</span>
+                <span v-if="data.fName=='全部'|| data.fName=='半成品'||data.fName=='成品'">{{ data.fName }}</span>
+<!--                <span>-->
+<!--                  <el-button-->
+<!--                    size="mini"-->
+<!--                    type="primary"-->
+<!--                    icon="el-icon-edit"-->
+<!--                    circle-->
+<!--                    @click="editHandler(data)"-->
+<!--                  ></el-button>-->
+<!--                  <el-button-->
+<!--                    size="mini"-->
+<!--                    type="danger"-->
+<!--                    icon="el-icon-delete"-->
+<!--                    circle-->
+<!--                    @click="deleteHandler(data)"-->
+<!--                  ></el-button>-->
+<!--                </span>-->
               </span>
             </el-tree>
           </div>
         </el-col>
-        <el-col :span="18">
-          <div class="right_btn">
-            <el-button
-              :disabled="!currentItem.id || currentItem.isOnlyMenu == '0'"
-              icon="el-icon-plus"
-              type="primary"
-              size="mini"
-              @click="BOMAddHandler"
-              >新增</el-button
-            >
-          </div>
+        <el-col :span="19">
+<!--          <div class="right_btn">-->
+<!--            <el-button-->
+<!--              :disabled="!currentItem.id || currentItem.isOnlyMenu == '0'"-->
+<!--              icon="el-icon-plus"-->
+<!--              type="primary"-->
+<!--              size="mini"-->
+<!--              @click="BOMAddHandler"-->
+<!--              >新增</el-button-->
+<!--            >-->
+<!--          </div>-->
           <el-table
             :data="materialInfoList"
             border
             stripe
             @selection-change="handleSelectionChange"
           >
-            <el-table-column type="selection" width="55" />
-            <!-- <el-table-column label="审核人"></el-table-column> -->
-            <el-table-column label="父项物料id" prop="fid"></el-table-column>
-            <el-table-column label="物料编码" prop="materialCode"></el-table-column>
-            <el-table-column label="物料名称" prop="materialName" />
-            <el-table-column label="型号" prop="modelNumber" />
-            <el-table-column label="规格" prop="specification" />
-            <el-table-column label="用料量" prop="amountOfMateria" />
-            <el-table-column label="操作">
+<!--            <el-table-column type="selection" width="55" />-->
+            <el-table-column label="BOM版本" align="center" prop="fNumber"/>
+            <el-table-column label="BOM简称" align="center" prop="fName" width="55"/>
+            <el-table-column label="BOM分类" align="center" prop="fBomcategory" width="120">
+                <template  v-slot="scope">
+                  <dict-tag  :options="dict.type.bomtype" :value="scope.row.fBomcategory"/>
+                </template>
+            </el-table-column>
+            <el-table-column label="父级物料编码" align="center" prop="fMaterialId" />
+            <el-table-column label="物料名称"  align="center" prop="fMaterialName" />
+            <el-table-column label="规格型号" align="center" prop="fMaterialModel" />
+            <el-table-column label="描述"  align="center" prop="fDescription" />
+            <el-table-column label="数据状态" align="center" prop="fDocumentStatus" >
+              <template  v-slot="scope">
+                <dict-tag  :options="dict.type.fdocumentstatus" :value="scope.row.fDocumentStatus"/>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
               <template slot-scope="scope">
-                <el-dropdown>
-                  <el-button type="warning" plain size="small">
+                <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>
-                      <el-button
-                        size="mini"
-                        type="text"
-                        icon="el-icon-edit"
-                        @click="bomEditHandler(scope.row)"
-                        >修改
-                      </el-button>
-                    </el-dropdown-item>
-                    <el-dropdown-item>
-                      <el-button
-                        size="mini"
-                        type="text"
-                        icon="el-icon-delete"
-                        @click="deleteHandler(scope.row)"
-                        >删除
-                      </el-button>
-                    </el-dropdown-item>
+<!--                    <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-item  icon="el-icon-edit" command="handleCatInfo">子项物料</el-dropdown-item>
                   </el-dropdown-menu>
                 </el-dropdown>
               </template>
@@ -257,50 +252,149 @@
         </span>
       </template>
     </el-dialog>
-    <el-dialog :title="bomTitle"  :visible.sync="BOMshow" width="500px">
-      <el-row :gutter="20">
-        <el-form
-          :model="bomForm"
-          ref="bomForm"
-          :rules="bomFormmRules"
-          label-width="100px"
-          :inline="false"
-          size="normal"
-        >
-          <el-col :span="24">
-            <el-form-item label="物料编码" prop="materialCode">
-              <el-input v-model="bomForm.materialCode"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="物料名称" prop="materialName">
-              <el-input v-model="bomForm.materialName"></el-input>
-            </el-form-item>
-          </el-col>
+    <el-dialog :title="bomTitle"  :visible.sync="BOMshow" width="1400px">
+      <selsetHeader style="margin-top: 20px" :options="tableHeadData.slice(1, tableHeadData.length -1 )" @change="cascaderChangeFun"></selsetHeader>
+      <el-table v-loading="loading"  style="margin-top:20px" ref="tableTree" :data="bomVersiondetailList" @selection-change="handleSelectionChange">
+        <el-table-column :prop="tableHeadData[0].value"  :label="tableHeadData[0].label" align="center" width="180"></el-table-column>
+        <el-table-column v-for="(item, index) in optionsData" :key="index" :prop="item.value" :label="item.label" align="center"/>
+      </el-table>
 
-          <el-col :span="24">
-            <el-form-item label="型号" prop="modelNumber">
-              <el-input v-model="bomForm.modelNumber"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="规格" prop="specification">
-              <el-input v-model="bomForm.specification"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="用料量" prop="amountOfMateria">
-              <el-input v-model="bomForm.amountOfMateria"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-form>
-      </el-row>
-      <template #footer>
-        <span>
-          <el-button @click="BOMshow = false">取消</el-button>
-          <el-button type="primary" @click="bomConfirmHandler">确认</el-button>
-        </span>
-      </template>
+<!--        <el-table-->
+<!--          :data="bomVersiondetailList"-->
+<!--          style="width: 100%">-->
+<!--          <el-table-column-->
+<!--            prop="id"-->
+<!--            label="序号"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fmaterialidchildFnumber"-->
+<!--            label="子项物料编号"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fchilditemname"-->
+<!--            label="子项物料名称"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fchilditemmodel"-->
+<!--            label="规格"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fPonpXinghao"-->
+<!--            label="型号"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fitempproperty"-->
+<!--            label="供应类型"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fmaterialtype"-->
+<!--            label="子项类型"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fprocessidFname"-->
+<!--            label="作业"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fchildunitidFname"-->
+<!--            label="单位"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fdosagetype"-->
+<!--            label="用量类型"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fnumerator"-->
+<!--            label="分子"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fdenominator"-->
+<!--            label="分母"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="ffixscrapqty"-->
+<!--            label="固定损耗"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fscraprate"-->
+<!--            label="变动损耗率"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--&lt;!&ndash;          <el-table-column&ndash;&gt;-->
+<!--&lt;!&ndash;            prop="fchildsupplyorgid"&ndash;&gt;-->
+<!--&lt;!&ndash;            label="供应组织id"&ndash;&gt;-->
+<!--&lt;!&ndash;            width="180">&ndash;&gt;-->
+<!--&lt;!&ndash;          </el-table-column>&ndash;&gt;-->
+<!--          <el-table-column-->
+<!--            prop="fbomidFnumber"-->
+<!--            label="子项bom版本"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fsubmdlid"-->
+<!--            label="子项产品模型"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fmemo"-->
+<!--            label="备注"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fissuetype"-->
+<!--            label="发料方式"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fissuetype"-->
+<!--            label="发料方式"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="fnetdemandrate"-->
+<!--            label="净需求比例"-->
+<!--            align="center"-->
+<!--            width="180">-->
+<!--          </el-table-column>-->
+<!--        </el-table>-->
+      <pagination
+        v-show="bomVersiondetailListTotal > 0"
+        :total="bomVersiondetailListTotal"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="bomVersiondetail"
+      />
     </el-dialog>
   </div>
 </template>
@@ -311,17 +405,56 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {
   treeList,
   bomList,
+  bomVersiondetail,
   addBom,
   updateBom,
   deleteBom,
   excludeTreeList,
 } from "@/api/amichi/BOMList/index";
+import selsetHeader from "@/views/amichi/BOMList/components/selsetHeader.vue";
 export default {
   name: "BOMList",
   props: [],
-  components: { Treeselect },
+  dicts: ["bomtype","fdocumentstatus"],
+  components: {selsetHeader, Treeselect },
   data() {
     return {
+      loading:true,
+      tableHeadData:[
+        { label: '子项物料编号', value: 'fmaterialidchildFnumber' },
+        { label:"子项物料名称",value:"fchilditemname"},
+        { label: '规格', value: 'fchilditemmodel' },
+        { label: '型号', value: 'fPonpXinghao' },
+        { label: '物料属性', value: 'fitempproperty' },
+        { label: '子项类型', value: 'fmaterialtype' },
+        { label: '单位', value: 'fchildunitidFname' },
+        { label: '供应类型', value: 'fsupplytype' },
+        { label: '备注', value: 'fmemo' },
+        { label: '作业名称', value: 'fprocessidFname' },
+        { label: '作业编码', value: 'fprocessidFnumber' },
+        { label: '用量类型', value: 'fdosagetype' },
+        { label: '分子', value: 'fnumerator' },
+        { label: '分母', value: 'fdenominator' },
+        { label: '固定损耗', value: 'ffixscrapqty' },
+        { label: '变动损耗率', value: 'fscraprate' },
+        { label: '子项bom版本', value: 'fbomidFnumber' },
+        { label: '子项产品模型', value: 'fsubmdlid' },
+        { label: '发料方式', value: 'fissuetype' },
+        { label: '是否跳层', value: 'fisskip' },
+        { label: '净需求比例', value: 'fnetdemandrate' },
+      ],
+      optionsData:[
+        { label: '子项物料编号', value: 'testItem' },
+        { label:"子项物料名称",value:"customerOne"},
+        { label: '规格', value: 'process' },
+        { label: '型号', value: 'alloy' },
+        { label: '物料属性', value: 'thickness' },
+        { label: '子项类型', value: 'fmaterialtype' },
+        { label: '单位', value: 'fchildunitidFname' },
+        { label: '备注', value: 'fmemo' },
+      ],
+      bomVersiondetailList:[],
+      bomVersiondetailListTotal:0,
       // 新增修改物料  start
       currentItem: {},
       BOMshow: false,
@@ -441,6 +574,47 @@ export default {
     this.initTreeList();
   },
   methods: {
+    // 表头筛选
+    cascaderChangeFun(e) {
+      this.optionsData = e
+      this.$nextTick(() => {
+        this.$refs['tableTree'].doLayout();
+      });
+    },
+    //下拉菜单点击事件
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleUpdate":
+          this.handleUpdate(row)
+          break;
+        case "handleDelete":
+          this.handleDelete(row)
+          break;
+        case "handleCatInfo":
+           this.handleCatInfo(row)
+          break;
+        default:
+          break;
+      }
+    },
+    async bomVersiondetail(){
+      let res = await bomVersiondetail(this.queryParams);
+      this.title="查看子项物料详情";
+      this.BOMshow=true;
+      if (res.code == 200) {
+          this.bomVersiondetailList = res.rows;
+          this.bomVersiondetailListTotal = res.total;
+          this.loading=false;
+      } else {
+          this.$message.error(res.msg);
+      }
+    },
+    handleCatInfo(row){
+      console.log("ddddddddd","查询子项物料信息");
+      console.log(row.fMaterialId);
+      this.queryParams.parentMaterialCode=row.fMaterialId;
+      this.bomVersiondetail();
+    },
     // 表单重置
     reset() {
       this.form = {
@@ -476,7 +650,6 @@ export default {
     // bom确认新增或修改回调
     bomConfirmHandler() {
       this.$refs.bomForm.validate(async (valid) => {
-
         if (valid) {
           let {
             materialCode,
@@ -668,12 +841,15 @@ export default {
     handleNodeClick(data) {
       // if (data.isClickLine == "1") return;
       this.currentItem = data;
-      this.queryParams.fid = data.id;
-      if (data.isOnlyMenu == "1") {
-        this.handleQuery();
-      } else {
-        this.materialInfoList = [];
-      }
+      console.log(data)
+      this.queryParams.groupNumber=data.fNumber;
+      this.handleQuery();
+      // this.queryParams.fid = data.id;
+      // if (data.isOnlyMenu == "1") {
+      //   this.handleQuery();
+      // } else {
+      //   this.materialInfoList = [];
+      // }
     },
     // 条件查询函数
     async getList() {
@@ -702,6 +878,6 @@ export default {
   padding-right: 8px;
 }
 ::v-deep .el-tree-node__content {
-  height: 30px;
+  height: 35px;
 }
 </style>

+ 707 - 0
zkqy-ui/src/views/amichi/BOMList/indexV1.vue

@@ -0,0 +1,707 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-form
+        :model="queryParams"
+        ref="form"
+        :rules="rules"
+        label-width="80px"
+        size="small"
+        :inline="true"
+      >
+        <el-form-item label="审核人:">
+          <el-input
+            @keyup.enter.native="getList"
+            v-model="queryParams.id"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="物料编码:">
+          <el-input
+            @keyup.enter.native="getList"
+            v-model="queryParams.materialCode"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="物料名称:">
+          <el-input
+            @keyup.enter.native="getList"
+            v-model="queryParams.materialName"
+          ></el-input>
+        </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>
+    </div>
+    <div class="btn mb10">
+      <el-button
+        icon="el-icon-plus"
+        type="primary"
+        size="mini"
+        @click="addHandler"
+        >新增</el-button
+      >
+      <el-button
+        icon="el-icon-delete"
+        type="danger"
+        size="mini"
+        :disabled="ids.length == 0"
+        @click="deleteHandler"
+        >删除</el-button
+      >
+    </div>
+    <div class="main-area">
+      <el-row :gutter="10">
+        <el-col :span="6">
+          <!-- <div class="top-query">
+            <el-row>
+              <el-form
+                :model="treeForm"
+                ref="treeForm"
+                label-width="80px"
+                :inline="true"
+                size="mini"
+              >
+                <el-col :span="24">
+                  <el-form-item label="分组搜索">
+                    <el-input v-model="treeForm.materialCode"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="19">
+                  <el-form-item label="分组查询">
+                    <el-input
+                      style="width: 150px"
+                      v-model="treeForm.materialName"
+                    ></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="5">
+                  <el-form-item>
+                    <el-button size="mini" @click="queryTreeData"
+                      >查询</el-button
+                    >
+                  </el-form-item>
+                </el-col>
+              </el-form>
+            </el-row>
+          </div> -->
+          <div class="left-area">
+            <el-tree
+              :data="treeOptions"
+              :props="defaultProps"
+              :expand-on-click-node="false"
+              :filter-node-method="filterNode"
+              ref="tree"
+              node-key="id"
+              default-expand-all
+              highlight-current
+              @node-click="handleNodeClick"
+            >
+              <span class="custom-tree-node" slot-scope="{ data }">
+                <span>{{ data.materialName }}</span>
+                <span>
+                  <el-button
+                    size="mini"
+                    type="primary"
+                    icon="el-icon-edit"
+                    circle
+                    @click="editHandler(data)"
+                  ></el-button>
+                  <el-button
+                    size="mini"
+                    type="danger"
+                    icon="el-icon-delete"
+                    circle
+                    @click="deleteHandler(data)"
+                  ></el-button>
+                </span>
+              </span>
+            </el-tree>
+          </div>
+        </el-col>
+        <el-col :span="18">
+          <div class="right_btn">
+            <el-button
+              :disabled="!currentItem.id || currentItem.isOnlyMenu == '0'"
+              icon="el-icon-plus"
+              type="primary"
+              size="mini"
+              @click="BOMAddHandler"
+              >新增</el-button
+            >
+          </div>
+          <el-table
+            :data="materialInfoList"
+            border
+            stripe
+            @selection-change="handleSelectionChange"
+          >
+            <el-table-column type="selection" width="55" />
+            <!-- <el-table-column label="审核人"></el-table-column> -->
+            <el-table-column label="父项物料id" prop="fid"></el-table-column>
+            <el-table-column label="物料编码" prop="materialCode"></el-table-column>
+            <el-table-column label="物料名称" prop="materialName" />
+            <el-table-column label="型号" prop="modelNumber" />
+            <el-table-column label="规格" prop="specification" />
+            <el-table-column label="用料量" prop="amountOfMateria" />
+            <el-table-column label="操作">
+              <template slot-scope="scope">
+                <el-dropdown>
+                  <el-button type="warning" plain size="small">
+                    操作<i class="el-icon-arrow-down el-icon--right"></i>
+                  </el-button>
+                  <el-dropdown-menu slot="dropdown">
+                    <el-dropdown-item>
+                      <el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-edit"
+                        @click="bomEditHandler(scope.row)"
+                        >修改
+                      </el-button>
+                    </el-dropdown-item>
+                    <el-dropdown-item>
+                      <el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-delete"
+                        @click="deleteHandler(scope.row)"
+                        >删除
+                      </el-button>
+                    </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-col>
+      </el-row>
+    </div>
+    <el-dialog :title="title" :visible.sync="show" width="700px">
+      <el-row :gutter="20">
+        <el-form
+          :model="editorForm"
+          ref="editorForm"
+          :rules="editorFormRules"
+          label-width="100px"
+          :inline="false"
+          size="normal"
+        >
+          <el-col :span="12">
+            <el-form-item label="类型" prop="type">
+              <el-select v-model="editorForm.type" placeholder="" filterable>
+                <el-option label="分类" value="0" />
+                <el-option label="半成品" value="1" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="父项物料" prop="fid">
+              <!-- <el-cascader
+                :emitPath="false"
+                v-model="editorForm.fid"
+                :options="treeOptions"
+                :show-all-levels="false"
+                :props="cascaderProps"
+              ></el-cascader> -->
+              <treeselect
+                v-model="editorForm.fid"
+                :normalizer="normalizer"
+                :options="excludeTreeList"
+                :multiple="false"
+                :disable-branch-nodes="false"
+                :clear-on-select="true"
+                :flat="true"
+                :show-count="true"
+                placeholder="请选择父级物料信息"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              :label="editorForm.type == 0 ? '分类编码' : '半成品编码'"
+              prop="materialCode"
+            >
+              <el-input v-model="editorForm.materialCode"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              :label="editorForm.type == 0 ? '分类名称' : '半成品名称'"
+              prop="materialName"
+            >
+              <el-input v-model="editorForm.materialName"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <template #footer>
+        <span>
+          <el-button @click="show = false">取消</el-button>
+          <el-button type="primary" @click="confirmHandler">确认</el-button>
+        </span>
+      </template>
+    </el-dialog>
+    <el-dialog :title="bomTitle"  :visible.sync="BOMshow" width="500px">
+      <el-row :gutter="20">
+        <el-form
+          :model="bomForm"
+          ref="bomForm"
+          :rules="bomFormmRules"
+          label-width="100px"
+          :inline="false"
+          size="normal"
+        >
+          <el-col :span="24">
+            <el-form-item label="物料编码" prop="materialCode">
+              <el-input v-model="bomForm.materialCode"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="物料名称" prop="materialName">
+              <el-input v-model="bomForm.materialName"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="24">
+            <el-form-item label="型号" prop="modelNumber">
+              <el-input v-model="bomForm.modelNumber"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="规格" prop="specification">
+              <el-input v-model="bomForm.specification"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="用料量" prop="amountOfMateria">
+              <el-input v-model="bomForm.amountOfMateria"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <template #footer>
+        <span>
+          <el-button @click="BOMshow = false">取消</el-button>
+          <el-button type="primary" @click="bomConfirmHandler">确认</el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {
+  treeList,
+  bomList,
+  addBom,
+  updateBom,
+  deleteBom,
+  excludeTreeList,
+} from "@/api/amichi/BOMList/index";
+export default {
+  name: "BOMList",
+  props: [],
+  components: { Treeselect },
+  data() {
+    return {
+      // 新增修改物料  start
+      currentItem: {},
+      BOMshow: false,
+      bomTitle: "",
+      bomForm: {
+        fid: "",
+        isTreeShow: "1",
+        isClickLine: "1",
+        isOnlyMenu: "1",
+        materialCode: "",
+        materialName: "",
+        modelNumber:"",
+        specification:"",
+        amountOfMateria:"",
+        type: "1", //'0'分类  '1'半成品
+      },
+      bomFormmRules: {
+        materialCode: [
+          {
+            required: true,
+            message: "物料编码不能为空",
+            trigger: "blur",
+          },
+        ],
+        materialName: [
+          {
+            required: true,
+            message: "物料名称不能为空",
+            trigger: "blur",
+          },
+        ],
+      },
+      // 新增修改物料  end
+      ids: [], //勾选数据
+      title: "",
+      show: false, //新增/修改弹窗
+      // 总条数
+      total: 0,
+      materialInfoList: [], //列表数据
+      defaultProps: {
+        children: "childerns",
+        label: "materialName",
+      }, //树形数据格式
+      cascaderProps: {
+        value: "id",
+        children: "childerns",
+        label: "materialName",
+        checkStrictly: true,
+      },
+      treeOptions: undefined, //树形数据
+      excludeTreeList: undefined, //仅包含分类数据的树形数据
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        id: null,
+        fid: null,
+        materialCode: null,
+        materialName: null,
+        modelNumber:"",
+        specification:"",
+        amountOfMateria:"",
+        // isClickLine: "1",
+        isOnlyMenu: "1",
+      },
+      rules: {},
+      // 树形数据查询表单
+      treeForm: {
+        materialCode: null,
+        materialName: null,
+      },
+      // 新增表单
+      editorForm: {
+        fid: "1",
+        isTreeShow: "",
+        isClickLine: "",
+        isOnlyMenu: "",
+        materialCode: "",
+        materialName: "",
+        amountOfMateria: "",
+        type: "0", //'0'分类  '1'半成品
+      },
+      editorFormRules: {
+        type: [
+          {
+            required: true,
+            message: "请选择类型",
+            trigger: "change",
+          },
+        ],
+        fid: [
+          {
+            required: true,
+            message: "请选择父项物料",
+            trigger: "change",
+          },
+        ],
+        materialCode: [
+          {
+            required: true,
+            message: "物料编码不能为空",
+            trigger: "blur",
+          },
+        ],
+        materialName: [
+          {
+            required: true,
+            message: "物料名称不能为空",
+            trigger: "blur",
+          },
+        ],
+      },
+      editData: {}, //当前编辑数据
+    };
+  },
+  computed: {},
+  mounted() {
+    this.initTreeList();
+  },
+  methods: {
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        fid: null,
+        materialCode: null,
+        materialName: null,
+        modelNumber: null,
+        specification: null,
+        amountOfMateria: null,
+      };
+      this.resetForm("bomTitleFrom");
+    },
+    // bom修改回调
+    bomEditHandler(data) {
+      this.bomTitle = "修改物料";
+      let {materialCode, materialName,modelNumber,specification,amountOfMateria} = data;
+      this.editData = data;
+      this.bomForm = {
+        fid: data.fid,
+        isTreeShow: data.isTreeShow,
+        isClickLine: data.isClickLine,
+        isOnlyMenu: data.isOnlyMenu,
+        materialCode,
+        materialName,
+        modelNumber,
+        specification,
+        amountOfMateria,
+        type: "1", //'0'分类  '1'半成品
+      };
+      this.BOMshow = true;
+    },
+    // bom确认新增或修改回调
+    bomConfirmHandler() {
+      this.$refs.bomForm.validate(async (valid) => {
+
+        if (valid) {
+          let {
+            materialCode,
+            materialName,
+            isTreeShow,
+            isClickLine,
+            isOnlyMenu,
+            modelNumber,specification,amountOfMateria
+          } = this.bomForm;
+          let payload = {
+            fid: this.currentItem.id,
+            isTreeShow,
+            isClickLine,
+            isOnlyMenu,
+            materialCode,
+            materialName,
+            modelNumber,specification,amountOfMateria
+          };
+          let fun = addBom;
+          if (this.bomTitle == "修改物料") {
+            payload.id = this.editData.id;
+            fun = updateBom;
+          }
+
+          let res = await fun(payload);
+          if (res.code == 200) {
+            this.$message.success("操作成功");
+            this.BOMshow = false;
+            this.getList();
+          } else {
+            this.$message.error(res.msg);
+          }
+          // this.initTreeList();
+        }
+      });
+    },
+    // bom新增回调
+    BOMAddHandler() {
+      this.bomTitle = "新增物料";
+      this.resetForm("bomForm");
+      this.BOMshow = true;
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+    },
+    // 删除回调
+    deleteHandler(data) {
+      let ids = data?.id || this.ids;
+      this.$confirm('是否确认删除物料编号为"' + ids + '"的数据项?', "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          deleteBom(ids).then((data) => {
+            if (data.code == 666) {
+              this.$message({
+                message: data.msg,
+                type: "warning",
+              });
+            } else if (data.code == 200) {
+              this.$modal.msgSuccess("删除成功");
+            }
+          });
+          this.getList();
+          this.initTreeList();
+        })
+        .catch((e) => {
+          console.log(e);
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+    /** 转换菜单数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.materialName,
+        children: node.childerns,
+      };
+    },
+    // 修改回调
+    async editHandler(data) {
+      this.title = "修改";
+      let { id, fid, isOnlyMenu, materialCode, materialName } = data;
+      this.editData = data;
+      this.editorForm = {
+        fid: fid,
+        type: isOnlyMenu,
+        materialCode,
+        materialName,
+      };
+      await this.getExcludeTreeList();
+      this.show = true;
+    },
+    // 新增/修改确认回调
+    async confirmHandler() {
+      this.$refs.editorForm.validate(async (valid) => {
+        if (valid) {
+          let { fid, materialCode, materialName, type } = this.editorForm;
+          let payload = {
+            fid,
+            isTreeShow: "",
+            isClickLine: "",
+            isOnlyMenu: "",
+            materialCode,
+            materialName,
+          };
+          payload.isClickLine = type;
+          payload.isTreeShow = type;
+          payload.isOnlyMenu = type;
+          let fun = addBom;
+          if (this.title == "修改") {
+            payload.id = this.editData.id;
+            fun = updateBom;
+          }
+
+          let res = await fun(payload);
+          if (res.code == 200) {
+            this.$message.success("操作成功");
+            this.show = false;
+            this.getList();
+          } else {
+            this.$message.error(res.msg);
+          }
+          this.initTreeList();
+        }
+      });
+    },
+    // 新增回调
+    async addHandler() {
+      this.resetForm("editorForm");
+      Object.assign(this.editorForm, {
+        fid: "1",
+        isTreeShow: "",
+        isClickLine: "",
+        isOnlyMenu: "",
+        materialCode: "",
+        materialName: "",
+        type: "0", //'0'分类  '1'半成品
+      });
+      this.title = "新增";
+      await this.getExcludeTreeList();
+      this.show = true;
+    },
+    // 获取菜单树形数据
+    async getExcludeTreeList() {
+      let res = await excludeTreeList();
+      if (res.code == 200) {
+        this.excludeTreeList = res.data;
+      }
+    },
+    // 初始化树形数据
+    initTreeList() {
+      this.resetForm("treeForm");
+      this.getTreeList();
+    },
+    // 获取树形数据
+    async getTreeList() {
+      let res = await treeList();
+      if (res.code == 200) {
+        this.treeOptions = res.data;
+      }
+    },
+    // 树形数据检索回调
+    queryTreeData() {},
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryParams");
+      this.handleQuery();
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      // if (data.isClickLine == "1") return;
+      this.currentItem = data;
+      this.queryParams.fid = data.id;
+      if (data.isOnlyMenu == "1") {
+        this.handleQuery();
+      } else {
+        this.materialInfoList = [];
+      }
+    },
+    // 条件查询函数
+    async getList() {
+      let res = await bomList(this.queryParams);
+      if (res.code == 200) {
+        this.materialInfoList = res.rows;
+        this.total = res.total;
+      } else {
+        this.$message.error(res.msg);
+      }
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.left-area {
+  min-height: 400px;
+}
+.custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
+::v-deep .el-tree-node__content {
+  height: 30px;
+}
+</style>

+ 404 - 0
zkqy-ui/src/views/amichi/jdProductionOrder/order/index.vue

@@ -0,0 +1,404 @@
+<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="documentNumber">
+        <el-input
+          v-model="queryParams.documentNumber"
+          placeholder="请输入单据编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="单据类型" prop="documentTyep">
+        <el-input
+          v-model="queryParams.documentTyep"
+          placeholder="请输入单据类型"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="单据日期" prop="documentDate">
+        <el-date-picker clearable
+          v-model="queryParams.documentDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择单据日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="物料编码" prop="materialCode">
+        <el-input
+          v-model="queryParams.materialCode"
+          placeholder="请输入物料编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="需求单据" prop="demandDocument">
+        <el-input
+          v-model="queryParams.demandDocument"
+          placeholder="请输入需求单据"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="计划编号" prop="planNumber">
+        <el-input
+          v-model="queryParams.planNumber"
+          placeholder="请输入计划编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="计划名称" prop="planName">
+        <el-input
+          v-model="queryParams.planName"
+          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="['jdProductionOrder:order: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="['jdProductionOrder:order: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="['jdProductionOrder:order: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="['jdProductionOrder:order:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="orderList" style="margin-top: 20px" @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="documentNumber" />
+      <el-table-column label="单据类型" align="center" prop="documentTyep" />
+      <el-table-column label="单据日期" align="center" prop="documentDate">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.documentDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="单据状态" align="center" prop="documentStatus" />
+      <el-table-column label="产品类型" align="center" prop="productType" />
+      <el-table-column label="物料编码" align="center" prop="materialCode" />
+      <el-table-column label="物料名称" align="center" prop="materialName" />
+      <el-table-column label="型号" align="center" prop="modelNumber" />
+      <el-table-column label="规格" align="center" prop="specification" />
+      <el-table-column label="生产车间" align="center" prop="productionWorkshop" />
+      <el-table-column label="单位" align="center" prop="unit" />
+      <el-table-column label="数量" align="center" prop="quantity" />
+      <el-table-column label="业务状态" align="center" prop="serviceStatus" />
+      <el-table-column label="需求单据" align="center" prop="demandDocument" />
+      <el-table-column label="领料状态" align="center" prop="materialRequisitionStatus" />
+<!--      <el-table-column label="创建者id" align="center" prop="createById" />-->
+<!--      <el-table-column label="更新者id" align="center" prop="updateById" />-->
+<!--      <el-table-column label="备用字段1" align="center" prop="byOne" />-->
+<!--      <el-table-column label="备用字段2" align="center" prop="byTwo" />-->
+      <el-table-column label="计划编号" align="center" prop="planNumber" />
+      <el-table-column label="计划名称" align="center" prop="planName" />
+      <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="['jdProductionOrder:order:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['jdProductionOrder:order: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="documentNumber">
+          <el-input v-model="form.documentNumber" placeholder="请输入单据编号" />
+        </el-form-item>
+        <el-form-item label="单据类型" prop="documentTyep">
+          <el-input v-model="form.documentTyep" placeholder="请输入单据类型" />
+        </el-form-item>
+        <el-form-item label="单据日期" prop="documentDate">
+          <el-date-picker clearable
+            v-model="form.documentDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择单据日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="物料编码" prop="materialCode">
+          <el-input v-model="form.materialCode" placeholder="请输入物料编码" />
+        </el-form-item>
+        <el-form-item label="物料名称" prop="materialName">
+          <el-input v-model="form.materialName" placeholder="请输入物料名称" />
+        </el-form-item>
+        <el-form-item label="型号" prop="modelNumber">
+          <el-input v-model="form.modelNumber" placeholder="请输入型号" />
+        </el-form-item>
+        <el-form-item label="规格" prop="specification">
+          <el-input v-model="form.specification" placeholder="请输入规格" />
+        </el-form-item>
+        <el-form-item label="生产车间" prop="productionWorkshop">
+          <el-input v-model="form.productionWorkshop" placeholder="请输入生产车间" />
+        </el-form-item>
+        <el-form-item label="单位" prop="unit">
+          <el-input v-model="form.unit" 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="demandDocument">
+          <el-input v-model="form.demandDocument" placeholder="请输入需求单据" />
+        </el-form-item>
+        <el-form-item label="计划编号" prop="planNumber">
+          <el-input v-model="form.planNumber" placeholder="请输入计划编号" />
+        </el-form-item>
+        <el-form-item label="计划名称" prop="planName">
+          <el-input v-model="form.planName" 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 { listOrder, getOrder, delOrder, addOrder, updateOrder } from "@/api/amichi/jdProductionOrder/order";
+
+export default {
+  name: "Order",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 金蝶-生产订单信息表格数据
+      orderList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        documentNumber: null,
+        documentTyep: null,
+        documentDate: null,
+        documentStatus: null,
+        productType: null,
+        materialCode: null,
+        materialName: null,
+        modelNumber: null,
+        specification: null,
+        productionWorkshop: null,
+        unit: null,
+        quantity: null,
+        serviceStatus: null,
+        demandDocument: null,
+        materialRequisitionStatus: null,
+        createById: null,
+        updateById: null,
+        byOne: null,
+        byTwo: null,
+        planNumber: null,
+        planName: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询金蝶-生产订单信息列表 */
+    getList() {
+      this.loading = true;
+      listOrder(this.queryParams).then(response => {
+        this.orderList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        documentNumber: null,
+        documentTyep: null,
+        documentDate: null,
+        documentStatus: null,
+        productType: null,
+        materialCode: null,
+        materialName: null,
+        modelNumber: null,
+        specification: null,
+        productionWorkshop: null,
+        unit: null,
+        quantity: null,
+        serviceStatus: null,
+        demandDocument: null,
+        materialRequisitionStatus: null,
+        createById: null,
+        createBy: null,
+        createTime: null,
+        updateById: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null,
+        byOne: null,
+        byTwo: null,
+        planNumber: null,
+        planName: 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
+      getOrder(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) {
+            updateOrder(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addOrder(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 delOrder(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('jdProductionOrder/order/export', {
+        ...this.queryParams
+      }, `order_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

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

@@ -98,7 +98,7 @@
       @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="id" />-->
       <el-table-column
         label="指导书名称"
         align="center"

+ 122 - 55
zkqy-ui/src/views/amichi/planTask/salesPlan.vue

@@ -123,62 +123,29 @@
           <template slot-scope="scopes">
             <el-table :data="scopes.row.planTaskDetails" border
                       style="width:calc(100% - 80px);float:right" id="child_tab">
-              <el-table-column align="center" label="型号/规格" prop="model" width="180" />
-              <el-table-column label="客户型号" align="center">
-                <el-table-column
-                  prop="nameplate"
-                  label="(铭牌及包装)"
-                  align="center"
-                >
-                </el-table-column>
-                <el-table-column
-                  prop="capacity"
-                  align="center"
-                  label="容量"
-                >
-
-                </el-table-column>
-              </el-table-column>
-              <el-table-column align="center" label="接口/盘片" prop="interfaceDisk" />
-              <el-table-column
-                prop="length"
-                align="center"
-                :label="'铁心长度\n励磁'"
-              >
-                <template  slot="header" >
-                  <span>铁心长度&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>励磁</span>
+              <el-table-column align="center"  label="需求单据" prop="demandDocument"/>
+              <el-table-column align="center"  label="物料编码" prop="materialId" />
+              <el-table-column align="center"  label="物料名称" prop="materialName"/>
+              <el-table-column align="center"  label="型号"    prop="modelNumber" />
+              <el-table-column align="center"  label="规格"    prop="specification" />
+              <el-table-column align="center"  label="单位"    prop="materialUnit" />
+              <el-table-column align="center"  label="数量(台)" >
+                <template slot-scope="scope">
+                  {{ formatNumber(scope.row.quantity) }}
                 </template>
-
               </el-table-column>
-              <el-table-column
-                prop="voltage"
-                label="电压/频率"
-                align="center"
-              >
-
-              </el-table-column>
-              <el-table-column
-                prop="programme"
-                label="电磁方案"
-                align="center"
-              >
-
-              </el-table-column>
-              <el-table-column
-                prop="quantity"
-                label="数量(台)"
-                align="center"
-              >
-
-              </el-table-column>
-              <el-table-column
-                prop="remark"
-                label="备注"
-                align="center"
-              >
-
+              <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="success">
+                      操作<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="catxlh">流转卡序列号</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
+                </template>
               </el-table-column>
-
             </el-table>
           </template>
         </el-table-column>
@@ -188,6 +155,7 @@
           align="center"
           prop="planNumber">
         </el-table-column>
+
         <el-table-column
           label="订单号"
           align="center"
@@ -202,12 +170,15 @@
           label="总台数"
           align="center"
           prop="quantity">
+          <template slot-scope="scope">
+            {{ formatNumber(scope.row.quantity) }}
+          </template>
         </el-table-column>
         <el-table-column
           label="特殊要求"
           align="center"
           :show-overflow-tooltip='true'
-          prop="special">
+          prop="specialRequirements">
         </el-table-column>
         <el-table-column
           label="完成时间"
@@ -225,6 +196,7 @@
         <el-table-column
           label="备注"
           align="center"
+          :show-overflow-tooltip='true'
           prop="remark">
         </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -450,6 +422,50 @@
           </span>
         </template>
       </el-dialog>
+
+
+      <!-- 工序流转卡弹窗 -->
+      <el-dialog :title="title" :visible.sync="flowCardOpen" width="1000px" append-to-body>
+        <!--弹窗头部搜索-->
+        <el-form :model="flowCardQueryParams" ref="flowCardQueryForm" size="small" :inline="true" label-width="68px">
+          <el-form-item label="序列号" prop="serialNumber">
+            <el-input
+              v-model="flowCardQueryParams.serialNumber"
+              placeholder="序列号"
+              clearable
+              @keyup.enter.native="flowCardQueryHandleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search"  size="mini"  @click="flowCardQueryHandleQuery">搜索</el-button>
+            <el-button                icon="el-icon-refresh" size="mini"  @click="flowCardQueryResetQuery">重置</el-button>
+<!--            <el-button type="danger"  icon="el-icon-brush"   size="mini"  @click="flowCardBM">补码</el-button>-->
+          </el-form-item>
+        </el-form>
+        <!--弹窗内的表格-->
+        <el-table
+          :data="flowCardQueryTableData"
+          border
+          v-loading="flowCardQueryLoading"
+          style="width: 100%">
+          <el-table-column
+            type="selection"
+            align="center"
+            width="55">
+          </el-table-column>
+          <el-table-column  align="center" prop="demandDocumentNumber" label="需求单据号"></el-table-column>
+          <el-table-column  align="center" prop="serialNumber" label="序列号"></el-table-column>
+          <el-table-column align="center" prop="printQuantity"  label="数量"></el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="flowCardQueryTotal>0"
+          :total="flowCardQueryTotal"
+          :page.sync="flowCardQueryParams.pageNum"
+          :limit.sync="flowCardQueryParams.pageSize"
+          @pagination="getListFlowCard"
+        />
+      </el-dialog>
     </div>
   </el-card>
 </template>
@@ -458,6 +474,7 @@
 import {addInstruction, getPlanList,getPlanOne,viewPlannedMaterialStatus } from "@/api/amichi/planTask/index";
 import {listTableData,btnCommonApi} from "@/api/tablelist/commonTable.js";
 import { getToken } from "@/utils/auth";
+import {listProductionCardFlow} from "@/api/amichi/productionCardFlow/productionCardFlow";
 
 
 export default {
@@ -467,6 +484,15 @@ export default {
   },
   data() {
     return {
+      flowCardQueryTableData:[],
+      flowCardQueryLoading:true,
+      flowCardQueryTotal:0,
+      flowCardQueryParams:{
+        documentNumber:"",
+        pageNum: 1,
+        pageSize: 10,
+      },
+      flowCardOpen:false,
       bomFormTableData: [],
       showCount:false,
       tableData:[],
@@ -538,7 +564,12 @@ export default {
       },
     };
   },
-
+  filters: {
+    formatNumber(value) {
+      if (!value) return '';
+      return value.toFixed(2);
+    }
+  },
   created() {
     //查询表格数据
     this.getPlanList(this.queryParams);
@@ -547,6 +578,24 @@ export default {
 
   },
   methods: {
+    //查询表单重置
+    flowCardQueryResetQuery(){
+      this.resetForm("flowCardQueryForm");
+      this.getListFlowCard();
+    },
+    //查询
+    flowCardQueryHandleQuery(){
+      console.log("工序流转卡数据查询");
+      this.getListFlowCard();
+    },
+    //补码操作
+    flowCardBM(row){
+      console.log("补码")
+    },
+    formatNumber(value) {
+      if (value === null || value === undefined) return '';
+      return Number(value).toFixed(2);
+    },
     // 多选框选中数据
     handleSelectionChange(selectionString) {
       //过滤出是否是选了,已经排产的数据
@@ -664,10 +713,28 @@ export default {
         case "tc":
           this.tc(row)
           break;
+        case "catxlh":
+          this.catxlh(row);
         default:
           break;
       }
     },
+    catxlh(row){
+      this.flowCardOpen=true;
+      this.title = "工序流转卡列表";
+      this.flowCardQueryParams={
+        demandDocumentNumber:row.demandDocument,
+      }
+      this.getListFlowCard();
+    },
+    getListFlowCard(){
+      this.flowCardQueryLoading = true;
+      listProductionCardFlow(this.flowCardQueryParams).then(response => {
+        this.flowCardQueryTableData = response.rows;
+        this.flowCardQueryTotal = response.total;
+        this.flowCardQueryLoading = false;
+      });
+    },
     //投产
     tc(row){
       console.log(row);

Some files were not shown because too many files changed in this diff