Quellcode durchsuchen

feat:入库单,工艺、成品综合库存

hmc vor 11 Monaten
Ursprung
Commit
84a69b158c
62 geänderte Dateien mit 8237 neuen und 343 gelöschten Zeilen
  1. 114 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/FinishedGoodsInventoryController.java
  2. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/FinishedGoodsInventoryLogController.java
  3. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/OperationInstructionController.java
  4. 113 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StoreEntryDetailsController.java
  5. 155 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WarehouseEntryInformationController.java
  6. 118 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WorkingprocedureController.java
  7. 153 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WorkmanshipController.java
  8. 13 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BillOfMaterials.java
  9. 209 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/FinishedGoodsInventory.java
  10. 284 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/FinishedGoodsInventoryLog.java
  11. 195 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/OperationInstruction.java
  12. 223 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/StoreEntryDetails.java
  13. 214 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/WarehouseEntryInformation.java
  14. 223 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Workingprocedure.java
  15. 195 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Workmanship.java
  16. 18 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/WarehouseEntryInformationVo.java
  17. 50 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/WorkmanshipTreeVo.java
  18. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/FinishedGoodsInventoryLogMapper.java
  19. 68 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/FinishedGoodsInventoryMapper.java
  20. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/OperationInstructionMapper.java
  21. 92 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/StoreEntryDetailsMapper.java
  22. 69 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/WarehouseEntryInformationMapper.java
  23. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/WorkingprocedureMapper.java
  24. 75 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/WorkmanshipMapper.java
  25. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IFinishedGoodsInventoryLogService.java
  26. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IFinishedGoodsInventoryService.java
  27. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IOperationInstructionService.java
  28. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStoreEntryDetailsService.java
  29. 90 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWarehouseEntryInformationService.java
  30. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWorkingprocedureService.java
  31. 76 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWorkmanshipService.java
  32. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/FinishedGoodsInventoryLogServiceImpl.java
  33. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/FinishedGoodsInventoryServiceImpl.java
  34. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/OperationInstructionServiceImpl.java
  35. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StoreEntryDetailsServiceImpl.java
  36. 235 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WarehouseEntryInformationServiceImpl.java
  37. 96 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WorkingprocedureServiceImpl.java
  38. 120 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WorkmanshipServiceImpl.java
  39. 5 1
      zkqy-fujian-amichi/src/main/resources/mapper/BillOfMaterialsMapper.xml
  40. 166 0
      zkqy-fujian-amichi/src/main/resources/mapper/FinishedGoodsInventoryLogMapper.xml
  41. 132 0
      zkqy-fujian-amichi/src/main/resources/mapper/FinishedGoodsInventoryMapper.xml
  42. 125 0
      zkqy-fujian-amichi/src/main/resources/mapper/OperationInstructionMapper.xml
  43. 2 1
      zkqy-fujian-amichi/src/main/resources/mapper/PocurementdetailsMapper.xml
  44. 227 0
      zkqy-fujian-amichi/src/main/resources/mapper/StoreEntryDetailsMapper.xml
  45. 150 0
      zkqy-fujian-amichi/src/main/resources/mapper/WarehouseEntryInformationMapper.xml
  46. 135 0
      zkqy-fujian-amichi/src/main/resources/mapper/WorkingprocedureMapper.xml
  47. 172 0
      zkqy-fujian-amichi/src/main/resources/mapper/WorkmanshipMapper.xml
  48. 44 0
      zkqy-ui/src/api/amichi/operationInstruction/instruction.js
  49. 65 0
      zkqy-ui/src/api/amichi/warehouseWarrant/warehouseWarrant.js
  50. 44 0
      zkqy-ui/src/api/amichi/workmanship/workingprocedure.js
  51. 54 0
      zkqy-ui/src/api/amichi/workmanship/workmanship.js
  52. 12 1
      zkqy-ui/src/views/amichi/materiel/components/operateTable.vue
  53. 24 33
      zkqy-ui/src/views/amichi/materiel/index.vue
  54. 48 119
      zkqy-ui/src/views/amichi/operationInstruction/index.vue
  55. 317 0
      zkqy-ui/src/views/amichi/operationInstruction/index2.vue
  56. 0 66
      zkqy-ui/src/views/amichi/operationInstruction/index3.vue
  57. 490 0
      zkqy-ui/src/views/amichi/processDocumentManagement/index.vue
  58. 190 13
      zkqy-ui/src/views/amichi/purchase/purchaseOrder/index.vue
  59. 6 109
      zkqy-ui/src/views/amichi/purchase/purchaseOrder/purchaseOrderApproval.vue
  60. 756 0
      zkqy-ui/src/views/amichi/warehouseWarrant/index.vue
  61. 774 0
      zkqy-ui/src/views/amichi/warehouseWarrant/warehouseWarrantApproval.vue
  62. 1 0
      zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

+ 114 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/FinishedGoodsInventoryController.java

@@ -0,0 +1,114 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.FinishedGoodsInventory;
+import com.zkqy.amichi.service.IFinishedGoodsInventoryService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 成品库存Controller
+ *
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@RestController
+@RequestMapping("/amichi/inventory")
+@Api(value = "/amichi/inventory", description = "成品库存-接口")
+public class FinishedGoodsInventoryController extends BaseController
+{
+    @Autowired
+    private IFinishedGoodsInventoryService finishedGoodsInventoryService;
+
+    /**
+     * 查询成品库存列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:inventory:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询成品库存列表")
+    public TableDataInfo list(FinishedGoodsInventory finishedGoodsInventory)
+    {
+        startPage();
+        List<FinishedGoodsInventory> list = finishedGoodsInventoryService.selectFinishedGoodsInventoryList(finishedGoodsInventory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出成品库存列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:inventory:export')")
+    @Log(title = "成品库存", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出成品库存列表")
+    public void export(HttpServletResponse response, FinishedGoodsInventory finishedGoodsInventory)
+    {
+        List<FinishedGoodsInventory> list = finishedGoodsInventoryService.selectFinishedGoodsInventoryList(finishedGoodsInventory);
+        ExcelUtil<FinishedGoodsInventory> util = new ExcelUtil<FinishedGoodsInventory>(FinishedGoodsInventory.class);
+        util.exportExcel(response, list, "成品库存数据");
+    }
+
+    /**
+     * 获取成品库存详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:inventory:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取成品库存详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(finishedGoodsInventoryService.selectFinishedGoodsInventoryById(id));
+    }
+
+    /**
+     * 新增成品库存
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:inventory:add')")
+    @Log(title = "成品库存", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增成品库存")
+    public AjaxResult add(@RequestBody FinishedGoodsInventory finishedGoodsInventory)
+    {
+        return toAjax(finishedGoodsInventoryService.insertFinishedGoodsInventory(finishedGoodsInventory));
+    }
+
+    /**
+     * 修改成品库存
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:inventory:edit')")
+    @Log(title = "成品库存", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改成品库存")
+    public AjaxResult edit(@RequestBody FinishedGoodsInventory finishedGoodsInventory)
+    {
+        return toAjax(finishedGoodsInventoryService.updateFinishedGoodsInventory(finishedGoodsInventory));
+    }
+
+    /**
+     * 删除成品库存
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:inventory:remove')")
+    @Log(title = "成品库存", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除成品库存")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(finishedGoodsInventoryService.deleteFinishedGoodsInventoryByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/FinishedGoodsInventoryLogController.java

@@ -0,0 +1,113 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.FinishedGoodsInventoryLog;
+import com.zkqy.amichi.service.IFinishedGoodsInventoryLogService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 成品入库日志信息Controller
+ *
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@RestController
+@RequestMapping("/amichi/log")
+@Api(value = "/amichi/log", description = "成品入库日志信息-接口")
+public class FinishedGoodsInventoryLogController extends BaseController
+{
+    @Autowired
+    private IFinishedGoodsInventoryLogService finishedGoodsInventoryLogService;
+
+/**
+ * 查询成品入库日志信息列表
+ */
+//@PreAuthorize("@ss.hasPermi('amichi:log:list')")
+@GetMapping("/list")
+@ApiOperation(value = "查询成品入库日志信息列表")
+    public TableDataInfo list(FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        startPage();
+        List<FinishedGoodsInventoryLog> list = finishedGoodsInventoryLogService.selectFinishedGoodsInventoryLogList(finishedGoodsInventoryLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出成品入库日志信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:log:export')")
+    @Log(title = "成品入库日志信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出成品入库日志信息列表")
+    public void export(HttpServletResponse response, FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        List<FinishedGoodsInventoryLog> list = finishedGoodsInventoryLogService.selectFinishedGoodsInventoryLogList(finishedGoodsInventoryLog);
+        ExcelUtil<FinishedGoodsInventoryLog> util = new ExcelUtil<FinishedGoodsInventoryLog>(FinishedGoodsInventoryLog.class);
+        util.exportExcel(response, list, "成品入库日志信息数据");
+    }
+
+    /**
+     * 获取成品入库日志信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:log:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取成品入库日志信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(finishedGoodsInventoryLogService.selectFinishedGoodsInventoryLogById(id));
+    }
+
+    /**
+     * 新增成品入库日志信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:log:add')")
+    @Log(title = "成品入库日志信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增成品入库日志信息")
+    public AjaxResult add(@RequestBody FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        return toAjax(finishedGoodsInventoryLogService.insertFinishedGoodsInventoryLog(finishedGoodsInventoryLog));
+    }
+
+    /**
+     * 修改成品入库日志信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:log:edit')")
+    @Log(title = "成品入库日志信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改成品入库日志信息")
+    public AjaxResult edit(@RequestBody FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        return toAjax(finishedGoodsInventoryLogService.updateFinishedGoodsInventoryLog(finishedGoodsInventoryLog));
+    }
+
+    /**
+     * 删除成品入库日志信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:log:remove')")
+    @Log(title = "成品入库日志信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除成品入库日志信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(finishedGoodsInventoryLogService.deleteFinishedGoodsInventoryLogByIds(ids));
+    }
+}

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/OperationInstructionController.java

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

+ 113 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StoreEntryDetailsController.java

@@ -0,0 +1,113 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.amichi.domain.StoreEntryDetails;
+import com.zkqy.amichi.service.IStoreEntryDetailsService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 入库单详细信息Controller
+ *
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@RestController
+@RequestMapping("/amichi/details")
+@Api(value = "/amichi/details", description = "入库单详细信息-接口")
+public class StoreEntryDetailsController extends BaseController
+{
+    @Autowired
+    private IStoreEntryDetailsService storeEntryDetailsService;
+
+    /**
+     * 查询入库单详细信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:details:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询入库单详细信息列表")
+    public TableDataInfo list(StoreEntryDetails storeEntryDetails)
+    {
+        startPage();
+        List<StoreEntryDetails> list = storeEntryDetailsService.selectStoreEntryDetailsList(storeEntryDetails);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出入库单详细信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:export')")
+    @Log(title = "入库单详细信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出入库单详细信息列表")
+    public void export(HttpServletResponse response, StoreEntryDetails storeEntryDetails)
+    {
+        List<StoreEntryDetails> list = storeEntryDetailsService.selectStoreEntryDetailsList(storeEntryDetails);
+        ExcelUtil<StoreEntryDetails> util = new ExcelUtil<StoreEntryDetails>(StoreEntryDetails.class);
+        util.exportExcel(response, list, "入库单详细信息数据");
+    }
+
+    /**
+     * 获取入库单详细信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取入库单详细信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(storeEntryDetailsService.selectStoreEntryDetailsById(id));
+    }
+
+    /**
+     * 新增入库单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:add')")
+    @Log(title = "入库单详细信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增入库单详细信息")
+    public AjaxResult add(@RequestBody StoreEntryDetails storeEntryDetails)
+    {
+        return toAjax(storeEntryDetailsService.insertStoreEntryDetails(storeEntryDetails));
+    }
+
+    /**
+     * 修改入库单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:edit')")
+    @Log(title = "入库单详细信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改入库单详细信息")
+    public AjaxResult edit(@RequestBody StoreEntryDetails storeEntryDetails)
+    {
+        return toAjax(storeEntryDetailsService.updateStoreEntryDetails(storeEntryDetails));
+    }
+
+    /**
+     * 删除入库单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:details:remove')")
+    @Log(title = "入库单详细信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除入库单详细信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(storeEntryDetailsService.deleteStoreEntryDetailsByIds(ids));
+    }
+}

+ 155 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WarehouseEntryInformationController.java

@@ -0,0 +1,155 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
+import com.zkqy.common.utils.SecurityUtils;
+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.WarehouseEntryInformation;
+import com.zkqy.amichi.service.IWarehouseEntryInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 入库单信息Controller
+ *
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@RestController
+@RequestMapping("/amichi/warehouseWarrant")
+@Api(value = "/amichi/warehouseWarrant", description = "入库单信息-接口")
+public class WarehouseEntryInformationController extends BaseController
+{
+    @Autowired
+    private IWarehouseEntryInformationService warehouseEntryInformationService;
+
+    /**
+     * 查询入库单信息列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询入库单信息列表")
+    public TableDataInfo list(WarehouseEntryInformation warehouseEntryInformation)
+    {
+        startPage();
+        List<WarehouseEntryInformation> list = warehouseEntryInformationService.selectWarehouseEntryInformationList(warehouseEntryInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出入库单信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:export')")
+    @Log(title = "入库单信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出入库单信息列表")
+    public void export(HttpServletResponse response, WarehouseEntryInformation warehouseEntryInformation)
+    {
+        List<WarehouseEntryInformation> list = warehouseEntryInformationService.selectWarehouseEntryInformationList(warehouseEntryInformation);
+        ExcelUtil<WarehouseEntryInformation> util = new ExcelUtil<WarehouseEntryInformation>(WarehouseEntryInformation.class);
+        util.exportExcel(response, list, "入库单信息数据");
+    }
+
+    /**
+     * 获取入库单信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取入库单信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(warehouseEntryInformationService.selectWarehouseEntryInformationByIdVo(id));
+    }
+
+    /**
+     * 新增入库单信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:add')")
+    @Log(title = "入库单信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增入库单信息")
+    public AjaxResult add(@RequestBody WarehouseEntryInformation warehouseEntryInformation)
+    {
+        return toAjax(warehouseEntryInformationService.insertWarehouseEntryInformation(warehouseEntryInformation));
+    }
+
+    /**
+     * 新增入库单信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:add')")
+    @Log(title = "入库单信息", businessType = BusinessType.INSERT)
+    @PostMapping("/insert")
+    @ApiOperation(value = "新增入库单信息")
+    public AjaxResult addVo(@RequestBody WarehouseEntryInformationVo warehouseEntryInformationVo)
+    {
+        return toAjax(warehouseEntryInformationService.insertWarehouseEntryInformationVo(warehouseEntryInformationVo));
+    }
+
+    /**
+     * 修改入库单信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:edit')")
+    @Log(title = "入库单信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改入库单信息")
+    public AjaxResult edit(@RequestBody WarehouseEntryInformation warehouseEntryInformation)
+    {
+        return toAjax(warehouseEntryInformationService.updateWarehouseEntryInformation(warehouseEntryInformation));
+    }
+
+
+    /**
+     * 修改入库单信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:edit')")
+    @Log(title = "入库单信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/status")
+    @ApiOperation(value = "修改入库单信息")
+    public AjaxResult editStatus(@RequestBody WarehouseEntryInformation warehouseEntryInformation)
+    {
+        warehouseEntryInformation.setExamine(SecurityUtils.getUsername());//审核人
+        return toAjax(warehouseEntryInformationService.updateWarehouseEntryInformation(warehouseEntryInformation));
+    }
+
+    /**
+     * 修改入库单信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:edit')")
+    @Log(title = "入库单信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/update")
+    @ApiOperation(value = "修改入库单信息")
+    public AjaxResult update(@RequestBody WarehouseEntryInformationVo warehouseEntryInformationvo)
+    {
+        return toAjax(warehouseEntryInformationService.updateWarehouseEntryInformationVo(warehouseEntryInformationvo));
+    }
+
+
+    /**
+     * 删除入库单信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:warehouseWarrant:remove')")
+    @Log(title = "入库单信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除入库单信息")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(warehouseEntryInformationService.updateWarehouseEntryInformationByIds(ids));
+    }
+}

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

@@ -0,0 +1,118 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.utils.SecurityUtils;
+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.Workingprocedure;
+import com.zkqy.amichi.service.IWorkingprocedureService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 工序Controller
+ *
+ * @author zkqy
+ * @date 2024-07-04
+ */
+@RestController
+@RequestMapping("/amichi/workingprocedure")
+@Api(value = "/amichi/workingprocedure", description = "工序-接口")
+public class WorkingprocedureController extends BaseController
+{
+    @Autowired
+    private IWorkingprocedureService workingprocedureService;
+
+    /**
+     * 查询工序列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:workingprocedure:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询工序列表")
+    public TableDataInfo list(Workingprocedure workingprocedure)
+    {
+        startPage();
+        List<Workingprocedure> list = workingprocedureService.selectWorkingprocedureList(workingprocedure);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出工序列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workingprocedure:export')")
+    @Log(title = "工序", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出工序列表")
+    public void export(HttpServletResponse response, Workingprocedure workingprocedure)
+    {
+        List<Workingprocedure> list = workingprocedureService.selectWorkingprocedureList(workingprocedure);
+        ExcelUtil<Workingprocedure> util = new ExcelUtil<Workingprocedure>(Workingprocedure.class);
+        util.exportExcel(response, list, "工序数据");
+    }
+
+    /**
+     * 获取工序详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workingprocedure:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取工序详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(workingprocedureService.selectWorkingprocedureById(id));
+    }
+
+    /**
+     * 新增工序
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workingprocedure:add')")
+    @Log(title = "工序", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增工序")
+    public AjaxResult add(@RequestBody Workingprocedure workingprocedure)
+    {
+        workingprocedure.setDelFlag("0");//设置删除状态
+        workingprocedure.setCreateById(SecurityUtils.getUserId());
+        workingprocedure.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(workingprocedureService.insertWorkingprocedure(workingprocedure));
+    }
+
+    /**
+     * 修改工序
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workingprocedure:edit')")
+    @Log(title = "工序", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改工序")
+    public AjaxResult edit(@RequestBody Workingprocedure workingprocedure)
+    {
+        return toAjax(workingprocedureService.updateWorkingprocedure(workingprocedure));
+    }
+
+    /**
+     * 删除工序
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workingprocedure:remove')")
+    @Log(title = "工序", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除工序")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(workingprocedureService.deleteWorkingprocedureByIds(ids));
+    }
+}

+ 153 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/WorkmanshipController.java

@@ -0,0 +1,153 @@
+package com.zkqy.amichi.controller;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.amichi.domain.vo.WorkmanshipTreeVo;
+import com.zkqy.common.utils.SecurityUtils;
+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.Workmanship;
+import com.zkqy.amichi.service.IWorkmanshipService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 工艺Controller
+ *
+ * @author zkqy
+ * @date 2024-07-04
+ */
+@RestController
+@RequestMapping("/amichi/workmanship")
+@Api(value = "/amichi/workmanship", description = "工艺-接口")
+public class WorkmanshipController extends BaseController
+{
+    @Autowired
+    private IWorkmanshipService workmanshipService;
+
+    /**
+     * 查询工艺列表
+     */
+    //@PreAuthorize("@ss.hasPermi('amichi:workmanship:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询工艺列表")
+    public TableDataInfo list(Workmanship workmanship)
+    {
+        startPage();
+        List<Workmanship> list = workmanshipService.selectWorkmanshipList(workmanship);
+        return getDataTable(list);
+    }
+
+    //查询工序信息树形结构
+    @GetMapping("/treeList")
+    @ApiOperation(value = "查询工艺列表")
+    public TableDataInfo treeList(Workmanship workmanship)
+    {
+        startPage();
+        List<WorkmanshipTreeVo> list = workmanshipService.selectWorkmanshipTreeList(workmanship);
+        //处理是否是一级还是二级的问题
+        List<WorkmanshipTreeVo> collect = list.stream().map(item -> {
+            //处理一级
+            if (item.getFid() == "" || item.getFid() == null) {
+                item.setSecondLevelOrNot("false");//一级首先就改成false
+                item.setFid("");
+                if(item.getChildren().size() == 0){
+                    item.setChildren(new ArrayList<>());
+                }
+            }
+            //处理二级
+            List<WorkmanshipTreeVo> collect1 = item.getChildren().stream().map(item2 -> {
+                if (item.getFid().toString().equals("")) {
+                    item2.setSecondLevelOrNot("true");
+                    item2.setChildren(new ArrayList<>());
+                } else {
+                    item2.setSecondLevelOrNot("false");
+                    item2.setChildren(new ArrayList<>());
+                }
+                return item2;
+            }).collect(Collectors.toList());
+            item.setChildren(collect1);
+            return item;
+        }).collect(Collectors.toList());
+        return getDataTable(collect);
+    }
+
+    /**
+     * 导出工艺列表
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workmanship:export')")
+    @Log(title = "工艺", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出工艺列表")
+    public void export(HttpServletResponse response, Workmanship workmanship)
+    {
+        List<Workmanship> list = workmanshipService.selectWorkmanshipList(workmanship);
+        ExcelUtil<Workmanship> util = new ExcelUtil<Workmanship>(Workmanship.class);
+        util.exportExcel(response, list, "工艺数据");
+    }
+
+    /**
+     * 获取工艺详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workmanship:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取工艺详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(workmanshipService.selectWorkmanshipById(id));
+    }
+
+    /**
+     * 新增工艺
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workmanship:add')")
+    @Log(title = "工艺", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增工艺")
+    public AjaxResult add(@RequestBody Workmanship workmanship)
+    {
+        return toAjax(workmanshipService.insertWorkmanship(workmanship));
+    }
+
+    /**
+     * 修改工艺
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workmanship:edit')")
+    @Log(title = "工艺", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改工艺")
+    public AjaxResult edit(@RequestBody Workmanship workmanship)
+    {
+        return toAjax(workmanshipService.updateWorkmanship(workmanship));
+    }
+
+    /**
+     * 删除工艺
+     */
+    @PreAuthorize("@ss.hasPermi('amichi:workmanship:remove')")
+    @Log(title = "工艺", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除工艺")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(workmanshipService.updateWorkmanshipByIds(ids));
+    }
+}

+ 13 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/BillOfMaterials.java

@@ -48,6 +48,19 @@ public class BillOfMaterials extends BaseEntity
     @Excel(name = "用量:分母")
     private String usageDenominator;
 
+
+    /**单位 */
+    @Excel(name = "单位")
+    private String unit;
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
     /** 是否跳层 */
     @Excel(name = "是否跳层")
     private String skipOrNot;

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

@@ -0,0 +1,209 @@
+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;
+
+/**
+ * 成品库存对象 finished_goods_inventory
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public class FinishedGoodsInventory extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 产品名称 */
+    @Excel(name = "产品名称")
+    private String productName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String unit;
+
+    /** 总库存 */
+    @Excel(name = "总库存")
+    private String totalInventory;
+
+    /** 创建者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 setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    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 setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setTotalInventory(String totalInventory) 
+    {
+        this.totalInventory = totalInventory;
+    }
+
+    public String getTotalInventory() 
+    {
+        return totalInventory;
+    }
+    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("materialCode", getMaterialCode())
+            .append("productName", getProductName())
+            .append("modelNumber", getModelNumber())
+            .append("unit", getUnit())
+            .append("totalInventory", getTotalInventory())
+            .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();
+    }
+}

+ 284 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/FinishedGoodsInventoryLog.java

@@ -0,0 +1,284 @@
+package com.zkqy.amichi.domain;
+
+import java.util.Date;
+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;
+
+/**
+ * 成品入库日志信息对象 finished_goods_inventory_log
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public class FinishedGoodsInventoryLog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 产品名称 */
+    @Excel(name = "产品名称")
+    private String productName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String unit;
+
+    /** 出入库数量 */
+    @Excel(name = "出入库数量")
+    private String outInQuantity;
+
+    /** 入库单编号 */
+    @Excel(name = "入库单编号")
+    private String warehouseEntryNumber;
+
+    /** 生产单号 */
+    @Excel(name = "生产单号")
+    private String productionOrderNumber;
+
+    /** 制单时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "制单时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date documentPreparationTime;
+
+    /** 生产任务单号 */
+    @Excel(name = "生产任务单号")
+    private String productionTaskOrderNumber;
+
+    /** 制单人 */
+    @Excel(name = "制单人")
+    private String documenter;
+
+    /** 审核 */
+    @Excel(name = "审核")
+    private String auditor;
+
+
+    /** 删除标志(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(name = "任务节点编码")
+    private String typeOfOperation;
+
+    public String getTypeOfOperation() {
+        return typeOfOperation;
+    }
+
+    public void setTypeOfOperation(String typeOfOperation) {
+        this.typeOfOperation = typeOfOperation;
+    }
+
+    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 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 setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setOutInQuantity(String outInQuantity) 
+    {
+        this.outInQuantity = outInQuantity;
+    }
+
+    public String getOutInQuantity() 
+    {
+        return outInQuantity;
+    }
+    public void setWarehouseEntryNumber(String warehouseEntryNumber) 
+    {
+        this.warehouseEntryNumber = warehouseEntryNumber;
+    }
+
+    public String getWarehouseEntryNumber() 
+    {
+        return warehouseEntryNumber;
+    }
+    public void setProductionOrderNumber(String productionOrderNumber) 
+    {
+        this.productionOrderNumber = productionOrderNumber;
+    }
+
+    public String getProductionOrderNumber() 
+    {
+        return productionOrderNumber;
+    }
+    public void setDocumentPreparationTime(Date documentPreparationTime) 
+    {
+        this.documentPreparationTime = documentPreparationTime;
+    }
+
+    public Date getDocumentPreparationTime() 
+    {
+        return documentPreparationTime;
+    }
+    public void setProductionTaskOrderNumber(String productionTaskOrderNumber) 
+    {
+        this.productionTaskOrderNumber = productionTaskOrderNumber;
+    }
+
+    public String getProductionTaskOrderNumber() 
+    {
+        return productionTaskOrderNumber;
+    }
+    public void setDocumenter(String documenter) 
+    {
+        this.documenter = documenter;
+    }
+
+    public String getDocumenter() 
+    {
+        return documenter;
+    }
+    public void setAuditor(String auditor) 
+    {
+        this.auditor = auditor;
+    }
+
+    public String getAuditor() 
+    {
+        return auditor;
+    }
+
+    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("materialCode", getMaterialCode())
+            .append("productName", getProductName())
+            .append("modelNumber", getModelNumber())
+            .append("unit", getUnit())
+            .append("outInQuantity", getOutInQuantity())
+            .append("warehouseEntryNumber", getWarehouseEntryNumber())
+            .append("productionOrderNumber", getProductionOrderNumber())
+            .append("documentPreparationTime", getDocumentPreparationTime())
+            .append("productionTaskOrderNumber", getProductionTaskOrderNumber())
+            .append("documenter", getDocumenter())
+            .append("auditor", getAuditor())
+            .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();
+    }
+}

+ 195 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/OperationInstruction.java

@@ -0,0 +1,195 @@
+package com.zkqy.system.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;
+
+/**
+ * 作业指导书对象 operation_instruction
+ * 
+ * @author zkqy
+ * @date 2024-07-05
+ */
+public class OperationInstruction extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 作业指导书名称 */
+    @Excel(name = "作业指导书名称")
+    private String instructionName;
+
+    /** 作业名称 */
+    @Excel(name = "作业名称")
+    private String jobName;
+
+    /** 组件路径 */
+    @Excel(name = "组件路径")
+    private String componentPath;
+
+    /** 路由地址 */
+    @Excel(name = "路由地址")
+    private String routingAddress;
+
+    /** 创建者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 setInstructionName(String instructionName) 
+    {
+        this.instructionName = instructionName;
+    }
+
+    public String getInstructionName() 
+    {
+        return instructionName;
+    }
+    public void setJobName(String jobName) 
+    {
+        this.jobName = jobName;
+    }
+
+    public String getJobName() 
+    {
+        return jobName;
+    }
+    public void setComponentPath(String componentPath) 
+    {
+        this.componentPath = componentPath;
+    }
+
+    public String getComponentPath() 
+    {
+        return componentPath;
+    }
+    public void setRoutingAddress(String routingAddress) 
+    {
+        this.routingAddress = routingAddress;
+    }
+
+    public String getRoutingAddress() 
+    {
+        return routingAddress;
+    }
+    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("instructionName", getInstructionName())
+            .append("jobName", getJobName())
+            .append("componentPath", getComponentPath())
+            .append("routingAddress", getRoutingAddress())
+            .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();
+    }
+}

+ 223 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/StoreEntryDetails.java

@@ -0,0 +1,223 @@
+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;
+
+/**
+ * 入库单详细信息对象 store_entry_details
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public class StoreEntryDetails extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 物料编码 */
+    @Excel(name = "物料编码")
+    private String materialCode;
+
+    /** 产品名称 */
+    @Excel(name = "产品名称")
+    private String productName;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String modelNumber;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String unit;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private String quantity;
+
+    /** 创建者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;
+
+    /** 入库单id */
+    @Excel(name = "入库单id")
+    private Long warehouseEntryId;
+
+    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 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 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 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;
+    }
+    public void setWarehouseEntryId(Long warehouseEntryId) 
+    {
+        this.warehouseEntryId = warehouseEntryId;
+    }
+
+    public Long getWarehouseEntryId() 
+    {
+        return warehouseEntryId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("materialCode", getMaterialCode())
+            .append("productName", getProductName())
+            .append("modelNumber", getModelNumber())
+            .append("unit", getUnit())
+            .append("quantity", getQuantity())
+            .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("warehouseEntryId", getWarehouseEntryId())
+            .toString();
+    }
+}

+ 214 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/WarehouseEntryInformation.java

@@ -0,0 +1,214 @@
+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.time.LocalDate;
+
+/**
+ * 入库单信息对象 warehouse_entry_information
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public class WarehouseEntryInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 入库单编号 */
+    @Excel(name = "入库单编号")
+    private String warehouseEntryNumber;
+
+    /** 生产订单编号 */
+    @Excel(name = "生产订单编号")
+    private String productionOrderNumber;
+
+    /** 入库单日期 */
+    /** 申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private LocalDate dateOfReceipt;
+
+    /** 生产任务单号 */
+    @Excel(name = "生产任务单号")
+    private String productionTaskOrderNumber;
+
+    /** 审核 */
+    @Excel(name = "审核")
+    private String examine;
+
+    /** 制单人 */
+    @Excel(name = "制单人")
+    private String documenter;
+
+
+    /** 删除标志(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 = "数据审批信息", readConverterExp = "审批意见")
+    private String approvalOpinionFirst;
+
+    public String getApprovalOpinionFirst() {
+        return approvalOpinionFirst;
+    }
+
+    public void setApprovalOpinionFirst(String approvalOpinionFirst) {
+        this.approvalOpinionFirst = approvalOpinionFirst;
+    }
+
+    /** 流程编号 */
+    @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 setWarehouseEntryNumber(String warehouseEntryNumber) 
+    {
+        this.warehouseEntryNumber = warehouseEntryNumber;
+    }
+
+    public String getWarehouseEntryNumber() 
+    {
+        return warehouseEntryNumber;
+    }
+    public void setProductionOrderNumber(String productionOrderNumber) 
+    {
+        this.productionOrderNumber = productionOrderNumber;
+    }
+
+    public String getProductionOrderNumber() 
+    {
+        return productionOrderNumber;
+    }
+
+    public LocalDate getDateOfReceipt() {
+        return dateOfReceipt;
+    }
+
+    public void setDateOfReceipt(LocalDate dateOfReceipt) {
+        this.dateOfReceipt = dateOfReceipt;
+    }
+
+    public void setProductionTaskOrderNumber(String productionTaskOrderNumber)
+    {
+        this.productionTaskOrderNumber = productionTaskOrderNumber;
+    }
+
+    public String getProductionTaskOrderNumber() 
+    {
+        return productionTaskOrderNumber;
+    }
+    public void setExamine(String examine) 
+    {
+        this.examine = examine;
+    }
+
+    public String getExamine() 
+    {
+        return examine;
+    }
+    public void setDocumenter(String documenter) 
+    {
+        this.documenter = documenter;
+    }
+
+    public String getDocumenter() 
+    {
+        return documenter;
+    }
+
+    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("warehouseEntryNumber", getWarehouseEntryNumber())
+            .append("productionOrderNumber", getProductionOrderNumber())
+            .append("dateOfReceipt", getDateOfReceipt())
+            .append("productionTaskOrderNumber", getProductionTaskOrderNumber())
+            .append("examine", getExamine())
+            .append("documenter", getDocumenter())
+            .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();
+    }
+}

+ 223 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Workingprocedure.java

@@ -0,0 +1,223 @@
+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;
+
+/**
+ * 工序对象 workingprocedure
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+public class Workingprocedure extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 工艺id */
+    @Excel(name = "工艺id")
+    private Long workmanship;
+
+    /** 工序编号 */
+    @Excel(name = "工序编号")
+    private String number;
+
+    /** 工序名称 */
+    @Excel(name = "工序名称")
+    private String name;
+
+    /** 作业指导书id */
+    @Excel(name = "作业指导书id")
+    private Long guidanceId;
+
+    /** 备用1 */
+    @Excel(name = "备用1")
+    private String sparea;
+
+    /** 备用2 */
+    @Excel(name = "备用2")
+    private String spareb;
+
+    /** 创建者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 setWorkmanship(Long workmanship) 
+    {
+        this.workmanship = workmanship;
+    }
+
+    public Long getWorkmanship() 
+    {
+        return workmanship;
+    }
+    public void setNumber(String number) 
+    {
+        this.number = number;
+    }
+
+    public String getNumber() 
+    {
+        return number;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setGuidanceId(Long guidanceId) 
+    {
+        this.guidanceId = guidanceId;
+    }
+
+    public Long getGuidanceId() 
+    {
+        return guidanceId;
+    }
+    public void setSparea(String sparea) 
+    {
+        this.sparea = sparea;
+    }
+
+    public String getSparea() 
+    {
+        return sparea;
+    }
+    public void setSpareb(String spareb) 
+    {
+        this.spareb = spareb;
+    }
+
+    public String getSpareb() 
+    {
+        return spareb;
+    }
+    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("workmanship", getWorkmanship())
+            .append("number", getNumber())
+            .append("name", getName())
+            .append("guidanceId", getGuidanceId())
+            .append("sparea", getSparea())
+            .append("spareb", getSpareb())
+            .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();
+    }
+}

+ 195 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/Workmanship.java

@@ -0,0 +1,195 @@
+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;
+
+/**
+ * 工艺对象 workmanship
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+public class Workmanship extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 工艺编号 */
+    @Excel(name = "工艺编号")
+    private String number;
+
+    /** 工艺名称 */
+    @Excel(name = "工艺名称")
+    private String name;
+
+    /** 备用1 */
+    @Excel(name = "备用1")
+    private String sparea;
+
+    /** 备用2 */
+    @Excel(name = "备用2")
+    private String spareb;
+
+    /** 创建者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 setNumber(String number) 
+    {
+        this.number = number;
+    }
+
+    public String getNumber() 
+    {
+        return number;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setSparea(String sparea) 
+    {
+        this.sparea = sparea;
+    }
+
+    public String getSparea() 
+    {
+        return sparea;
+    }
+    public void setSpareb(String spareb) 
+    {
+        this.spareb = spareb;
+    }
+
+    public String getSpareb() 
+    {
+        return spareb;
+    }
+    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("number", getNumber())
+            .append("name", getName())
+            .append("sparea", getSparea())
+            .append("spareb", getSpareb())
+            .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();
+    }
+}

+ 18 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/WarehouseEntryInformationVo.java

@@ -0,0 +1,18 @@
+package com.zkqy.amichi.domain.vo;
+
+import com.zkqy.amichi.domain.StoreEntryDetails;
+import com.zkqy.amichi.domain.WarehouseEntryInformation;
+
+import java.util.List;
+
+public class WarehouseEntryInformationVo extends WarehouseEntryInformation {
+
+    private List<StoreEntryDetails> storeEntryDetails;
+
+    public List<StoreEntryDetails> getStoreEntryDetails() {
+        return storeEntryDetails;
+    }
+    public void setStoreEntryDetails(List<StoreEntryDetails> storeEntryDetails) {
+        this.storeEntryDetails = storeEntryDetails;
+    }
+}

+ 50 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/WorkmanshipTreeVo.java

@@ -0,0 +1,50 @@
+package com.zkqy.amichi.domain.vo;
+
+import java.util.List;
+
+public class WorkmanshipTreeVo {
+    private Integer id;
+    private String label;
+    private String secondLevelOrNot;
+    private String fid;
+    private List<WorkmanshipTreeVo> children;
+
+    public String getFid() {
+        return fid;
+    }
+
+    public void setFid(String fid) {
+        this.fid = fid;
+    }
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    public String getSecondLevelOrNot() {
+        return secondLevelOrNot;
+    }
+
+    public void setSecondLevelOrNot(String secondLevelOrNot) {
+        this.secondLevelOrNot = secondLevelOrNot;
+    }
+
+    public List<WorkmanshipTreeVo> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<WorkmanshipTreeVo> children) {
+        this.children = children;
+    }
+}

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.FinishedGoodsInventoryLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 成品入库日志信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Mapper
+public interface FinishedGoodsInventoryLogMapper 
+{
+    /**
+     * 查询成品入库日志信息
+     * 
+     * @param id 成品入库日志信息主键
+     * @return 成品入库日志信息
+     */
+    public FinishedGoodsInventoryLog selectFinishedGoodsInventoryLogById(Long id);
+
+    /**
+     * 查询成品入库日志信息列表
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 成品入库日志信息集合
+     */
+    public List<FinishedGoodsInventoryLog> selectFinishedGoodsInventoryLogList(FinishedGoodsInventoryLog finishedGoodsInventoryLog);
+
+    /**
+     * 新增成品入库日志信息
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 结果
+     */
+    public int insertFinishedGoodsInventoryLog(FinishedGoodsInventoryLog finishedGoodsInventoryLog);
+
+    /**
+     * 修改成品入库日志信息
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 结果
+     */
+    public int updateFinishedGoodsInventoryLog(FinishedGoodsInventoryLog finishedGoodsInventoryLog);
+
+    /**
+     * 删除成品入库日志信息
+     * 
+     * @param id 成品入库日志信息主键
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryLogById(Long id);
+
+    /**
+     * 批量删除成品入库日志信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryLogByIds(Long[] ids);
+}

+ 68 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/FinishedGoodsInventoryMapper.java

@@ -0,0 +1,68 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.FinishedGoodsInventory;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 成品库存Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Mapper
+public interface FinishedGoodsInventoryMapper 
+{
+    /**
+     * 查询成品库存
+     * 
+     * @param id 成品库存主键
+     * @return 成品库存
+     */
+    public FinishedGoodsInventory selectFinishedGoodsInventoryById(Long id);
+
+    /**
+     * 查询成品库存列表
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 成品库存集合
+     */
+    public List<FinishedGoodsInventory> selectFinishedGoodsInventoryList(FinishedGoodsInventory finishedGoodsInventory);
+
+
+
+
+
+
+    /**
+     * 新增成品库存
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 结果
+     */
+    public int insertFinishedGoodsInventory(FinishedGoodsInventory finishedGoodsInventory);
+
+    /**
+     * 修改成品库存
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 结果
+     */
+    public int updateFinishedGoodsInventory(FinishedGoodsInventory finishedGoodsInventory);
+
+    /**
+     * 删除成品库存
+     * 
+     * @param id 成品库存主键
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryById(Long id);
+
+    /**
+     * 批量删除成品库存
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryByIds(Long[] ids);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/OperationInstructionMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.system.mapper;
+
+import java.util.List;
+import com.zkqy.system.domain.OperationInstruction;
+
+/**
+ * 作业指导书Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-05
+ */
+public interface OperationInstructionMapper 
+{
+    /**
+     * 查询作业指导书
+     * 
+     * @param id 作业指导书主键
+     * @return 作业指导书
+     */
+    public OperationInstruction selectOperationInstructionById(Long id);
+
+    /**
+     * 查询作业指导书列表
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 作业指导书集合
+     */
+    public List<OperationInstruction> selectOperationInstructionList(OperationInstruction operationInstruction);
+
+    /**
+     * 新增作业指导书
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 结果
+     */
+    public int insertOperationInstruction(OperationInstruction operationInstruction);
+
+    /**
+     * 修改作业指导书
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 结果
+     */
+    public int updateOperationInstruction(OperationInstruction operationInstruction);
+
+    /**
+     * 删除作业指导书
+     * 
+     * @param id 作业指导书主键
+     * @return 结果
+     */
+    public int deleteOperationInstructionById(Long id);
+
+    /**
+     * 批量删除作业指导书
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteOperationInstructionByIds(Long[] ids);
+}

+ 92 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/StoreEntryDetailsMapper.java

@@ -0,0 +1,92 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.StoreEntryDetails;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 入库单详细信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Mapper
+public interface StoreEntryDetailsMapper 
+{
+    /**
+     * 查询入库单详细信息
+     * 
+     * @param id 入库单详细信息主键
+     * @return 入库单详细信息
+     */
+    public StoreEntryDetails selectStoreEntryDetailsById(Long id);
+
+    /**
+     * 查询入库单详细信息列表
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 入库单详细信息集合
+     */
+    public List<StoreEntryDetails> selectStoreEntryDetailsList(StoreEntryDetails storeEntryDetails);
+
+    /**
+     * 新增入库单详细信息
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 结果
+     */
+    public int insertStoreEntryDetails(StoreEntryDetails storeEntryDetails);
+
+
+    /**
+     * 批量新增入单明细信息
+     * @param storeEntryDetails
+     * @return
+     */
+    public  int insertStoreEntryDetailsBatch(List<StoreEntryDetails> storeEntryDetails);
+
+    /**
+     * 修改入库单详细信息
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 结果
+     */
+    public int updateStoreEntryDetails(StoreEntryDetails storeEntryDetails);
+
+    /**
+     * 删除入库单详细信息
+     * 
+     * @param id 入库单详细信息主键
+     * @return 结果
+     */
+    public int deleteStoreEntryDetailsById(Long id);
+
+    /**
+     * 批量删除入库单详细信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteStoreEntryDetailsByIds(Long[] ids);
+
+    /**
+     * 通过入库单id查询入库单详细信息
+     * @return
+     */
+    List<StoreEntryDetails> selectWarehouseEntryInformationByWarehouseEtryId(Long id);
+
+    /**
+     * 通过生产入库单修改入库单详情信息
+     * @param ids
+     * @return
+     */
+    int updateStoreEntryDetailsByWarehouseEtryId(@Param("sd") StoreEntryDetails storeEntryDetails, @Param("ids") Long[] ids);
+
+    /**
+     * 修改入库单详情信息状态
+     * @param storeEntryDetails
+     * @return
+     */
+    int updateStoreEntryDetailsByWarehouseEtryIdOne(StoreEntryDetails storeEntryDetails);
+}

+ 69 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/WarehouseEntryInformationMapper.java

@@ -0,0 +1,69 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.WarehouseEntryInformation;
+import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 入库单信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Mapper
+public interface WarehouseEntryInformationMapper 
+{
+    /**
+     * 查询入库单信息
+     * 
+     * @param id 入库单信息主键
+     * @return 入库单信息
+     */
+    public WarehouseEntryInformation selectWarehouseEntryInformationById(Long id);
+
+    /**
+     * 查询入库单信息列表
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 入库单信息集合
+     */
+    public List<WarehouseEntryInformation> selectWarehouseEntryInformationList(WarehouseEntryInformation warehouseEntryInformation);
+
+    /**
+     * 新增入库单信息
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 结果
+     */
+    public int insertWarehouseEntryInformation(WarehouseEntryInformation warehouseEntryInformation);
+
+    /**
+     * 修改入库单信息
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 结果
+     */
+    public int updateWarehouseEntryInformation(WarehouseEntryInformation warehouseEntryInformation);
+
+    /**
+     * 删除入库单信息
+     * 
+     * @param id 入库单信息主键
+     * @return 结果
+     */
+    public int deleteWarehouseEntryInformationById(Long id);
+
+    /**
+     * 批量删除入库单信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWarehouseEntryInformationByIds(Long[] ids);
+
+
+    void updateWarehouseEntryInformationById(@Param("wv") WarehouseEntryInformationVo warehouseEntryInformationVo,
+                                             @Param("sz") Long[] ids);
+}

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/WorkingprocedureMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Workingprocedure;
+
+/**
+ * 工序Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+public interface WorkingprocedureMapper 
+{
+    /**
+     * 查询工序
+     * 
+     * @param id 工序主键
+     * @return 工序
+     */
+    public Workingprocedure selectWorkingprocedureById(Long id);
+
+    /**
+     * 查询工序列表
+     * 
+     * @param workingprocedure 工序
+     * @return 工序集合
+     */
+    public List<Workingprocedure> selectWorkingprocedureList(Workingprocedure workingprocedure);
+
+    /**
+     * 新增工序
+     * 
+     * @param workingprocedure 工序
+     * @return 结果
+     */
+    public int insertWorkingprocedure(Workingprocedure workingprocedure);
+
+    /**
+     * 修改工序
+     * 
+     * @param workingprocedure 工序
+     * @return 结果
+     */
+    public int updateWorkingprocedure(Workingprocedure workingprocedure);
+
+    /**
+     * 删除工序
+     * 
+     * @param id 工序主键
+     * @return 结果
+     */
+    public int deleteWorkingprocedureById(Long id);
+
+    /**
+     * 批量删除工序
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWorkingprocedureByIds(Long[] ids);
+}

+ 75 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/WorkmanshipMapper.java

@@ -0,0 +1,75 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Workmanship;
+import com.zkqy.amichi.domain.vo.WorkmanshipTreeVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 工艺Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+@Mapper
+public interface WorkmanshipMapper 
+{
+    /**
+     * 查询工艺
+     * 
+     * @param id 工艺主键
+     * @return 工艺
+     */
+    public Workmanship selectWorkmanshipById(Long id);
+
+    /**
+     * 查询工艺列表
+     * 
+     * @param workmanship 工艺
+     * @return 工艺集合
+     */
+    public List<Workmanship> selectWorkmanshipList(Workmanship workmanship);
+
+    /**
+     * 新增工艺
+     * 
+     * @param workmanship 工艺
+     * @return 结果
+     */
+    public int insertWorkmanship(Workmanship workmanship);
+
+    /**
+     * 修改工艺
+     * 
+     * @param workmanship 工艺
+     * @return 结果
+     */
+    public int updateWorkmanship(Workmanship workmanship);
+
+    /**
+     * 删除工艺
+     * 
+     * @param id 工艺主键
+     * @return 结果
+     */
+    public int deleteWorkmanshipById(Long id);
+
+    /**
+     * 批量删除工艺
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWorkmanshipByIds(Long[] ids);
+
+    List<WorkmanshipTreeVo> selectWorkmanshipTreeList(Workmanship workmanship);
+
+    /**
+     * 更新删除状态
+     * @param ids
+     * @param workmanship
+     * @return
+     */
+    int updateWorkmanshipByIds(@Param("ids") Long[] ids,@Param("ws") Workmanship workmanship);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.FinishedGoodsInventoryLog;
+
+/**
+ * 成品入库日志信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public interface IFinishedGoodsInventoryLogService 
+{
+    /**
+     * 查询成品入库日志信息
+     * 
+     * @param id 成品入库日志信息主键
+     * @return 成品入库日志信息
+     */
+    public FinishedGoodsInventoryLog selectFinishedGoodsInventoryLogById(Long id);
+
+    /**
+     * 查询成品入库日志信息列表
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 成品入库日志信息集合
+     */
+    public List<FinishedGoodsInventoryLog> selectFinishedGoodsInventoryLogList(FinishedGoodsInventoryLog finishedGoodsInventoryLog);
+
+    /**
+     * 新增成品入库日志信息
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 结果
+     */
+    public int insertFinishedGoodsInventoryLog(FinishedGoodsInventoryLog finishedGoodsInventoryLog);
+
+    /**
+     * 修改成品入库日志信息
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 结果
+     */
+    public int updateFinishedGoodsInventoryLog(FinishedGoodsInventoryLog finishedGoodsInventoryLog);
+
+    /**
+     * 批量删除成品入库日志信息
+     * 
+     * @param ids 需要删除的成品入库日志信息主键集合
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryLogByIds(Long[] ids);
+
+    /**
+     * 删除成品入库日志信息信息
+     * 
+     * @param id 成品入库日志信息主键
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryLogById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.FinishedGoodsInventory;
+
+/**
+ * 成品库存Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public interface IFinishedGoodsInventoryService 
+{
+    /**
+     * 查询成品库存
+     * 
+     * @param id 成品库存主键
+     * @return 成品库存
+     */
+    public FinishedGoodsInventory selectFinishedGoodsInventoryById(Long id);
+
+    /**
+     * 查询成品库存列表
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 成品库存集合
+     */
+    public List<FinishedGoodsInventory> selectFinishedGoodsInventoryList(FinishedGoodsInventory finishedGoodsInventory);
+
+    /**
+     * 新增成品库存
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 结果
+     */
+    public int insertFinishedGoodsInventory(FinishedGoodsInventory finishedGoodsInventory);
+
+    /**
+     * 修改成品库存
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 结果
+     */
+    public int updateFinishedGoodsInventory(FinishedGoodsInventory finishedGoodsInventory);
+
+    /**
+     * 批量删除成品库存
+     * 
+     * @param ids 需要删除的成品库存主键集合
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryByIds(Long[] ids);
+
+    /**
+     * 删除成品库存信息
+     * 
+     * @param id 成品库存主键
+     * @return 结果
+     */
+    public int deleteFinishedGoodsInventoryById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.system.service;
+
+import java.util.List;
+import com.zkqy.system.domain.OperationInstruction;
+
+/**
+ * 作业指导书Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-05
+ */
+public interface IOperationInstructionService 
+{
+    /**
+     * 查询作业指导书
+     * 
+     * @param id 作业指导书主键
+     * @return 作业指导书
+     */
+    public OperationInstruction selectOperationInstructionById(Long id);
+
+    /**
+     * 查询作业指导书列表
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 作业指导书集合
+     */
+    public List<OperationInstruction> selectOperationInstructionList(OperationInstruction operationInstruction);
+
+    /**
+     * 新增作业指导书
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 结果
+     */
+    public int insertOperationInstruction(OperationInstruction operationInstruction);
+
+    /**
+     * 修改作业指导书
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 结果
+     */
+    public int updateOperationInstruction(OperationInstruction operationInstruction);
+
+    /**
+     * 批量删除作业指导书
+     * 
+     * @param ids 需要删除的作业指导书主键集合
+     * @return 结果
+     */
+    public int deleteOperationInstructionByIds(Long[] ids);
+
+    /**
+     * 删除作业指导书信息
+     * 
+     * @param id 作业指导书主键
+     * @return 结果
+     */
+    public int deleteOperationInstructionById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.StoreEntryDetails;
+
+/**
+ * 入库单详细信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public interface IStoreEntryDetailsService 
+{
+    /**
+     * 查询入库单详细信息
+     * 
+     * @param id 入库单详细信息主键
+     * @return 入库单详细信息
+     */
+    public StoreEntryDetails selectStoreEntryDetailsById(Long id);
+
+    /**
+     * 查询入库单详细信息列表
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 入库单详细信息集合
+     */
+    public List<StoreEntryDetails> selectStoreEntryDetailsList(StoreEntryDetails storeEntryDetails);
+
+    /**
+     * 新增入库单详细信息
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 结果
+     */
+    public int insertStoreEntryDetails(StoreEntryDetails storeEntryDetails);
+
+    /**
+     * 修改入库单详细信息
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 结果
+     */
+    public int updateStoreEntryDetails(StoreEntryDetails storeEntryDetails);
+
+    /**
+     * 批量删除入库单详细信息
+     * 
+     * @param ids 需要删除的入库单详细信息主键集合
+     * @return 结果
+     */
+    public int deleteStoreEntryDetailsByIds(Long[] ids);
+
+    /**
+     * 删除入库单详细信息信息
+     * 
+     * @param id 入库单详细信息主键
+     * @return 结果
+     */
+    public int deleteStoreEntryDetailsById(Long id);
+}

+ 90 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWarehouseEntryInformationService.java

@@ -0,0 +1,90 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.WarehouseEntryInformation;
+import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
+
+/**
+ * 入库单信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+public interface IWarehouseEntryInformationService 
+{
+    /**
+     * 查询入库单信息
+     * 
+     * @param id 入库单信息主键
+     * @return 入库单信息
+     */
+    public WarehouseEntryInformation selectWarehouseEntryInformationById(Long id);
+
+    /**
+     * 查询入库单信息列表
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 入库单信息集合
+     */
+    public List<WarehouseEntryInformation> selectWarehouseEntryInformationList(WarehouseEntryInformation warehouseEntryInformation);
+
+    /**
+     * 新增入库单信息
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 结果
+     */
+    public int insertWarehouseEntryInformation(WarehouseEntryInformation warehouseEntryInformation);
+
+    /**
+     * 修改入库单信息
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 结果
+     */
+    public int updateWarehouseEntryInformation(WarehouseEntryInformation warehouseEntryInformation);
+
+    /**
+     * 批量删除入库单信息
+     * 
+     * @param ids 需要删除的入库单信息主键集合
+     * @return 结果
+     */
+    public int deleteWarehouseEntryInformationByIds(Long[] ids);
+
+    /**
+     * 删除入库单信息信息
+     * 
+     * @param id 入库单信息主键
+     * @return 结果
+     */
+    public int deleteWarehouseEntryInformationById(Long id);
+
+    /**
+     * 新增入库单信息
+     * @param warehouseEntryInformationVo
+     * @return
+     */
+    int insertWarehouseEntryInformationVo(WarehouseEntryInformationVo warehouseEntryInformationVo);
+
+    /**
+     * 获取入库单详细信息
+     * @param id
+     * @return
+     */
+    WarehouseEntryInformationVo  selectWarehouseEntryInformationByIdVo(Long id);
+
+    /**
+     * 更新入库单和入库单详情
+     * @param warehouseEntryInformationvo
+     * @return
+     */
+    int updateWarehouseEntryInformationVo(WarehouseEntryInformationVo warehouseEntryInformationvo);
+
+    /**
+     * 删除入库单和入库单详情
+     * @param ids
+     * @return
+     */
+    int updateWarehouseEntryInformationByIds(Long[] ids);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Workingprocedure;
+
+/**
+ * 工序Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+public interface IWorkingprocedureService 
+{
+    /**
+     * 查询工序
+     * 
+     * @param id 工序主键
+     * @return 工序
+     */
+    public Workingprocedure selectWorkingprocedureById(Long id);
+
+    /**
+     * 查询工序列表
+     * 
+     * @param workingprocedure 工序
+     * @return 工序集合
+     */
+    public List<Workingprocedure> selectWorkingprocedureList(Workingprocedure workingprocedure);
+
+    /**
+     * 新增工序
+     * 
+     * @param workingprocedure 工序
+     * @return 结果
+     */
+    public int insertWorkingprocedure(Workingprocedure workingprocedure);
+
+    /**
+     * 修改工序
+     * 
+     * @param workingprocedure 工序
+     * @return 结果
+     */
+    public int updateWorkingprocedure(Workingprocedure workingprocedure);
+
+    /**
+     * 批量删除工序
+     * 
+     * @param ids 需要删除的工序主键集合
+     * @return 结果
+     */
+    public int deleteWorkingprocedureByIds(Long[] ids);
+
+    /**
+     * 删除工序信息
+     * 
+     * @param id 工序主键
+     * @return 结果
+     */
+    public int deleteWorkingprocedureById(Long id);
+}

+ 76 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IWorkmanshipService.java

@@ -0,0 +1,76 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.Workmanship;
+import com.zkqy.amichi.domain.vo.WorkmanshipTreeVo;
+
+/**
+ * 工艺Service接口
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+public interface IWorkmanshipService 
+{
+    /**
+     * 查询工艺
+     * 
+     * @param id 工艺主键
+     * @return 工艺
+     */
+    public Workmanship selectWorkmanshipById(Long id);
+
+    /**
+     * 查询工艺列表
+     * 
+     * @param workmanship 工艺
+     * @return 工艺集合
+     */
+    public List<Workmanship> selectWorkmanshipList(Workmanship workmanship);
+
+    /**
+     * 新增工艺
+     * 
+     * @param workmanship 工艺
+     * @return 结果
+     */
+    public int insertWorkmanship(Workmanship workmanship);
+
+    /**
+     * 修改工艺
+     * 
+     * @param workmanship 工艺
+     * @return 结果
+     */
+    public int updateWorkmanship(Workmanship workmanship);
+
+    /**
+     * 批量删除工艺
+     * 
+     * @param ids 需要删除的工艺主键集合
+     * @return 结果
+     */
+    public int deleteWorkmanshipByIds(Long[] ids);
+
+    /**
+     * 删除工艺信息
+     * 
+     * @param id 工艺主键
+     * @return 结果
+     */
+    public int deleteWorkmanshipById(Long id);
+
+    /**
+     * 查询树形结构信息
+     * @param workmanship
+     * @return
+     */
+    List<WorkmanshipTreeVo> selectWorkmanshipTreeList(Workmanship workmanship);
+
+    /**
+     * 修改工艺信息为删除状态
+     * @param ids
+     * @return
+     */
+    int updateWorkmanshipByIds(Long[] ids);
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/FinishedGoodsInventoryLogServiceImpl.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.FinishedGoodsInventoryLogMapper;
+import com.zkqy.amichi.domain.FinishedGoodsInventoryLog;
+import com.zkqy.amichi.service.IFinishedGoodsInventoryLogService;
+
+/**
+ * 成品入库日志信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Service
+public class FinishedGoodsInventoryLogServiceImpl implements IFinishedGoodsInventoryLogService 
+{
+    @Autowired
+    private FinishedGoodsInventoryLogMapper finishedGoodsInventoryLogMapper;
+
+    /**
+     * 查询成品入库日志信息
+     * 
+     * @param id 成品入库日志信息主键
+     * @return 成品入库日志信息
+     */
+    @Override
+    public FinishedGoodsInventoryLog selectFinishedGoodsInventoryLogById(Long id)
+    {
+        return finishedGoodsInventoryLogMapper.selectFinishedGoodsInventoryLogById(id);
+    }
+
+    /**
+     * 查询成品入库日志信息列表
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 成品入库日志信息
+     */
+    @Override
+    public List<FinishedGoodsInventoryLog> selectFinishedGoodsInventoryLogList(FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        return finishedGoodsInventoryLogMapper.selectFinishedGoodsInventoryLogList(finishedGoodsInventoryLog);
+    }
+
+    /**
+     * 新增成品入库日志信息
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 结果
+     */
+    @Override
+    public int insertFinishedGoodsInventoryLog(FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        finishedGoodsInventoryLog.setCreateTime(DateUtils.getNowDate());
+        return finishedGoodsInventoryLogMapper.insertFinishedGoodsInventoryLog(finishedGoodsInventoryLog);
+    }
+
+    /**
+     * 修改成品入库日志信息
+     * 
+     * @param finishedGoodsInventoryLog 成品入库日志信息
+     * @return 结果
+     */
+    @Override
+    public int updateFinishedGoodsInventoryLog(FinishedGoodsInventoryLog finishedGoodsInventoryLog)
+    {
+        finishedGoodsInventoryLog.setUpdateTime(DateUtils.getNowDate());
+        return finishedGoodsInventoryLogMapper.updateFinishedGoodsInventoryLog(finishedGoodsInventoryLog);
+    }
+
+    /**
+     * 批量删除成品入库日志信息
+     * 
+     * @param ids 需要删除的成品入库日志信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFinishedGoodsInventoryLogByIds(Long[] ids)
+    {
+        return finishedGoodsInventoryLogMapper.deleteFinishedGoodsInventoryLogByIds(ids);
+    }
+
+    /**
+     * 删除成品入库日志信息信息
+     * 
+     * @param id 成品入库日志信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFinishedGoodsInventoryLogById(Long id)
+    {
+        return finishedGoodsInventoryLogMapper.deleteFinishedGoodsInventoryLogById(id);
+    }
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/FinishedGoodsInventoryServiceImpl.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.FinishedGoodsInventoryMapper;
+import com.zkqy.amichi.domain.FinishedGoodsInventory;
+import com.zkqy.amichi.service.IFinishedGoodsInventoryService;
+
+/**
+ * 成品库存Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Service
+public class FinishedGoodsInventoryServiceImpl implements IFinishedGoodsInventoryService 
+{
+    @Autowired
+    private FinishedGoodsInventoryMapper finishedGoodsInventoryMapper;
+
+    /**
+     * 查询成品库存
+     * 
+     * @param id 成品库存主键
+     * @return 成品库存
+     */
+    @Override
+    public FinishedGoodsInventory selectFinishedGoodsInventoryById(Long id)
+    {
+        return finishedGoodsInventoryMapper.selectFinishedGoodsInventoryById(id);
+    }
+
+    /**
+     * 查询成品库存列表
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 成品库存
+     */
+    @Override
+    public List<FinishedGoodsInventory> selectFinishedGoodsInventoryList(FinishedGoodsInventory finishedGoodsInventory)
+    {
+        return finishedGoodsInventoryMapper.selectFinishedGoodsInventoryList(finishedGoodsInventory);
+    }
+
+    /**
+     * 新增成品库存
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 结果
+     */
+    @Override
+    public int insertFinishedGoodsInventory(FinishedGoodsInventory finishedGoodsInventory)
+    {
+        finishedGoodsInventory.setCreateTime(DateUtils.getNowDate());
+        return finishedGoodsInventoryMapper.insertFinishedGoodsInventory(finishedGoodsInventory);
+    }
+
+    /**
+     * 修改成品库存
+     * 
+     * @param finishedGoodsInventory 成品库存
+     * @return 结果
+     */
+    @Override
+    public int updateFinishedGoodsInventory(FinishedGoodsInventory finishedGoodsInventory)
+    {
+        finishedGoodsInventory.setUpdateTime(DateUtils.getNowDate());
+        return finishedGoodsInventoryMapper.updateFinishedGoodsInventory(finishedGoodsInventory);
+    }
+
+    /**
+     * 批量删除成品库存
+     * 
+     * @param ids 需要删除的成品库存主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFinishedGoodsInventoryByIds(Long[] ids)
+    {
+        return finishedGoodsInventoryMapper.deleteFinishedGoodsInventoryByIds(ids);
+    }
+
+    /**
+     * 删除成品库存信息
+     * 
+     * @param id 成品库存主键
+     * @return 结果
+     */
+    @Override
+    public int deleteFinishedGoodsInventoryById(Long id)
+    {
+        return finishedGoodsInventoryMapper.deleteFinishedGoodsInventoryById(id);
+    }
+}

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

@@ -0,0 +1,96 @@
+package com.zkqy.system.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.system.mapper.OperationInstructionMapper;
+import com.zkqy.system.domain.OperationInstruction;
+import com.zkqy.system.service.IOperationInstructionService;
+
+/**
+ * 作业指导书Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-05
+ */
+@Service
+public class OperationInstructionServiceImpl implements IOperationInstructionService 
+{
+    @Autowired
+    private OperationInstructionMapper operationInstructionMapper;
+
+    /**
+     * 查询作业指导书
+     * 
+     * @param id 作业指导书主键
+     * @return 作业指导书
+     */
+    @Override
+    public OperationInstruction selectOperationInstructionById(Long id)
+    {
+        return operationInstructionMapper.selectOperationInstructionById(id);
+    }
+
+    /**
+     * 查询作业指导书列表
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 作业指导书
+     */
+    @Override
+    public List<OperationInstruction> selectOperationInstructionList(OperationInstruction operationInstruction)
+    {
+        return operationInstructionMapper.selectOperationInstructionList(operationInstruction);
+    }
+
+    /**
+     * 新增作业指导书
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 结果
+     */
+    @Override
+    public int insertOperationInstruction(OperationInstruction operationInstruction)
+    {
+        operationInstruction.setCreateTime(DateUtils.getNowDate());
+        return operationInstructionMapper.insertOperationInstruction(operationInstruction);
+    }
+
+    /**
+     * 修改作业指导书
+     * 
+     * @param operationInstruction 作业指导书
+     * @return 结果
+     */
+    @Override
+    public int updateOperationInstruction(OperationInstruction operationInstruction)
+    {
+        operationInstruction.setUpdateTime(DateUtils.getNowDate());
+        return operationInstructionMapper.updateOperationInstruction(operationInstruction);
+    }
+
+    /**
+     * 批量删除作业指导书
+     * 
+     * @param ids 需要删除的作业指导书主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOperationInstructionByIds(Long[] ids)
+    {
+        return operationInstructionMapper.deleteOperationInstructionByIds(ids);
+    }
+
+    /**
+     * 删除作业指导书信息
+     * 
+     * @param id 作业指导书主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOperationInstructionById(Long id)
+    {
+        return operationInstructionMapper.deleteOperationInstructionById(id);
+    }
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StoreEntryDetailsServiceImpl.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.StoreEntryDetailsMapper;
+import com.zkqy.amichi.domain.StoreEntryDetails;
+import com.zkqy.amichi.service.IStoreEntryDetailsService;
+
+/**
+ * 入库单详细信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Service
+public class StoreEntryDetailsServiceImpl implements IStoreEntryDetailsService 
+{
+    @Autowired
+    private StoreEntryDetailsMapper storeEntryDetailsMapper;
+
+    /**
+     * 查询入库单详细信息
+     * 
+     * @param id 入库单详细信息主键
+     * @return 入库单详细信息
+     */
+    @Override
+    public StoreEntryDetails selectStoreEntryDetailsById(Long id)
+    {
+        return storeEntryDetailsMapper.selectStoreEntryDetailsById(id);
+    }
+
+    /**
+     * 查询入库单详细信息列表
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 入库单详细信息
+     */
+    @Override
+    public List<StoreEntryDetails> selectStoreEntryDetailsList(StoreEntryDetails storeEntryDetails)
+    {
+        return storeEntryDetailsMapper.selectStoreEntryDetailsList(storeEntryDetails);
+    }
+
+    /**
+     * 新增入库单详细信息
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 结果
+     */
+    @Override
+    public int insertStoreEntryDetails(StoreEntryDetails storeEntryDetails)
+    {
+        storeEntryDetails.setCreateTime(DateUtils.getNowDate());
+        return storeEntryDetailsMapper.insertStoreEntryDetails(storeEntryDetails);
+    }
+
+    /**
+     * 修改入库单详细信息
+     * 
+     * @param storeEntryDetails 入库单详细信息
+     * @return 结果
+     */
+    @Override
+    public int updateStoreEntryDetails(StoreEntryDetails storeEntryDetails)
+    {
+        storeEntryDetails.setUpdateTime(DateUtils.getNowDate());
+        return storeEntryDetailsMapper.updateStoreEntryDetails(storeEntryDetails);
+    }
+
+    /**
+     * 批量删除入库单详细信息
+     * 
+     * @param ids 需要删除的入库单详细信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteStoreEntryDetailsByIds(Long[] ids)
+    {
+        return storeEntryDetailsMapper.deleteStoreEntryDetailsByIds(ids);
+    }
+
+    /**
+     * 删除入库单详细信息信息
+     * 
+     * @param id 入库单详细信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteStoreEntryDetailsById(Long id)
+    {
+        return storeEntryDetailsMapper.deleteStoreEntryDetailsById(id);
+    }
+}

+ 235 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WarehouseEntryInformationServiceImpl.java

@@ -0,0 +1,235 @@
+package com.zkqy.amichi.service.impl;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.zkqy.amichi.domain.*;
+import com.zkqy.amichi.domain.vo.WarehouseEntryInformationVo;
+import com.zkqy.amichi.mapper.*;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.service.IWarehouseEntryInformationService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 入库单信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-03
+ */
+@Service
+public class WarehouseEntryInformationServiceImpl implements IWarehouseEntryInformationService 
+{
+    @Autowired
+    private WarehouseEntryInformationMapper warehouseEntryInformationMapper;
+
+
+    @Autowired
+    private StoreEntryDetailsMapper storeEntryDetailsMapper;
+
+    @Autowired
+    private FinishedGoodsInventoryMapper finishedGoodsInventoryMapper;
+
+    @Autowired
+    private FinishedGoodsInventoryLogMapper finishedGoodsInventoryLogMapper;
+    /**
+     * 查询入库单信息
+     * 
+     * @param id 入库单信息主键
+     * @return 入库单信息
+     */
+    @Override
+    public WarehouseEntryInformation selectWarehouseEntryInformationById(Long id)
+    {
+        return warehouseEntryInformationMapper.selectWarehouseEntryInformationById(id);
+    }
+
+    /**
+     * 查询入库单信息列表
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 入库单信息
+     */
+    @Override
+    public List<WarehouseEntryInformation> selectWarehouseEntryInformationList(WarehouseEntryInformation warehouseEntryInformation)
+    {
+        return warehouseEntryInformationMapper.selectWarehouseEntryInformationList(warehouseEntryInformation);
+    }
+
+    /**
+     * 新增入库单信息
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 结果
+     */
+    @Override
+    public int insertWarehouseEntryInformation(WarehouseEntryInformation warehouseEntryInformation)
+    {
+        warehouseEntryInformation.setCreateTime(DateUtils.getNowDate());
+        return warehouseEntryInformationMapper.insertWarehouseEntryInformation(warehouseEntryInformation);
+    }
+
+    /**
+     * 修改入库单信息
+     * 
+     * @param warehouseEntryInformation 入库单信息
+     * @return 结果
+     */
+    @Override
+    public int updateWarehouseEntryInformation(WarehouseEntryInformation warehouseEntryInformation)
+    {
+        warehouseEntryInformation.setUpdateTime(DateUtils.getNowDate());
+        if(warehouseEntryInformation.getDataApprovalStatus().toString().equals("1")){//审核通过
+            //合并入库信息
+            //下查询有没有当前的入库单详细信息
+            List<StoreEntryDetails> storeEntryDetails = storeEntryDetailsMapper.selectWarehouseEntryInformationByWarehouseEtryId(warehouseEntryInformation.getId());
+            if(storeEntryDetails.size()>0){
+                //更新入库单信息
+                storeEntryDetails.stream().forEach(storeEntryDetail -> {
+                    FinishedGoodsInventory finishedGoodsInventory = new FinishedGoodsInventory();
+                    finishedGoodsInventory.setMaterialCode(storeEntryDetail.getMaterialCode());
+                    finishedGoodsInventory.setProductName(storeEntryDetail.getProductName());
+                    List<FinishedGoodsInventory> finishedGoodsInventories = finishedGoodsInventoryMapper.selectFinishedGoodsInventoryList(finishedGoodsInventory);
+                    if(finishedGoodsInventories.size()>0){
+                        //更新成品库存信息
+                        FinishedGoodsInventory finishedGoodsInventory1 = finishedGoodsInventories.get(0);
+                        //老的库存
+                        String totalInventory = finishedGoodsInventory1.getTotalInventory();
+                        String newTotalInventory = Double.parseDouble(totalInventory) + storeEntryDetail.getQuantity();
+                        finishedGoodsInventory1.setTotalInventory(newTotalInventory);
+                        finishedGoodsInventoryMapper.updateFinishedGoodsInventory(finishedGoodsInventory1);
+                        //添加入库日志
+                        FinishedGoodsInventoryLog finishedGoodsInventoryLog = new FinishedGoodsInventoryLog();
+                        BeanUtils.copyProperties(storeEntryDetail,finishedGoodsInventoryLog);
+                        finishedGoodsInventoryLogMapper.insertFinishedGoodsInventoryLog(finishedGoodsInventoryLog);
+                    }else{
+                        //新增成品库存信息
+                        BeanUtils.copyProperties(storeEntryDetail,finishedGoodsInventory);
+                        finishedGoodsInventoryMapper.insertFinishedGoodsInventory(finishedGoodsInventory);
+                        //添加入库日志
+                        FinishedGoodsInventoryLog finishedGoodsInventoryLog = new FinishedGoodsInventoryLog();
+                        BeanUtils.copyProperties(storeEntryDetail,finishedGoodsInventoryLog);
+                        finishedGoodsInventoryLogMapper.insertFinishedGoodsInventoryLog(finishedGoodsInventoryLog);
+                    }
+                });
+            }
+        }
+        return warehouseEntryInformationMapper.updateWarehouseEntryInformation(warehouseEntryInformation);
+    }
+
+    /**
+     * 批量删除入库单信息
+     * @param ids 需要删除的入库单信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWarehouseEntryInformationByIds(Long[] ids)
+    {
+        return warehouseEntryInformationMapper.deleteWarehouseEntryInformationByIds(ids);
+    }
+
+    /**
+     * 删除入库单信息信息
+     * 
+     * @param id 入库单信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWarehouseEntryInformationById(Long id)
+    {
+        return warehouseEntryInformationMapper.deleteWarehouseEntryInformationById(id);
+    }
+
+    @Override
+    @Transactional
+    public int insertWarehouseEntryInformationVo(WarehouseEntryInformationVo warehouseEntryInformationVo) {
+        //新增入库单信息
+        warehouseEntryInformationVo.setCreateTime(new Date());
+        warehouseEntryInformationVo.setCreateById(SecurityUtils.getUserId());
+        warehouseEntryInformationVo.setCreateBy(SecurityUtils.getUsername());
+        warehouseEntryInformationVo.setDocumenter(SecurityUtils.getUsername());//制单人
+        warehouseEntryInformationVo.setDataApprovalStatus("3");//0未发起,1待审批,2已通过,3已驳回
+        int i = warehouseEntryInformationMapper.insertWarehouseEntryInformation(warehouseEntryInformationVo);
+        List<StoreEntryDetails> collect = warehouseEntryInformationVo.getStoreEntryDetails().stream()
+                .map(storeEntryDetails -> {
+                    storeEntryDetails.setWarehouseEntryId(warehouseEntryInformationVo.getId());
+                    storeEntryDetails.setCreateTime(new Date());
+                    storeEntryDetails.setDelFlag("0");
+                    storeEntryDetails.setCreateById(SecurityUtils.getUserId());
+                    storeEntryDetails.setCreateBy(SecurityUtils.getUsername());
+                    return storeEntryDetails;
+                }).collect(Collectors.toList());
+        storeEntryDetailsMapper.insertStoreEntryDetailsBatch(collect);
+        //新增入库单明细信息
+        return 1;
+    }
+
+    @Override
+    public WarehouseEntryInformationVo selectWarehouseEntryInformationByIdVo(Long id) {
+        WarehouseEntryInformationVo warehouseEntryInformationVo = new WarehouseEntryInformationVo();
+        WarehouseEntryInformation warehouseEntryInformation = warehouseEntryInformationMapper.selectWarehouseEntryInformationById(id);
+        BeanUtils.copyProperties(warehouseEntryInformation,warehouseEntryInformationVo);//拷贝赋值
+        List<StoreEntryDetails> storeEntryDetails = storeEntryDetailsMapper.selectWarehouseEntryInformationByWarehouseEtryId(warehouseEntryInformation.getId());
+        warehouseEntryInformationVo.setStoreEntryDetails(storeEntryDetails);
+        return warehouseEntryInformationVo;
+    }
+
+    @Override
+    @Transactional
+    public int updateWarehouseEntryInformationVo(WarehouseEntryInformationVo warehouseEntryInformationvo) {
+        warehouseEntryInformationvo.setDelFlag("0");
+        warehouseEntryInformationvo.setUpdateTime(DateUtils.getNowDate());
+        warehouseEntryInformationvo.setUpdateBy(SecurityUtils.getUsername());
+        warehouseEntryInformationvo.setUpdateById(SecurityUtils.getUserId());
+        //删除入库单信息
+        warehouseEntryInformationMapper.updateWarehouseEntryInformation(warehouseEntryInformationvo);
+//        //删除旧的采购单数据
+//        List<Long> collect = warehouseEntryInformationvo.getStoreEntryDetails().stream().map(StoreEntryDetails::getWarehouseEntryId).collect(Collectors.toList());
+//        if (collect.size() > 0) {
+//            // 使用流和map将List<String>转换为Long[]
+//            Long[] longArray = collect.stream() // 将String转换为Long
+//                    .toArray(Long[]::new);
+//            //逻辑删除
+//           int i= storeEntryDetailsMapper.updateStoreEntryDetailsByWarehouseEtryId(longArray);
+//        }
+        StoreEntryDetails storeEntryDetails = new StoreEntryDetails();
+        storeEntryDetails.setWarehouseEntryId(warehouseEntryInformationvo.getId());
+        storeEntryDetails.setDelFlag("1");
+        storeEntryDetails.setUpdateTime(DateUtils.getNowDate());
+        storeEntryDetails.setUpdateBy(SecurityUtils.getUsername());
+        storeEntryDetails.setUpdateById(SecurityUtils.getUserId());
+        int i = storeEntryDetailsMapper.updateStoreEntryDetailsByWarehouseEtryIdOne(storeEntryDetails);
+        List<StoreEntryDetails> collect = warehouseEntryInformationvo.getStoreEntryDetails().stream().map(storeEntryDetail -> {
+            storeEntryDetail.setDelFlag("0");
+            storeEntryDetails.setWarehouseEntryId(warehouseEntryInformationvo.getId());
+            return storeEntryDetail;
+        }).collect(Collectors.toList());
+        int i1 = storeEntryDetailsMapper.insertStoreEntryDetailsBatch(collect);
+        //删除入库单明细信息
+        return 1;
+    }
+
+    @Override
+    public int updateWarehouseEntryInformationByIds(Long[] ids) {
+        WarehouseEntryInformationVo warehouseEntryInformationVo = new WarehouseEntryInformationVo();
+        warehouseEntryInformationVo.setDelFlag("1");
+        warehouseEntryInformationVo.setUpdateTime(DateUtils.getNowDate());
+        warehouseEntryInformationVo.setUpdateBy(SecurityUtils.getUsername());
+        warehouseEntryInformationVo.setUpdateById(SecurityUtils.getUserId());
+        //删除入库单信息
+        warehouseEntryInformationMapper.updateWarehouseEntryInformationById(warehouseEntryInformationVo,ids);
+        //删除入库单详细信息
+        StoreEntryDetails storeEntryDetails = new StoreEntryDetails();
+        storeEntryDetails.setDelFlag("1");
+        storeEntryDetails.setUpdateTime(DateUtils.getNowDate());
+        storeEntryDetails.setUpdateBy(SecurityUtils.getUsername());
+        storeEntryDetails.setUpdateById(SecurityUtils.getUserId());
+        storeEntryDetailsMapper.updateStoreEntryDetailsByWarehouseEtryId(storeEntryDetails,ids);
+        return 1;
+    }
+}

+ 96 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WorkingprocedureServiceImpl.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.WorkingprocedureMapper;
+import com.zkqy.amichi.domain.Workingprocedure;
+import com.zkqy.amichi.service.IWorkingprocedureService;
+
+/**
+ * 工序Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+@Service
+public class WorkingprocedureServiceImpl implements IWorkingprocedureService 
+{
+    @Autowired
+    private WorkingprocedureMapper workingprocedureMapper;
+
+    /**
+     * 查询工序
+     * 
+     * @param id 工序主键
+     * @return 工序
+     */
+    @Override
+    public Workingprocedure selectWorkingprocedureById(Long id)
+    {
+        return workingprocedureMapper.selectWorkingprocedureById(id);
+    }
+
+    /**
+     * 查询工序列表
+     * 
+     * @param workingprocedure 工序
+     * @return 工序
+     */
+    @Override
+    public List<Workingprocedure> selectWorkingprocedureList(Workingprocedure workingprocedure)
+    {
+        return workingprocedureMapper.selectWorkingprocedureList(workingprocedure);
+    }
+
+    /**
+     * 新增工序
+     * 
+     * @param workingprocedure 工序
+     * @return 结果
+     */
+    @Override
+    public int insertWorkingprocedure(Workingprocedure workingprocedure)
+    {
+        workingprocedure.setCreateTime(DateUtils.getNowDate());
+        return workingprocedureMapper.insertWorkingprocedure(workingprocedure);
+    }
+
+    /**
+     * 修改工序
+     * 
+     * @param workingprocedure 工序
+     * @return 结果
+     */
+    @Override
+    public int updateWorkingprocedure(Workingprocedure workingprocedure)
+    {
+        workingprocedure.setUpdateTime(DateUtils.getNowDate());
+        return workingprocedureMapper.updateWorkingprocedure(workingprocedure);
+    }
+
+    /**
+     * 批量删除工序
+     * 
+     * @param ids 需要删除的工序主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkingprocedureByIds(Long[] ids)
+    {
+        return workingprocedureMapper.deleteWorkingprocedureByIds(ids);
+    }
+
+    /**
+     * 删除工序信息
+     * 
+     * @param id 工序主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkingprocedureById(Long id)
+    {
+        return workingprocedureMapper.deleteWorkingprocedureById(id);
+    }
+}

+ 120 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/WorkmanshipServiceImpl.java

@@ -0,0 +1,120 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import com.zkqy.amichi.domain.vo.WorkmanshipTreeVo;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.WorkmanshipMapper;
+import com.zkqy.amichi.domain.Workmanship;
+import com.zkqy.amichi.service.IWorkmanshipService;
+
+/**
+ * 工艺Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-07-04
+ */
+@Service
+public class WorkmanshipServiceImpl implements IWorkmanshipService 
+{
+    @Autowired
+    private WorkmanshipMapper workmanshipMapper;
+
+    /**
+     * 查询工艺
+     * 
+     * @param id 工艺主键
+     * @return 工艺
+     */
+    @Override
+    public Workmanship selectWorkmanshipById(Long id)
+    {
+        return workmanshipMapper.selectWorkmanshipById(id);
+    }
+
+    /**
+     * 查询工艺列表
+     * 
+     * @param workmanship 工艺
+     * @return 工艺
+     */
+    @Override
+    public List<Workmanship> selectWorkmanshipList(Workmanship workmanship)
+    {
+        return workmanshipMapper.selectWorkmanshipList(workmanship);
+    }
+
+    /**
+     * 新增工艺
+     * 
+     * @param workmanship 工艺
+     * @return 结果
+     */
+    @Override
+    public int insertWorkmanship(Workmanship workmanship)
+    {
+        workmanship.setDelFlag("0");
+        workmanship.setCreateTime(DateUtils.getNowDate());
+        workmanship.setCreateById(SecurityUtils.getLoginUser().getUserId());
+        workmanship.setCreateBy(SecurityUtils.getUsername());
+        return workmanshipMapper.insertWorkmanship(workmanship);
+    }
+
+    /**
+     * 修改工艺
+     * 
+     * @param workmanship 工艺
+     * @return 结果
+     */
+    @Override
+    public int updateWorkmanship(Workmanship workmanship)
+    {
+        workmanship.setUpdateTime(DateUtils.getNowDate());
+        return workmanshipMapper.updateWorkmanship(workmanship);
+    }
+
+    /**
+     * 批量删除工艺
+     * 
+     * @param ids 需要删除的工艺主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkmanshipByIds(Long[] ids)
+    {
+        return workmanshipMapper.deleteWorkmanshipByIds(ids);
+    }
+
+    /**
+     * 删除工艺信息
+     * 
+     * @param id 工艺主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWorkmanshipById(Long id)
+    {
+        return workmanshipMapper.deleteWorkmanshipById(id);
+    }
+
+    @Override
+    public List<WorkmanshipTreeVo> selectWorkmanshipTreeList(Workmanship workmanship) {
+        List<WorkmanshipTreeVo> workmanshipTreeVos = workmanshipMapper.selectWorkmanshipTreeList(workmanship);
+        return workmanshipTreeVos;
+    }
+
+    @Override
+    public int updateWorkmanshipByIds(Long[] ids) {
+        Workmanship workmanship = new Workmanship();
+        workmanship.setUpdateTime(new Date());
+        workmanship.setUpdateById(SecurityUtils.getUserId());
+        workmanship.setUpdateBy(SecurityUtils.getUsername());
+        workmanship.setDelFlag("1");
+        workmanshipMapper.updateWorkmanshipByIds(ids,workmanship);
+        return 1;
+    }
+}

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

@@ -47,10 +47,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="processKey"    column="process_key"    />
         <result property="taskProcessKey"    column="task_process_key"    />
         <result property="taskNodeKey"    column="task_node_key"    />
+        <result property="unit" column="unit"/>
     </resultMap>
 
     <sql id="selectBillOfMaterialsVo">
-        select id, fid, material_code, material_name, model_number, specification, dosage_molecular, usage_denominator, skip_or_not, material_property, data_state, bom_version, material_issue_method, job, subitem_type, standard_dosage, actual_quantity, auxiliary_attribute, dosage_type, fixed_loss, change_the_attrition_rate, alternative_strategy, alternative_mode, substitute_material, effective_date, expiration_date, presence_of_cobyproducts, standard_subitem_usage, actual_subitem_usage, inventory, 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.bill_of_materials
+        select id, fid, material_code, material_name, model_number, specification, dosage_molecular, usage_denominator, skip_or_not, material_property, data_state, bom_version, material_issue_method, job, subitem_type, standard_dosage, actual_quantity, auxiliary_attribute, dosage_type, fixed_loss, change_the_attrition_rate, alternative_strategy, alternative_mode, substitute_material, effective_date, expiration_date, presence_of_cobyproducts, standard_subitem_usage, actual_subitem_usage, inventory, 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,unit from fjqydb.bill_of_materials
     </sql>
 
     <select id="selectBillOfMaterialsList" parameterType="com.zkqy.amichi.domain.BillOfMaterials" resultMap="BillOfMaterialsResult">
@@ -144,6 +145,7 @@ 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>
+            <if test="unit != null">unit,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="fid != null">#{fid},</if>
@@ -187,6 +189,7 @@ 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>
+            <if test="unit != null">#{unit},</if>
          </trim>
     </insert>
 
@@ -234,6 +237,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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="unit != null">unit=#{unit},</if>
         </trim>
         where id = #{id}
     </update>

+ 166 - 0
zkqy-fujian-amichi/src/main/resources/mapper/FinishedGoodsInventoryLogMapper.xml

@@ -0,0 +1,166 @@
+<?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.FinishedGoodsInventoryLogMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.FinishedGoodsInventoryLog" id="FinishedGoodsInventoryLogResult">
+        <result property="id"    column="id"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="productName"    column="product_name"    />
+        <result property="modelNumber"    column="model_number"    />
+        <result property="unit"    column="unit"    />
+        <result property="outInQuantity"    column="out_in_quantity"    />
+        <result property="warehouseEntryNumber"    column="warehouse_entry_number"    />
+        <result property="productionOrderNumber"    column="production_order_number"    />
+        <result property="documentPreparationTime"    column="document_preparation_time"    />
+        <result property="productionTaskOrderNumber"    column="production_task_order_number"    />
+        <result property="documenter"    column="documenter"    />
+        <result property="auditor"    column="auditor"    />
+        <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="typeOfOperation"    column="type_of_operation"    />
+    </resultMap>
+
+    <sql id="selectFinishedGoodsInventoryLogVo">
+        select id, material_code, product_name, model_number, unit, out_in_quantity, warehouse_entry_number, production_order_number, document_preparation_time, production_task_order_number, documenter, auditor, 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,typeOfOperation from {DBNAME}.finished_goods_inventory_log
+    </sql>
+
+    <select id="selectFinishedGoodsInventoryLogList" parameterType="com.zkqy.amichi.domain.FinishedGoodsInventoryLog" resultMap="FinishedGoodsInventoryLogResult">
+        <include refid="selectFinishedGoodsInventoryLogVo"/>
+        <where>  
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</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="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="outInQuantity != null  and outInQuantity != ''"> and out_in_quantity = #{outInQuantity}</if>
+            <if test="warehouseEntryNumber != null  and warehouseEntryNumber != ''"> and warehouse_entry_number = #{warehouseEntryNumber}</if>
+            <if test="productionOrderNumber != null  and productionOrderNumber != ''"> and production_order_number = #{productionOrderNumber}</if>
+            <if test="documentPreparationTime != null "> and document_preparation_time = #{documentPreparationTime}</if>
+            <if test="productionTaskOrderNumber != null  and productionTaskOrderNumber != ''"> and production_task_order_number = #{productionTaskOrderNumber}</if>
+            <if test="documenter != null  and documenter != ''"> and documenter = #{documenter}</if>
+            <if test="auditor != null  and auditor != ''"> and auditor = #{auditor}</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="typeOfOperation != null  and typeOfOperation != ''"> and type_of_operation = #{typeOfOperation}</if>
+            and del_flag = 0
+        </where>
+    </select>
+    
+    <select id="selectFinishedGoodsInventoryLogById" parameterType="Long" resultMap="FinishedGoodsInventoryLogResult">
+        <include refid="selectFinishedGoodsInventoryLogVo"/>
+        where id = #{id} and  and del_flag = 0
+    </select>
+        
+    <insert id="insertFinishedGoodsInventoryLog" parameterType="com.zkqy.amichi.domain.FinishedGoodsInventoryLog" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.finished_goods_inventory_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">material_code,</if>
+            <if test="productName != null">product_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="unit != null">unit,</if>
+            <if test="outInQuantity != null">out_in_quantity,</if>
+            <if test="warehouseEntryNumber != null">warehouse_entry_number,</if>
+            <if test="productionOrderNumber != null">production_order_number,</if>
+            <if test="documentPreparationTime != null">document_preparation_time,</if>
+            <if test="productionTaskOrderNumber != null">production_task_order_number,</if>
+            <if test="documenter != null">documenter,</if>
+            <if test="auditor != null">auditor,</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="typeOfOperation != null">type_of_operation,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="productName != null">#{productName},</if>
+            <if test="modelNumber != null">#{modelNumber},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="outInQuantity != null">#{outInQuantity},</if>
+            <if test="warehouseEntryNumber != null">#{warehouseEntryNumber},</if>
+            <if test="productionOrderNumber != null">#{productionOrderNumber},</if>
+            <if test="documentPreparationTime != null">#{documentPreparationTime},</if>
+            <if test="productionTaskOrderNumber != null">#{productionTaskOrderNumber},</if>
+            <if test="documenter != null">#{documenter},</if>
+            <if test="auditor != null">#{auditor},</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="typeOfOperation != null">#{typeOfOperation},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFinishedGoodsInventoryLog" parameterType="com.zkqy.amichi.domain.FinishedGoodsInventoryLog">
+        update {DBNAME}.finished_goods_inventory_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="productName != null">product_name = #{productName},</if>
+            <if test="modelNumber != null">model_number = #{modelNumber},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="outInQuantity != null">out_in_quantity = #{outInQuantity},</if>
+            <if test="warehouseEntryNumber != null">warehouse_entry_number = #{warehouseEntryNumber},</if>
+            <if test="productionOrderNumber != null">production_order_number = #{productionOrderNumber},</if>
+            <if test="documentPreparationTime != null">document_preparation_time = #{documentPreparationTime},</if>
+            <if test="productionTaskOrderNumber != null">production_task_order_number = #{productionTaskOrderNumber},</if>
+            <if test="documenter != null">documenter = #{documenter},</if>
+            <if test="auditor != null">auditor = #{auditor},</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="typeOfOperation != null">type_of_operation = #{typeOfOperation},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFinishedGoodsInventoryLogById" parameterType="Long">
+        delete from {DBNAME}.finished_goods_inventory_log where id = #{id}
+    </delete>
+
+    <delete id="deleteFinishedGoodsInventoryLogByIds" parameterType="String">
+        delete from {DBNAME}.finished_goods_inventory_log where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 132 - 0
zkqy-fujian-amichi/src/main/resources/mapper/FinishedGoodsInventoryMapper.xml

@@ -0,0 +1,132 @@
+<?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.FinishedGoodsInventoryMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.FinishedGoodsInventory" id="FinishedGoodsInventoryResult">
+        <result property="id"    column="id"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="productName"    column="product_name"    />
+        <result property="modelNumber"    column="model_number"    />
+        <result property="unit"    column="unit"    />
+        <result property="totalInventory"    column="total_inventory"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectFinishedGoodsInventoryVo">
+        select id, material_code, product_name, model_number, unit, total_inventory, 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}.finished_goods_inventory
+    </sql>
+
+    <select id="selectFinishedGoodsInventoryList" parameterType="com.zkqy.amichi.domain.FinishedGoodsInventory" resultMap="FinishedGoodsInventoryResult">
+        <include refid="selectFinishedGoodsInventoryVo"/>
+        <where>  
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</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="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="totalInventory != null  and totalInventory != ''"> and total_inventory = #{totalInventory}</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>
+
+    </select>
+    
+    <select id="selectFinishedGoodsInventoryById" parameterType="Long" resultMap="FinishedGoodsInventoryResult">
+        <include refid="selectFinishedGoodsInventoryVo"/>
+        where id = #{id} and  and del_flag = 0
+    </select>
+        
+    <insert id="insertFinishedGoodsInventory" parameterType="com.zkqy.amichi.domain.FinishedGoodsInventory" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.finished_goods_inventory
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">material_code,</if>
+            <if test="productName != null">product_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="unit != null">unit,</if>
+            <if test="totalInventory != null">total_inventory,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="productName != null">#{productName},</if>
+            <if test="modelNumber != null">#{modelNumber},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="totalInventory != null">#{totalInventory},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateFinishedGoodsInventory" parameterType="com.zkqy.amichi.domain.FinishedGoodsInventory">
+        update {DBNAME}.finished_goods_inventory
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="productName != null">product_name = #{productName},</if>
+            <if test="modelNumber != null">model_number = #{modelNumber},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="totalInventory != null">total_inventory = #{totalInventory},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteFinishedGoodsInventoryById" parameterType="Long">
+        delete from {DBNAME}.finished_goods_inventory where id = #{id}
+    </delete>
+
+    <delete id="deleteFinishedGoodsInventoryByIds" parameterType="String">
+        delete from {DBNAME}.finished_goods_inventory where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 125 - 0
zkqy-fujian-amichi/src/main/resources/mapper/OperationInstructionMapper.xml

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.system.mapper.OperationInstructionMapper">
+    
+    <resultMap type="com.zkqy.system.domain.OperationInstruction" id="OperationInstructionResult">
+        <result property="id"    column="id"    />
+        <result property="instructionName"    column="instruction_name"    />
+        <result property="jobName"    column="job_name"    />
+        <result property="componentPath"    column="component_path"    />
+        <result property="routingAddress"    column="routing_address"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectOperationInstructionVo">
+        select id, instruction_name, job_name, component_path, routing_address, 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}.operation_instruction
+    </sql>
+
+    <select id="selectOperationInstructionList" parameterType="com.zkqy.system.domain.OperationInstruction" resultMap="OperationInstructionResult">
+        <include refid="selectOperationInstructionVo"/>
+        <where>  
+            <if test="instructionName != null  and instructionName != ''"> and instruction_name like concat('%', #{instructionName}, '%')</if>
+            <if test="jobName != null  and jobName != ''"> and job_name like concat('%', #{jobName}, '%')</if>
+            <if test="componentPath != null  and componentPath != ''"> and component_path = #{componentPath}</if>
+            <if test="routingAddress != null  and routingAddress != ''"> and routing_address = #{routingAddress}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectOperationInstructionById" parameterType="Long" resultMap="OperationInstructionResult">
+        <include refid="selectOperationInstructionVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertOperationInstruction" parameterType="com.zkqy.system.domain.OperationInstruction" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.operation_instruction
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="instructionName != null">instruction_name,</if>
+            <if test="jobName != null">job_name,</if>
+            <if test="componentPath != null">component_path,</if>
+            <if test="routingAddress != null">routing_address,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="instructionName != null">#{instructionName},</if>
+            <if test="jobName != null">#{jobName},</if>
+            <if test="componentPath != null">#{componentPath},</if>
+            <if test="routingAddress != null">#{routingAddress},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateOperationInstruction" parameterType="com.zkqy.system.domain.OperationInstruction">
+        update {DBNAME}.operation_instruction
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="instructionName != null">instruction_name = #{instructionName},</if>
+            <if test="jobName != null">job_name = #{jobName},</if>
+            <if test="componentPath != null">component_path = #{componentPath},</if>
+            <if test="routingAddress != null">routing_address = #{routingAddress},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteOperationInstructionById" parameterType="Long">
+        delete from {DBNAME}.operation_instruction where id = #{id}
+    </delete>
+
+    <delete id="deleteOperationInstructionByIds" parameterType="String">
+        delete from {DBNAME}.operation_instruction where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

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

@@ -111,9 +111,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
     </insert>
     <insert id="insertPocurementdetailsBatch" parameterType="java.util.List">
-        insert into {DBNAME}.pocurementdetails
+
         <!-- 使用foreach遍历list中的每一个元素 -->
         <foreach item="item"  collection="list"  separator =";">
+            insert into {DBNAME}.pocurementdetails
             <trim prefix="(" suffix=")" suffixOverrides=",">
                 <if test="item.purchaseId != null">purchase_id,</if>
                 <if test="item.organization != null">organization,</if>

+ 227 - 0
zkqy-fujian-amichi/src/main/resources/mapper/StoreEntryDetailsMapper.xml

@@ -0,0 +1,227 @@
+<?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.StoreEntryDetailsMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.StoreEntryDetails" id="StoreEntryDetailsResult">
+        <result property="id"    column="id"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="productName"    column="product_name"    />
+        <result property="modelNumber"    column="model_number"    />
+        <result property="unit"    column="unit"    />
+        <result property="quantity"    column="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="warehouseEntryId"    column="warehouse_entry_id"    />
+    </resultMap>
+
+    <sql id="selectStoreEntryDetailsVo">
+        select id, material_code, product_name, model_number, unit, 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, warehouse_entry_id from {DBNAME}.store_entry_details
+    </sql>
+
+    <select id="selectStoreEntryDetailsList" parameterType="com.zkqy.amichi.domain.StoreEntryDetails" resultMap="StoreEntryDetailsResult">
+        <include refid="selectStoreEntryDetailsVo"/>
+        <where>  
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</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="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</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="warehouseEntryId != null "> and warehouse_entry_id = #{warehouseEntryId}</if>
+            and del_flag = 0
+        </where>
+    </select>
+    
+    <select id="selectStoreEntryDetailsById" parameterType="Long" resultMap="StoreEntryDetailsResult">
+        <include refid="selectStoreEntryDetailsVo"/>
+        where id = #{id} and del_flag = 0
+    </select>
+    <select id="selectWarehouseEntryInformationByWarehouseEtryId"
+            resultType="com.zkqy.amichi.domain.StoreEntryDetails"  parameterType="Long">
+        <include refid="selectStoreEntryDetailsVo"/>
+        where warehouse_entry_id = #{id} and del_flag = 0
+    </select>
+
+    <insert id="insertStoreEntryDetails" parameterType="com.zkqy.amichi.domain.StoreEntryDetails" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.store_entry_details
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">material_code,</if>
+            <if test="productName != null">product_name,</if>
+            <if test="modelNumber != null">model_number,</if>
+            <if test="unit != null">unit,</if>
+            <if test="quantity != null">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="warehouseEntryId != null">warehouse_entry_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="productName != null">#{productName},</if>
+            <if test="modelNumber != null">#{modelNumber},</if>
+            <if test="unit != null">#{unit},</if>
+            <if test="quantity != null">#{quantity},</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="warehouseEntryId != null">#{warehouseEntryId},</if>
+         </trim>
+    </insert>
+    
+    <insert id="insertStoreEntryDetailsBatch"  parameterType="java.util.List">
+
+        <!-- 使用foreach遍历list中的每一个元素 -->
+        <foreach item="item"  collection="list"  separator =";">
+            insert into {DBNAME}.store_entry_details
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.materialCode != null">material_code,</if>
+                <if test="item.productName != null">product_name,</if>
+                <if test="item.modelNumber != null">model_number,</if>
+                <if test="item.unit != null">unit,</if>
+                <if test="item.quantity != null">quantity,</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>
+                <if test="item.warehouseEntryId != null">warehouse_entry_id,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.materialCode != null">#{item.materialCode},</if>
+                <if test="item.productName != null">#{item.productName},</if>
+                <if test="item.modelNumber != null">#{item.modelNumber},</if>
+                <if test="item.unit != null">#{item.unit},</if>
+                <if test="item.quantity != null">#{item.quantity},</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>
+                <if test="item.warehouseEntryId != null">#{item.warehouseEntryId},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateStoreEntryDetails" parameterType="com.zkqy.amichi.domain.StoreEntryDetails">
+        update {DBNAME}.store_entry_details
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="productName != null">product_name = #{productName},</if>
+            <if test="modelNumber != null">model_number = #{modelNumber},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="quantity != null">quantity = #{quantity},</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="warehouseEntryId != null">warehouse_entry_id = #{warehouseEntryId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <update id="updateStoreEntryDetailsByWarehouseEtryIdOne">
+        update {DBNAME}.store_entry_details
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="productName != null">product_name = #{productName},</if>
+            <if test="modelNumber != null">model_number = #{modelNumber},</if>
+            <if test="unit != null">unit = #{unit},</if>
+            <if test="quantity != null">quantity = #{quantity},</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="warehouseEntryId != null">warehouse_entry_id = #{warehouseEntryId},</if>
+        </trim>
+        where warehouse_entry_id = #{warehouseEntryId}
+    </update>
+    <update id="updateStoreEntryDetailsByWarehouseEtryId" parameterType="String">
+        update {DBNAME}.store_entry_details
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sd.updateById != null">update_by_id = #{sd.updateById},</if>
+            <if test="sd.updateBy != null">update_by = #{sd.updateBy},</if>
+            <if test="sd.updateTime != null">update_time = #{sd.updateTime},</if>
+            del_flag = 1
+        </trim>
+        where warehouse_entry_id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+                #{id}
+        </foreach>
+    </update>
+
+
+    <delete id="deleteStoreEntryDetailsById" parameterType="Long">
+        delete from {DBNAME}.store_entry_details where id = #{id}
+    </delete>
+
+    <delete id="deleteStoreEntryDetailsByIds" parameterType="String">
+        delete from {DBNAME}.store_entry_details where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 150 - 0
zkqy-fujian-amichi/src/main/resources/mapper/WarehouseEntryInformationMapper.xml

@@ -0,0 +1,150 @@
+<?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.WarehouseEntryInformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.WarehouseEntryInformation" id="WarehouseEntryInformationResult">
+        <result property="id"    column="id"    />
+        <result property="warehouseEntryNumber"    column="warehouse_entry_number"    />
+        <result property="productionOrderNumber"    column="production_order_number"    />
+        <result property="dateOfReceipt"    column="date_of_receipt"    />
+        <result property="productionTaskOrderNumber"    column="production_task_order_number"    />
+        <result property="examine"    column="examine"    />
+        <result property="documenter"    column="documenter"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectWarehouseEntryInformationVo">
+        select id, warehouse_entry_number, production_order_number, date_of_receipt, production_task_order_number, examine, documenter, 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}.warehouse_entry_information
+    </sql>
+
+    <select id="selectWarehouseEntryInformationList" parameterType="com.zkqy.amichi.domain.WarehouseEntryInformation" resultMap="WarehouseEntryInformationResult">
+        <include refid="selectWarehouseEntryInformationVo"/>
+        <where>  
+            <if test="warehouseEntryNumber != null  and warehouseEntryNumber != ''"> and warehouse_entry_number = #{warehouseEntryNumber}</if>
+            <if test="productionOrderNumber != null  and productionOrderNumber != ''"> and production_order_number = #{productionOrderNumber}</if>
+            <if test="dateOfReceipt != null  and dateOfReceipt != ''"> and date_of_receipt = #{dateOfReceipt}</if>
+            <if test="productionTaskOrderNumber != null  and productionTaskOrderNumber != ''"> and production_task_order_number = #{productionTaskOrderNumber}</if>
+            <if test="examine != null  and examine != ''"> and examine = #{examine}</if>
+            <if test="documenter != null  and documenter != ''"> and documenter = #{documenter}</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>
+    </select>
+    
+    <select id="selectWarehouseEntryInformationById" parameterType="Long" resultMap="WarehouseEntryInformationResult">
+        <include refid="selectWarehouseEntryInformationVo"/>
+        where id = #{id} and del_flag = 0
+    </select>
+        
+    <insert id="insertWarehouseEntryInformation" parameterType="com.zkqy.amichi.domain.WarehouseEntryInformation" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.warehouse_entry_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="warehouseEntryNumber != null">warehouse_entry_number,</if>
+            <if test="productionOrderNumber != null">production_order_number,</if>
+            <if test="dateOfReceipt != null">date_of_receipt,</if>
+            <if test="productionTaskOrderNumber != null">production_task_order_number,</if>
+            <if test="examine != null">examine,</if>
+            <if test="documenter != null">documenter,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="warehouseEntryNumber != null">#{warehouseEntryNumber},</if>
+            <if test="productionOrderNumber != null">#{productionOrderNumber},</if>
+            <if test="dateOfReceipt != null">#{dateOfReceipt},</if>
+            <if test="productionTaskOrderNumber != null">#{productionTaskOrderNumber},</if>
+            <if test="examine != null">#{examine},</if>
+            <if test="documenter != null">#{documenter},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWarehouseEntryInformation" parameterType="com.zkqy.amichi.domain.WarehouseEntryInformation">
+        update {DBNAME}.warehouse_entry_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="warehouseEntryNumber != null">warehouse_entry_number = #{warehouseEntryNumber},</if>
+            <if test="productionOrderNumber != null">production_order_number = #{productionOrderNumber},</if>
+            <if test="dateOfReceipt != null">date_of_receipt = #{dateOfReceipt},</if>
+            <if test="productionTaskOrderNumber != null">production_task_order_number = #{productionTaskOrderNumber},</if>
+            <if test="examine != null">examine = #{examine},</if>
+            <if test="documenter != null">documenter = #{documenter},</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="approvalOpinionFirst != null">approvalOpinionFirst = #{approvalOpinionFirst},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <update id="updateWarehouseEntryInformationById">
+        update {DBNAME}.warehouse_entry_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="wv.updateById != null">update_by_id = #{wv.updateById},</if>
+            <if test="wv.updateBy != null">update_by = #{wv.updateBy},</if>
+            <if test="wv.updateTime != null">update_time = #{wv.updateTime},</if>
+            <if test="wv.delFlag != null">del_flag = #{wv.delFlag},</if>
+        </trim>
+        where id in
+        <foreach item="id" collection="sz" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <delete id="deleteWarehouseEntryInformationById" parameterType="Long">
+        delete from {DBNAME}.warehouse_entry_information where id = #{id}
+    </delete>
+
+    <delete id="deleteWarehouseEntryInformationByIds" parameterType="String">
+        delete from {DBNAME}.warehouse_entry_information where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

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

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.amichi.mapper.WorkingprocedureMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.Workingprocedure" id="WorkingprocedureResult">
+        <result property="id"    column="id"    />
+        <result property="workmanship"    column="workmanship"    />
+        <result property="number"    column="number"    />
+        <result property="name"    column="name"    />
+        <result property="guidanceId"    column="guidance_id"    />
+        <result property="sparea"    column="sparea"    />
+        <result property="spareb"    column="spareb"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectWorkingprocedureVo">
+        select id, workmanship, number, name, guidance_id, sparea, spareb, 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}.workingprocedure
+    </sql>
+
+    <select id="selectWorkingprocedureList" parameterType="com.zkqy.amichi.domain.Workingprocedure" resultMap="WorkingprocedureResult">
+        <include refid="selectWorkingprocedureVo"/>
+        <where>  
+            <if test="workmanship != null "> and workmanship = #{workmanship}</if>
+            <if test="number != null  and number != ''"> and `number` = #{number}</if>
+            <if test="name != null  and name != ''"> and `name` like concat('%', #{name}, '%')</if>
+            <if test="guidanceId != null "> and guidance_id = #{guidanceId}</if>
+            <if test="sparea != null  and sparea != ''"> and sparea = #{sparea}</if>
+            <if test="spareb != null  and spareb != ''"> and spareb = #{spareb}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectWorkingprocedureById" parameterType="Long" resultMap="WorkingprocedureResult">
+        <include refid="selectWorkingprocedureVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertWorkingprocedure" parameterType="com.zkqy.amichi.domain.Workingprocedure" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.workingprocedure
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="workmanship != null">workmanship,</if>
+            <if test="number != null">`number`,</if>
+            <if test="name != null">`name`,</if>
+            <if test="guidanceId != null">guidance_id,</if>
+            <if test="sparea != null">sparea,</if>
+            <if test="spareb != null">spareb,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="workmanship != null">#{workmanship},</if>
+            <if test="number != null">#{number},</if>
+            <if test="name != null">#{name},</if>
+            <if test="guidanceId != null">#{guidanceId},</if>
+            <if test="sparea != null">#{sparea},</if>
+            <if test="spareb != null">#{spareb},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWorkingprocedure" parameterType="com.zkqy.amichi.domain.Workingprocedure">
+        update {DBNAME}.workingprocedure
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="workmanship != null">workmanship = #{workmanship},</if>
+            <if test="number != null">`number` = #{number},</if>
+            <if test="name != null">`name` = #{name},</if>
+            <if test="guidanceId != null">guidance_id = #{guidanceId},</if>
+            <if test="sparea != null">sparea = #{sparea},</if>
+            <if test="spareb != null">spareb = #{spareb},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteWorkingprocedureById" parameterType="Long">
+        delete from {DBNAME}.workingprocedure where id = #{id}
+    </delete>
+
+    <delete id="deleteWorkingprocedureByIds" parameterType="String">
+        delete from {DBNAME}.workingprocedure where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 172 - 0
zkqy-fujian-amichi/src/main/resources/mapper/WorkmanshipMapper.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.WorkmanshipMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.Workmanship" id="WorkmanshipResult">
+        <result property="id"    column="id"    />
+        <result property="number"    column="number"    />
+        <result property="name"    column="name"    />
+        <result property="sparea"    column="sparea"    />
+        <result property="spareb"    column="spareb"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectWorkmanshipVo">
+        select id, number, name, sparea, spareb, 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}.workmanship
+    </sql>
+
+    <select id="selectWorkmanshipList" parameterType="com.zkqy.amichi.domain.Workmanship" resultMap="WorkmanshipResult">
+        <include refid="selectWorkmanshipVo"/>
+        <where>  
+            <if test="number != null  and number != ''"> and `number` = #{number}</if>
+            <if test="name != null  and name != ''"> and `name` like concat('%', #{name}, '%')</if>
+            <if test="sparea != null  and sparea != ''"> and sparea = #{sparea}</if>
+            <if test="spareb != null  and spareb != ''"> and spareb = #{spareb}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectWorkmanshipById" parameterType="Long" resultMap="WorkmanshipResult">
+        <include refid="selectWorkmanshipVo"/>
+        where id = #{id}
+    </select>
+
+    <resultMap type="com.zkqy.amichi.domain.vo.WorkmanshipTreeVo" id="WorkmanshipResultTwo">
+        <result property="id"    column="id"    />
+        <result property="label"    column="name"    />
+        <!--collection: 处理一对多关系
+            1、ofType集合里边的对象类型 (ctrl+alt+shift+c:类全路径拷贝)
+            2、两张表id有冲突,解决:起别名
+        -->
+        <collection property="children" ofType="com.zkqy.amichi.domain.vo.WorkmanshipTreeVo">
+            <result property="id"    column="wid"    />
+            <result property="label"    column="wname"    />
+            <result property="fid"    column="fid"    />
+        </collection>
+    </resultMap>
+
+    <select id="selectWorkmanshipTreeList" resultMap="WorkmanshipResultTwo"  parameterType="com.zkqy.amichi.domain.Workmanship">
+        SELECT
+            ws.id AS id,
+            ws.number AS number,
+            ws.`name` AS `name`,
+            wd.id AS wid,
+            wd.`name` AS wname,
+            wd.number AS wnumber,
+            wd.guidance_id AS fid
+        FROM
+           {DBNAME}.`workmanship` AS ws
+                left JOIN {DBNAME}.workingprocedure wd ON ws.id = wd.workmanship
+        <where>
+            <if test="number != null  and number != ''"> and ws.number = #{number}</if>
+            <if test="name != null  and name != ''"> and ws.name like concat('%', #{name}, '%')</if>
+            and ws.del_flag = 0
+        </where>
+    </select>
+
+    <insert id="insertWorkmanship" parameterType="com.zkqy.amichi.domain.Workmanship" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.workmanship
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="number != null">`number`,</if>
+            <if test="name != null">`name`,</if>
+            <if test="sparea != null">sparea,</if>
+            <if test="spareb != null">spareb,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="number != null">#{number},</if>
+            <if test="name != null">#{name},</if>
+            <if test="sparea != null">#{sparea},</if>
+            <if test="spareb != null">#{spareb},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWorkmanship" parameterType="com.zkqy.amichi.domain.Workmanship">
+        update {DBNAME}.workmanship
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="number != null">`number` = #{number},</if>
+            <if test="name != null">`name` = #{name},</if>
+            <if test="sparea != null">sparea = #{sparea},</if>
+            <if test="spareb != null">spareb = #{spareb},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <!--  ids  ws  -->
+    <update id="updateWorkmanshipByIds">
+        update  {DBNAME}.workmanship
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="ws.updateById != null">update_by_id = #{ws.updateById},</if>
+            <if test="ws.updateBy != null">update_by = #{ws.updateBy},</if>
+            <if test="ws.updateTime != null">update_time = #{ws.updateTime},</if>
+            <if test="ws.delFlag != null">del_flag = #{ws.delFlag},</if>
+        </trim>
+        where id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <delete id="deleteWorkmanshipById" parameterType="Long">
+        delete from {DBNAME}.workmanship where id = #{id}
+    </delete>
+
+    <delete id="deleteWorkmanshipByIds" parameterType="String">
+        delete from {DBNAME}.workmanship where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询作业指导书列表
+export function listInstruction(query) {
+  return request({
+    url: '/system/instruction/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询作业指导书详细
+export function getInstruction(id) {
+  return request({
+    url: '/system/instruction/' + id,
+    method: 'get'
+  })
+}
+
+// 新增作业指导书
+export function addInstruction(data) {
+  return request({
+    url: '/system/instruction',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改作业指导书
+export function updateInstruction(data) {
+  return request({
+    url: '/system/instruction',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除作业指导书
+export function delInstruction(id) {
+  return request({
+    url: '/system/instruction/' + id,
+    method: 'delete'
+  })
+}

+ 65 - 0
zkqy-ui/src/api/amichi/warehouseWarrant/warehouseWarrant.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+// 查询入库单信息列表
+export function listInformation(query) {
+  return request({
+    url: '/amichi/warehouseWarrant/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询入库单信息详细
+export function getInformation(id) {
+  return request({
+    url: '/amichi/warehouseWarrant/' + id,
+    method: 'get'
+  })
+}
+
+// 新增入库单信息
+export function addInformation(data) {
+  return request({
+    url: '/amichi/warehouseWarrant',
+    method: 'post',
+    data: data
+  })
+}
+
+// 新增入库单信息
+export function addInformationInsert(data) {
+  return request({
+    url: '/amichi/warehouseWarrant/insert',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改入库单信息
+export function updateInformationStatus(data) {
+  return request({
+    url: '/amichi/warehouseWarrant/status',
+    method: 'put',
+    data: data
+  })
+}
+
+
+
+// 修改入库单信息
+export function updateInformation(data) {
+  return request({
+    url: '/amichi/warehouseWarrant/update',
+    method: 'put',
+    data: data
+  })
+}
+
+
+// 删除入库单信息
+export function delInformation(id) {
+  return request({
+    url: '/amichi/warehouseWarrant/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询工序列表
+export function listWorkingprocedure(query) {
+  return request({
+    url: '/amichi/workingprocedure/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工序详细
+export function getWorkingprocedure(id) {
+  return request({
+    url: '/amichi/workingprocedure/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工序
+export function addWorkingprocedure(data) {
+  return request({
+    url: '/amichi/workingprocedure',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工序
+export function updateWorkingprocedure(data) {
+  return request({
+    url: '/amichi/workingprocedure',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工序
+export function delWorkingprocedure(id) {
+  return request({
+    url: '/amichi/workingprocedure/' + id,
+    method: 'delete'
+  })
+}

+ 54 - 0
zkqy-ui/src/api/amichi/workmanship/workmanship.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 查询工艺列表
+export function listWorkmanship(query) {
+  return request({
+    url: '/amichi/workmanship/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询工艺列表
+export function listWorkmanshipTreeList(query) {
+  return request({
+    url: '/amichi/workmanship/treeList',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 查询工艺详细
+export function getWorkmanship(id) {
+  return request({
+    url: '/amichi/workmanship/' + id,
+    method: 'get'
+  })
+}
+
+// 新增工艺
+export function addWorkmanship(data) {
+  return request({
+    url: '/amichi/workmanship',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改工艺
+export function updateWorkmanship(data) {
+  return request({
+    url: '/amichi/workmanship',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除工艺
+export function delWorkmanship(id) {
+  return request({
+    url: '/amichi/workmanship/' + id,
+    method: 'delete'
+  })
+}

+ 12 - 1
zkqy-ui/src/views/amichi/materiel/components/operateTable.vue

@@ -78,4 +78,15 @@ export default {
 }
 </script>
 
-<style scoped lang='scss'></style>
+<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>

+ 24 - 33
zkqy-ui/src/views/amichi/materiel/index.vue

@@ -157,7 +157,6 @@
               <el-input v-model="form.dosageMolecular" placeholder="请输入用量分子" />
             </el-form-item>
           </el-col>
-
         </el-row>
 
         <el-row type="flex" class="row-bg" justify="space-between">
@@ -177,6 +176,25 @@
             </el-form-item>
           </el-col>
         </el-row>
+
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="单位" prop="modelNumber">
+              <el-input v-model="form.unit" placeholder="请输入单位" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="子项类型" prop="specification">
+              <el-input v-model="form.subitemType" placeholder="请输入子项类型" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="用量类型" prop="dosageMolecular">
+              <el-input v-model="form.dosageType" placeholder="请输入用量类型" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <el-row type="flex" class="row-bg" justify="space-between">
           <el-col :span="8">
             <el-form-item label="数据状态" prop="dataState">
@@ -498,14 +516,6 @@ export default {
         this.$refs['tableTree'].doLayout();
       });
     },
-
-    //查询租户信息列表
-    // getCodeTenantAllList(){
-    //   getCodeTenantAllList().then((response) => {
-    //     // console.log(response)
-    //     this.tenantRows = response.rows;
-    //   });
-    // },
     selectListTree() {
       selectListTree().then(response => {
         this.materialRows = response.data;
@@ -538,27 +548,9 @@ export default {
     load(tree, treeNode, resolve) {
       const pid = tree.id
       this.maps.set(pid, { tree, treeNode, resolve })  //将当前选中节点数据存储到maps中
-      console.log(this.maps.get(10))
-      console.log(this.maps, "村进去");
       getTreeInfo(tree.id).then(response => {
         resolve(response.data);
       });
-      // // console.log(resolve,"c")
-      // setTimeout(() => {
-      //   resolve([
-      //     {
-      //       id: 31,
-      //       date: '2016-05-01',
-      //       name: '王小虎',
-      //       address: '上海市普陀区金沙江路 1519 弄'
-      //     }, {
-      //       id: 32,
-      //       date: '2016-05-01',
-      //       name: '王小虎',
-      //       address: '上海市普陀区金沙江路 1519 弄'
-      //     }
-      //   ])
-      // }, 1000)},
     },
     /** 查询物料清单列表 */
     getList() {
@@ -660,7 +652,6 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-
       this.reset();
       this.selectListTree();
       const id = row.id || this.ids
@@ -738,11 +729,11 @@ export default {
 </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__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缩进

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

@@ -1,34 +1,18 @@
 <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="materialCode">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="120px">
+      <el-form-item label="作业指导书名称" prop="instructionName">
         <el-input
-          v-model="queryParams.materialCode"
-          placeholder="请输入物料编码"
+          v-model="queryParams.instructionName"
+          placeholder="请输入作业指导书名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物料名称" prop="materialName">
+      <el-form-item label="作业名称" prop="jobName">
         <el-input
-          v-model="queryParams.materialName"
-          placeholder="请输入物料名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="型号" prop="model">
-        <el-input
-          v-model="queryParams.model"
-          placeholder="请输入型号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="发料方式" prop="issueMethod">
-        <el-input
-          v-model="queryParams.issueMethod"
-          placeholder="请输入发料方式"
+          v-model="queryParams.jobName"
+          placeholder="请输入作业名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -47,7 +31,7 @@
           icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
-          v-hasPermi="['system:materialInfo:add']"
+          v-hasPermi="['system:instruction:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -58,7 +42,7 @@
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['system:materialInfo:edit']"
+          v-hasPermi="['system:instruction:edit']"
         >修改</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -69,7 +53,7 @@
           size="mini"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['system:materialInfo:remove']"
+          v-hasPermi="['system:instruction:remove']"
         >删除</el-button>
       </el-col>
       <el-col :span="1.5">
@@ -79,17 +63,17 @@
           icon="el-icon-download"
           size="mini"
           @click="handleExport"
-          v-hasPermi="['system:materialInfo:export']"
+          v-hasPermi="['system:instruction:export']"
         >导出</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" style="margin-top: 20px" :data="tableData" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" style="margin-top: 20px" :data="instructionList" @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="title" />
-      <el-table-column label="作业名" align="center" prop="materialName" />
+      <el-table-column label="指导书名称" align="center" prop="instructionName" />
+      <el-table-column label="作业名" align="center" prop="jobName" />
       <el-table-column label="描述" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
@@ -114,56 +98,32 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改物料信息对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <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="model">
-          <el-input v-model="form.model" 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="attribute">
-          <el-select
-            v-model="form.attribute"
-            size="small"
-            clearable
-            filterable
-          >
-            <el-option
-              v-for="(item,index) in dict.type.wlsx"
-              :key="index"
-              :label="item.label"
-              :value="item.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="单位" prop="unit">
-          <el-input v-model="form.unit" placeholder="请输入单位" />
-        </el-form-item>
-        <el-form-item label="发料方式" prop="issueMethod">
-          <el-input v-model="form.issueMethod" placeholder="请输入发料方式" />
+    <!-- 添加或修改作业指导书对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="作业指导书名称" prop="instructionName">
+          <el-input v-model="form.instructionName" placeholder="请输入作业指导书名称" />
         </el-form-item>
-        <el-form-item label="库存量" prop="stockQuantity">
-          <el-input v-model="form.stockQuantity" placeholder="请输入库存量" />
+        <el-form-item label="作业名称" prop="jobName">
+          <el-input v-model="form.jobName" placeholder="请输入作业名称" />
         </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" />
+        <el-form-item label="组件名称" prop="componentPath">
+          <el-input v-model="form.componentPath" placeholder="请输入组件名称" />
         </el-form-item>
+<!--        <el-form-item label="路由地址" prop="routingAddress">-->
+<!--          <el-input v-model="form.routingAddress" placeholder="请输入路由地址" />-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="备注" prop="remark">-->
+<!--          <el-input v-model="form.remark" placeholder="请输入备注" />-->
+<!--        </el-form-item>-->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-    <!-- 添加或修改物料信息对话框 -->
-    <el-dialog :title="title" :visible.sync="catOperationInstructionBoolean" width="1500px" append-to-body>
+    <!-- 查看作业指导书 -->
+    <el-dialog :title="catOperationInstructionTitle" :visible.sync="catOperationInstructionBoolean" width="1500px" append-to-body>
       <!-- 动态加载组件 -->
       <component :is="catOperationInstructionCurrentComponent"></component>
       <div slot="footer" class="dialog-footer">
@@ -181,6 +141,7 @@ import excitationStator from '@/views/amichi/operationInstruction/page/excitatio
 import statorCore from '@/views/amichi/operationInstruction/page/statorCore.vue';
 import statorPressFit from '@/views/amichi/operationInstruction/page/statorPressFit.vue';
 import StatorWireEmbedding from '@/views/amichi/operationInstruction/page/StatorWireEmbedding.vue';
+import { listInstruction, getInstruction, delInstruction, addInstruction, updateInstruction } from "@/api/amichi/operationInstruction/instruction";
 
 export default {
   name: "MaterialInfo",
@@ -224,7 +185,7 @@ export default {
       // 总条数
       total: 0,
       // 物料信息表格数据
-      materialInfoList: [],
+      instructionList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -280,36 +241,8 @@ export default {
   methods: {
     handleClick(row) {
       console.log(row);
-      switch (row.title) {
-        case "驱动片安装工序作业指导书":
-          this.catOperationInstructionCurrentComponent = driverInstallation;
-          this.catOperationInstructionBoolean = true;
-          this.catOperationInstructionTitle = '驱动片安装工序作业指导书';
-          break;
-        case "励磁定子自动绕线工序作业指导书":
-          this.catOperationInstructionCurrentComponent = excitationStator;
-          this.catOperationInstructionBoolean = true;
-          console.log("ddddddddddd")
-          this.catOperationInstructionTitle = '励磁定子自动绕线工序作业指导书';
-          break;
-        case "定子铁芯焊接作业指导书":
-          this.catOperationInstructionCurrentComponent = statorCore;
-          this.catOperationInstructionBoolean = true;
-          this.catOperationInstructionTitle = '定子铁芯焊接作业指导书';
-          break;
-        case "定子压装工序作业指导书":
-          this.catOperationInstructionCurrentComponent = statorPressFit;
-          this.catOperationInstructionBoolean = true;
-          this.catOperationInstructionTitle = '驱动片安装工序作业指导书';
-          break;
-        case "定子压装定子嵌线工序作业指导书工序作业指导书":
-          this.catOperationInstructionCurrentComponent = StatorWireEmbedding;
-          this.catOperationInstructionBoolean = true;
-          this.catOperationInstructionTitle = '定子压装定子嵌线工序作业指导书工序作业指导书';
-          break;
-        default:
-          break;
-      }
+      this.catOperationInstructionTitle = row.instructionName;
+      this.catOperationInstructionCurrentComponent = row.componentPath;
       // this.$router.push({
       //   path: row.path
       // })
@@ -338,8 +271,8 @@ export default {
     /** 查询物料信息列表 */
     getList() {
       this.loading = true;
-      listMaterialInfo(this.queryParams).then(response => {
-        this.materialInfoList = response.rows;
+      listInstruction(this.queryParams).then(response => {
+        this.instructionList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -353,14 +286,10 @@ export default {
     reset() {
       this.form = {
         id: null,
-        materialCode: null,
-        materialName: null,
-        model: null,
-        specification: null,
-        unit: null,
-        attribute: null,
-        issueMethod: null,
-        stockQuantity: null,
+        instructionName: null,
+        jobName: null,
+        componentPath: null,
+        routingAddress: null,
         remark: null,
         createById: null,
         createBy: null,
@@ -402,7 +331,7 @@ export default {
     handleUpdate(row) {
       this.reset();
       const id = row.id || this.ids
-      getMaterialInfo(id).then(response => {
+      getInstruction(id).then(response => {
         this.form = response.data;
         this.open = true;
         this.title = "修改物料信息";
@@ -414,14 +343,14 @@ export default {
         if (valid) {
           if (this.form.id != null) {
             this.form.typeOfOperation=1
-            updateMaterialInfo(this.form).then(response => {
+            updateInstruction(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
             this.form.typeOfOperation=0
-            addMaterialInfo(this.form).then(response => {
+            addInstruction(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -433,8 +362,8 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除物料信息编号为"' + ids + '"的数据项?').then(function() {
-        return delMaterialInfo(ids);
+      this.$modal.confirm('是否确认删除作业指导书编号为"' + ids + '"的数据项?').then(function() {
+        return delInstruction(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
@@ -442,9 +371,9 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('system/materialInfo/export', {
+      this.download('system/instruction/export', {
         ...this.queryParams
-      }, `materialInfo_${new Date().getTime()}.xlsx`)
+      }, `instruction_${new Date().getTime()}.xlsx`)
     }
   }
 };

+ 317 - 0
zkqy-ui/src/views/amichi/operationInstruction/index2.vue

@@ -0,0 +1,317 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="作业指导书名称" prop="instructionName">
+        <el-input
+          v-model="queryParams.instructionName"
+          placeholder="请输入作业指导书名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="作业名称" prop="jobName">
+        <el-input
+          v-model="queryParams.jobName"
+          placeholder="请输入作业名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:instruction:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:instruction:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:instruction:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:instruction:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="instructionList" @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="instructionName" />
+      <el-table-column label="作业名称" align="center" prop="jobName" />
+      <el-table-column label="组件路径" align="center" prop="componentPath" />
+      <el-table-column label="路由地址" align="center" prop="routingAddress" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="创建者id" align="center" prop="createById" />
+      <el-table-column label="更新者id" align="center" prop="updateById" />
+      <el-table-column label="数据条审批状态" align="center" prop="dataApprovalStatus" />
+      <el-table-column label="流程编号" align="center" prop="processKey" />
+      <el-table-column label="任务编码" align="center" prop="taskProcessKey" />
+      <el-table-column label="任务节点编码" align="center" prop="taskNodeKey" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:instruction:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:instruction: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="instructionName">
+          <el-input v-model="form.instructionName" placeholder="请输入作业指导书名称" />
+        </el-form-item>
+        <el-form-item label="作业名称" prop="jobName">
+          <el-input v-model="form.jobName" placeholder="请输入作业名称" />
+        </el-form-item>
+        <el-form-item label="组件路径" prop="componentPath">
+          <el-input v-model="form.componentPath" placeholder="请输入组件路径" />
+        </el-form-item>
+        <el-form-item label="路由地址" prop="routingAddress">
+          <el-input v-model="form.routingAddress" placeholder="请输入路由地址" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+        <el-form-item label="创建者id" prop="createById">
+          <el-input v-model="form.createById" placeholder="请输入创建者id" />
+        </el-form-item>
+        <el-form-item label="更新者id" prop="updateById">
+          <el-input v-model="form.updateById" placeholder="请输入更新者id" />
+        </el-form-item>
+        <el-form-item label="删除标志" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+        </el-form-item>
+        <el-form-item label="流程编号" prop="processKey">
+          <el-input v-model="form.processKey" placeholder="请输入流程编号" />
+        </el-form-item>
+        <el-form-item label="任务编码" prop="taskProcessKey">
+          <el-input v-model="form.taskProcessKey" placeholder="请输入任务编码" />
+        </el-form-item>
+        <el-form-item label="任务节点编码" prop="taskNodeKey">
+          <el-input v-model="form.taskNodeKey" 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 { listInstruction, getInstruction, delInstruction, addInstruction, updateInstruction } from "@/api/amichi/operationInstruction/instruction";
+
+export default {
+  name: "Instruction",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 作业指导书表格数据
+      instructionList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        instructionName: null,
+        jobName: null,
+        componentPath: null,
+        routingAddress: null,
+        createById: null,
+        updateById: null,
+        dataApprovalStatus: null,
+        processKey: null,
+        taskProcessKey: null,
+        taskNodeKey: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询作业指导书列表 */
+    getList() {
+      this.loading = true;
+      listInstruction(this.queryParams).then(response => {
+        this.instructionList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        instructionName: null,
+        jobName: null,
+        componentPath: null,
+        routingAddress: null,
+        remark: null,
+        createById: null,
+        createBy: null,
+        createTime: null,
+        updateById: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null,
+        dataApprovalStatus: null,
+        processKey: null,
+        taskProcessKey: null,
+        taskNodeKey: 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
+      getInstruction(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) {
+            updateInstruction(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInstruction(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 delInstruction(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/instruction/export', {
+        ...this.queryParams
+      }, `instruction_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 0 - 66
zkqy-ui/src/views/amichi/operationInstruction/index3.vue

@@ -1,66 +0,0 @@
-<template>
-  <div class="container">
-    <div style="width: 80%;">
-      <el-table :data="tableData" >
-      <el-table-column prop="title" label="标题" >
-      </el-table-column>
-      <el-table-column
-      fixed="right"
-      label="操作"
-      width="100">
-      <template slot-scope="scope">
-        <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
-        <!-- <el-button type="text" size="small">编辑</el-button> -->
-      </template>
-    </el-table-column>
-
-    </el-table>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      tableData: [{
-        id:"1",
-        title: '励磁定子自动绕线工序作业指导书',
-        path: '/excitationStator',
-      }, {
-        id:"3",
-        title: '定子嵌线工序作业指导书',
-        path: '/StatorWireEmbedding',
-      }, {
-        id:"4",
-        title: '驱动片安装工序作业指导书',
-        path: '/driverInstallation',
-      }, {
-        id:"5",
-        title: '定子铁芯焊接作业指导书',
-        path: '/statorCore',
-      }, {
-        id:"6",
-        title: '定子压装工序作业指导书',
-        path: '/statorPressFit',
-      }]
-    }
-  },
-  methods: {
-    handleClick(row) {
-      console.log(row);
-      this.$router.push({
-        path: row.path
-      })
-    }
-  },
-}
-</script>
-<style scoped>
-.container {
-  margin-top: 30px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-</style>

+ 490 - 0
zkqy-ui/src/views/amichi/processDocumentManagement/index.vue

@@ -0,0 +1,490 @@
+<template>
+  <div class="app-container">
+    <div class="box">
+      <div class="left">
+        <!-- 搜索框start-->
+        <div class="searching" >
+          <el-form :inline="true" :model="searchForm" class="demo-form-inline">
+            <el-form-item label="工艺名称:">
+              <el-input v-model="searchForm.name" placeholder="请输入工艺名称" clearable></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit">查询</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+        <!-- 搜索框end-->
+
+        <!-- 树形组件start-->
+        <div class="treeView">
+          <div class="block">
+            <el-tree
+              :data="treeData"
+              node-key="id"
+              :highlight-current=true
+              default-expand-all
+              @node-click="handleNodeClick"
+              :expand-on-click-node="false">
+                <span class="custom-tree-node"  slot-scope="{ node, data }">
+                     <span>{{ node.label }}</span>
+                      <span style="text-align: right" v-if="data.secondLevelOrNot=='false'">
+                        <el-button
+                          type="primary" icon="el-icon-edit" circle
+                          @click.stop="() => updateTechnology(node, data)">
+                        </el-button>
+                        <el-button
+                          type="danger" icon="el-icon-delete" circle
+                          @click.stop="() => deleteTechnology (node, data)">
+                        </el-button>
+                      </span>
+             </span>
+            </el-tree>
+          </div>
+        </div>
+        <!-- 树形组件end-->
+
+        <!--分页器start total, sizes, prev, pager, next, -->
+        <div>
+          <div style="text-align: center">
+            <pagination
+              v-show="total>=0"
+              :total="total"
+              :page.sync="queryParams.pageNum"
+              :limit.sync="queryParams.pageSize"
+              :pageSizes="[5, 10, 15, 20]"
+              :layout="layoutString"
+              @pagination="getList"
+            />
+          </div>
+        </div>
+        <!--分页面end-->
+
+      </div>
+      <div class="right">
+        <div class="top">
+           <el-button type="primary" @click="insertTechnology">新增工艺</el-button>
+           <el-button type="primary" @click="insertProcess" v-show="isAddButton">新增工序</el-button>
+        </div>
+        <div class="center">
+            <h1 style="text-align: center">详细信息</h1>
+            <!--详细信息表单start-->
+            <el-form ref="form" :model="form"  :rules="rules" class="center-form" label-width="110px" style="margin-top: 40px" :disabled="isDisabled">
+              <div class="center-left">
+                <el-form-item label="工序编号:"  prop="number">
+                  <el-input v-model="form.number"></el-input>
+                </el-form-item>
+                <el-form-item label="工序名称:"  prop="name">
+                  <el-input v-model="form.name"></el-input>
+                </el-form-item>
+                <el-form-item label="作业指导书:" prop="guidanceId">
+<!--                  <el-input v-model="form.guidanceId"></el-input>-->
+                  <el-select
+                    v-model="form.guidanceId"
+                    size="small"
+                    style="width: 318.34px"
+                    clearable
+                    placeholder="请选择作业指导书"
+                    filterable
+                  >
+                    <el-option
+                      v-for="(item,index) in instructionList"
+                      :key="item.id"
+                      :label="item.instructionName"
+                      :value="item.id"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </div>
+              <div class="center-right">
+                <el-form-item label="备注">
+                  <el-input type="textarea" v-model="form.remark"></el-input>
+                </el-form-item>
+              </div>
+            </el-form>
+            <!--详细信息表单end-->
+            <div slot="footer" class="dialog-footer" style="">
+              <div style="text-align: right" v-show="isShowUpdateSu">
+                <el-button type="primary" @click="updateIsDisabled">修改</el-button>
+                <el-button @click="infoDel">删除</el-button>
+              </div>
+            </div>
+            <div slot="footer" class="dialog-footer" style="">
+              <div style="text-align: right" v-show="isShowAddSu">
+                <el-button type="primary" @click="addProcess">新增</el-button>
+                <el-button @click="addProcessqx">取消</el-button>
+              </div>
+            </div>
+            <div slot="footer" class="dialog-footer" style="">
+              <div style="text-align: right" v-show="isShowAddSuConfirm">
+                <el-button type="primary" @click="addConfirmProcess">确认修改</el-button>
+                <el-button @click="addProcessqx">取消</el-button>
+              </div>
+            </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- 工艺新增修改start-->
+    <el-dialog :title="technologyFormTitle" :visible.sync="technologyFormOpend" width="600px" append-to-body>
+      <el-form ref="gyForm" :model="gyForm" :rules="gyRules" label-width="90px">
+          <el-form-item label="工艺编号:"  prop="number">
+            <el-input v-model="gyForm.number"></el-input>
+          </el-form-item>
+          <el-form-item label="工艺名称:" prop="name">
+            <el-input v-model="gyForm.name"></el-input>
+          </el-form-item>
+          <el-form-item label="备注">
+            <el-input type="textarea" v-model="gyForm.remark"></el-input>
+          </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="technologyFormTitleSubmit">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 工艺新增修改end-->
+  </div>
+</template>
+
+<script>
+import {listWorkmanshipTreeList,getWorkmanship,updateWorkmanship,addWorkmanship,delWorkmanship} from "@/api/amichi/workmanship/workmanship";
+import {getWorkingprocedure,addWorkingprocedure,delWorkingprocedure,listWorkingprocedure,updateWorkingprocedure} from "@/api/amichi/workmanship/workingprocedure";
+import {getInstruction, listInstruction} from "@/api/amichi/operationInstruction/instruction";
+
+let id = 1000;
+export default {
+  name: "processDocumentManagement",
+  data() {
+    return {
+      isAdd:false,
+      isShowAddSuConfirm:false,
+      isAddButton:false,
+      isUpdate:false,
+      isDisabled:true,
+      isShowAddSu:false,
+      isShowUpdateSu:false,
+      layoutString:"total,sizes, prev, pager, next",
+      form:{},
+      rules: {
+        number: [
+          { required: true, message: '请填写工序编号', trigger: 'blur' }
+        ],
+        name: [
+          { required: true, message: '请填写工序名称', trigger: 'blur' }
+        ],
+        guidanceId: [
+          {required: true, message: '请填写此工序的作业指导书', trigger: 'blur' }
+        ]
+      },
+      technologyFormTitle:"",
+      gyForm:{},
+      gyRules:{
+        number: [
+          { required: true, message: '请填写工艺编号', trigger: 'blur' }
+        ],
+        name: [
+          { required: true, message: '请填写工艺名称', trigger: 'blur' }
+        ]
+      },
+      treeData:[],
+      instructionList:[],
+      searchForm: {},
+      isShow: false,
+      selectId:"",
+      technologyFormOpend:false,
+      isClick:false,
+      total: 0,
+      queryParams:{
+        pageNum:1,
+        pageSize:10,
+      },
+    }
+  },
+  created() {
+    this.getList();
+    this.listInstruction();
+  },
+  methods: {
+    //查看所有作业指导书
+    listInstruction(){
+      listInstruction(null).then((res)=>{
+            this.instructionList=res.rows;
+      },(err)=> {
+
+      })
+    },
+    //初始加载左侧树形数据
+    getList(){
+      listWorkmanshipTreeList(this.queryParams).then((res)=>{
+        console.log(res);
+        this.treeData=res.rows;
+        this.total=res.total;
+      });
+      console.log("树形列表数据")
+    },
+    //修改工艺信息编辑按钮
+    updateTechnology(node, data) {
+      this.gyreset();
+      this.technologyFormOpend=true;
+      this.technologyFormTitle="修改工艺信息";
+      console.log(data)
+      getWorkmanship(data.id).then((res)=>{
+        console.log(res,"lsy")
+        this.gyForm=res.data;
+      });
+      console.log(node, data)
+    },
+    //修改工艺信息表单提交
+    technologyFormTitleSubmit(){
+      console.log("提交")
+      //修改工艺信息发送ajax请求
+       this.$refs['gyForm'].validate((valid) => {
+           if(valid){
+             if (this.gyForm.id != null) {
+               updateWorkmanship(this.gyForm).then((res)=>{
+                 if(res.code==200){
+                   this.$modal.msgSuccess("修改成功");
+                   this.technologyFormOpend=false;
+                   this.gyreset();
+                   this.getList();
+                 }else {
+                   this.$modal.msgError("修改失败");
+                 }
+               })
+             }else {
+               addWorkmanship(this.gyForm).then((res)=>{
+                 if(res.code==200){
+                   this.$modal.msgSuccess("新增成功");
+                   this.technologyFormOpend=false;
+                   this.gyreset();
+                   this.getList();
+                 }else {
+                   this.$modal.msgError("新增失败");
+                 }
+               });
+             }
+
+           }
+       });
+    },
+    //修改工艺信息表单取消按钮
+    cancel(){
+      this.technologyFormOpend=false;
+      this.gyreset();
+    },
+    //新增工艺信息展示弹窗按钮
+    insertTechnology() {
+      this.gyreset();
+      this.technologyFormTitle="新增工艺信息";
+      this.technologyFormOpend=true;
+    },
+    //删除工艺信息
+    deleteTechnology(node,data){
+      console.log(node,data)
+      this.$modal.confirm('此操作将删除该工艺信息id为"' + data.id + '"的数据项?').then(function() {
+        return delWorkmanship(data.id);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    //节点点击事件
+    handleNodeClick(data) {
+      //一级的secondLevelOrNot=false
+      if(data.secondLevelOrNot=="false"){
+        this.isAddButton=true;
+        this.isDisabled=true;
+        this.isShowAddSu=false;
+        this.isShowUpdateSu=false;
+        this.isShowAddSuConfirm=false;
+        this.selectId=data.id;
+        this.reset();//点一级的时候要清空表单
+      }else {
+        this.reset();
+        this.selectId=data.id;
+        this.isAddButton=false;
+        this.isDisabled=true;
+        this.isShowAddSu=false;
+        this.isShowUpdateSu=true;
+        this.isShowAddSuConfirm=false;
+        //查询当前工序信息
+        getWorkingprocedure(data.id).then((res)=>{
+          this.form=res.data;
+        });
+      }
+    },
+
+    //工艺信息表单重置
+    gyreset(){
+      this.gyForm = {
+        id: null,
+        number: null,
+        name: null,
+        remark: null,
+      }
+    },
+    //取消新增工序
+    addProcessqx(){
+      this.reset();
+      this.isDisabled=true;
+      this.isShowAddSu=false;
+      this.isShowUpdateSu=false;
+      this.isShowAddSuConfirm=false;
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        number: null,
+        name: null,
+        guidanceId: null,
+        remark: null,
+      };
+    },
+    //确认新增工序
+    addProcess(){
+      console.log("新增工序提交数据");
+      this.$refs['form'].validate((valid) => {
+        //新增工序发送ajax请求
+        if(valid){
+          this.form.workmanship=this.selectId;
+          addWorkingprocedure(this.form).then((res)=>{
+            if(res.code==200){
+              this.$modal.msgSuccess("新增工序成功");
+              this.reset();//清空表单
+              this.getList();
+            }else {
+              this.$modal.msgSuccess("新增工序失败");
+            }
+          }).catch((err)=>{});
+        }
+      });
+    },
+    //修改确认修改工序
+    addConfirmProcess(){
+      console.log("dddddddd")
+      this.$refs['form'].validate((valid) => {
+         if(valid){
+           updateWorkingprocedure(this.form).then((res)=>{
+             if(res.code==200){
+               this.$modal.msgSuccess("修改工序成功");
+               this.reset();//清空表单
+               this.getList();
+             }else {
+               this.$modal.msgSuccess("修改工序失败");
+             }
+           }).catch((err)=>{});
+         }
+      })
+    },
+    //新增工序按钮
+    insertProcess(){
+      this.isDisabled=false;//取消禁用表单
+      this.isShowAddSu=true;//新增提交
+      this.isShowUpdateSu=false;//修改提交按钮
+      this.reset();
+      console.log("新增工序");
+    },
+    updateIsDisabled(){
+      this.isDisabled = false;
+      this.isClick=true;
+      this.isShowAddSuConfirm=true;
+      this.isShowUpdateSu=false;
+      this.isShowAddSu=false;
+    },
+
+    infoDel(){
+      if(this.selectId==""){
+        this.$modal.msg("请选择一个工序节点");
+        return;
+      }
+      //删除一个工序节点
+      delWorkingprocedure(this.selectId).then((res)=>{
+         if(res.code==200){
+           this.$modal.msgSuccess("删除成功");
+           this.reset()
+           this.getList();
+         }
+      });
+    },
+    onSubmit(){
+      //工艺名称
+      this.queryParams.name=this.searchForm.name;
+      this.getList();
+    },
+    append(data) {
+      console.log(data)
+      const newChild = { id: id++, label: 'testtest', children: [] };
+      if (!data.children) {
+        this.$set(data, 'children', []);
+      }
+      data.children.push(newChild);
+    },
+    remove(node, data) {
+      const parent = node.parent;
+      const children = parent.data.children || parent.data;
+      const index = children.findIndex(d => d.id === data.id);
+      children.splice(index, 1);
+    },
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+   .app-container .box{
+     display: flex;
+     justify-content: space-between;
+     height: 700px;
+     .left{
+       width: 27%;
+       border-right: 3px solid #a6d5fa
+
+     }
+     .right{
+       width: 73%;
+       //border-left: 1px solid red;
+       .top{
+         margin-left: 10px;
+       }
+       .center{
+         margin-top: 30px;
+         padding-left: 11px;
+         width: 100%;
+         .center-form{
+           display: flex;
+           justify-content: space-between;
+           .center-left{
+             width: 40%;
+           }
+           .center-right{
+             width: 60%;
+             .el-textarea{
+               height: 150px;
+               ::v-deep .el-textarea__inner{
+                 height: 150px;
+               }
+             }
+           }
+         }
+
+       }
+     }
+   }
+   .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: 40px;
+   }
+   ::v-deep  .pagination-container .el-pagination{
+     right: inherit;
+     position: absolute;
+   }
+   //.center-right ::v-deep  .el-textarea__inner{
+   //  height: 150px;
+   //}
+</style>

+ 190 - 13
zkqy-ui/src/views/amichi/purchase/purchaseOrder/index.vue

@@ -151,7 +151,6 @@
               <el-dropdown-item  icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
               <el-dropdown-item  icon="el-icon-delete" command="initiateApproval">发起审批</el-dropdown-item>
               <el-dropdown-item  icon="el-icon-delete" command="catDetails">查看详情</el-dropdown-item>
-
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -168,16 +167,153 @@
 
     <!-- 添加或修改采购对话框 -->
     <el-dialog title="查看详情" :visible.sync="catOpen" width="1000px" append-to-body>
-        <el-row type="flex" class="row-bg" justify="space-between">
-          <el-col :span="6"><div class="bt">单据编号</div></el-col>
-          <el-col :span="6"><div class="bt">申请组织</div></el-col>
-          <el-col :span="6"><div class="bt" style="padding-left: 27px">币别</div></el-col>
+        <el-row type="flex" class="row-bg" justify="space-between" style="margin-bottom: 20px">
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">单据编号:</div>
+              <div class="btNameValue">{{form.number}}</div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">申请组织:</div>
+              <div class="btNameValue">{{form.apply}}</div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">币别:</div>
+              <div class="btNameValue">{{form.currency}}</div>
+            </div>
+          </el-col>
         </el-row>
         <el-row type="flex" class="row-bg" justify="space-between">
-          <el-col :span="6"><div class="bt">申请日期</div></el-col>
-          <el-col :span="6"><div class="bt">申请部门</div></el-col>
-          <el-col :span="6"><div class="bt">合计金额</div></el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">申请日期:</div>
+              <div class="btNameValue">{{form.applytime}}</div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">申请部门:</div>
+              <div class="btNameValue">{{form.department}}</div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName" >合计金额:</div>
+              <div class="btNameValue">{{form.total}}</div>
+            </div>
+          </el-col>
         </el-row>
+        <el-row type="flex" class="row-bg" justify="space-between" style="margin-top: 20px">
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">备注:</div>
+              <div class="btNameValue">{{form.remark}}</div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName">申请人:</div>
+              <div class="btNameValue">{{form.applypeople}}</div>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="bt">
+              <div class="btName" ></div>
+              <div class="btNameValue"></div>
+            </div>
+          </el-col>
+        </el-row>
+      <el-row class="row-bg" style="margin-top: 20px">
+        <div class="cesiumTabRoot cesiumTabRootA">
+          <table style="width: 100%; border-collapse: collapse;">
+            <thead>
+            <tr>
+              <th>序号</th>
+              <th>采购组织</th>
+              <th>需求组织</th>
+              <th>物料编码</th>
+              <th>物料名称</th>
+              <th>规格型号</th>
+              <th>单位</th>
+              <th>申请数量</th>
+              <th>批准数量</th>
+              <th>到货日期</th>
+              <th>备注</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr v-for="(item, index) in detailData" :key="index">
+              <td>{{ index + 1 }}</td>
+              <td>{{ item.organization }}</td>
+              <td>{{ item.demand }}</td>
+              <td>{{ item.materialnum }}</td>
+              <td>{{ item.materialname }}</td>
+              <td>{{ item.model }}</td>
+              <td>{{ item.company }}</td>
+              <td>{{ item.quantity }}</td>
+              <td>{{ item.approval }}</td>
+              <td>{{ item.reachtime }}</td>
+              <td>{{ item.remark }}</td>
+            </tr>
+            <tr>
+              <td colspan="7" style="text-align: left;padding-left: 40px;font-weight: bolder">合计:</td>
+              <td>{{ totalQuantityOne }}</td>
+              <td>{{ totalQuantityTwo }}</td>
+              <td></td>
+              <td></td>
+            </tr>
+            </tbody>
+          </table>
+        </div>
+      </el-row>
+      <el-row type="flex" class="row-bg" justify="space-between" style="margin-top: 20px">
+        <el-col :span="8">
+          <div class="bt" style="justify-content: flex-start">
+            <div class="btName">创建人:</div>
+            <div class="btNameValue">{{form.createpeople}}</div>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="bt" style="justify-content: flex-start">
+            <div class="btName"></div>
+            <div class="btNameValue"></div>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="bt" style="justify-content: flex-start">
+            <div class="btName">审核人:</div>
+            <div class="btNameValue">{{form.approval}}</div>
+          </div>
+        </el-col>
+      </el-row>
+      <el-row type="flex" class="row-bg" justify="space-between" style="margin-top: 20px">
+        <el-col :span="8">
+          <div class="bt" style="justify-content: flex-start">
+            <div class="btName">创建日期:</div>
+            <div class="btNameValue">{{form.createTime}}</div>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="bt" style="justify-content: flex-start">
+            <div class="btName"></div>
+            <div class="btNameValue"></div>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="bt" style="justify-content: flex-start">
+            <div class="btName">审核日期:</div>
+            <div class="btNameValue">{{form.approvaltime}}</div>
+          </div>
+        </el-col>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="catOpen=false">确 定</el-button>
+          <el-button @click="catOpen=false">取 消</el-button>
+        </div>
+      </el-row>
     </el-dialog>
     <!-- 添加或修改采购对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
@@ -355,7 +491,6 @@
                 prop="quantity"
                 label="申请数量"
                 align="center"
-                sortable
               >
                 <template v-slot="{ row, column }">
                   <!-- 编辑 -->
@@ -372,7 +507,6 @@
                 prop="approval"
                 label="批准数量"
                 align="center"
-                sortable
               >
                 <template v-slot="{ row, column }">
                   <!-- 编辑 -->
@@ -475,7 +609,6 @@
 <!--                          placeholder="创建时间">-->
 <!--          </el-date-picker>-->
 <!--        </el-form-item>-->
-
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -559,6 +692,14 @@ export default {
   created() {
     this.getList();
   },
+  computed: {
+    totalQuantityOne() {
+      return this.detailData.reduce((total, item) => total + parseInt(item.quantity), 0);
+    },
+    totalQuantityTwo() {
+      return this.detailData.reduce((total, item) => total + parseInt(item.approval), 0);
+    },
+  },
   methods: {
     //展示不同的标签
     getStatusType(status) {
@@ -597,7 +738,15 @@ export default {
     },
     //查看详情
     catDetails(row){
-      this.catOpen=true;
+      this.reset();
+      this.detailData=[];
+      const id = row.id || this.ids
+      getPurchaseOrderOne(id).then(response => {
+        this.form = response.data;
+        this.detailData = response.data.pocurementdetailsList;
+        this.catOpen=true;
+        this.title = "查看采购详情";
+      });
     },
     initiateApproval(row){
       //发起审批改状态
@@ -816,7 +965,35 @@ export default {
 </script>
 <style>
 .bt{
+  //border: 1px solid red;
+  display: flex;
+  justify-content: flex-start;
+
+}
+.btName{
+  text-align: right;
+  //border: 1px solid rebeccapurple;
+  width: 100px;
+  font-size: 18px;
+  font-weight: 600;
+}
+.btNameValue{
   text-align: left;
-  border: 1px solid red;
+  font-size: 18px;
+}
+.cesiumTabRootA table tr th{
+  border: 1px solid black;
+  border-collapse: collapse; /* 移除单元格之间的间隔 */
+  text-align: center;
+}
+
+.cesiumTabRootA table tr{
+  height: 40px;
+  line-height: 40px;
+}
+.cesiumTabRootA table tr td{
+  border: 1px solid black;
+  border-collapse: collapse; /* 移除单元格之间的间隔 */
+  text-align: center;
 }
 </style>

+ 6 - 109
zkqy-ui/src/views/amichi/purchase/purchaseOrder/purchaseOrderApproval.vue

@@ -65,7 +65,7 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-    
+
     <el-table v-loading="loading" style="margin-top: 20px"  :data="purchaseOrderList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="主键" align="center" prop="id" />
@@ -187,16 +187,6 @@
                 align="center"
                 label="采购组织"
               >
-                <template v-slot="{ row, column }">
-                    <el-input
-                      v-if="rowIndex === row.index && columnIndex === column.index"
-                      v-model="row.organization"
-                      @blur="hideInput(detailData,row.index,columnIndex,'organization')"
-                    >
-                    </el-input>
-                    <!-- 显示 -->
-                    <span v-else>{{ row.organization }}</span>
-                </template>
               </el-table-column>
 
               <el-table-column
@@ -204,14 +194,7 @@
                 label="需求组织"
                 align="center"
               >
-                <template v-slot="{ row, column }">
-                  <el-input
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.demand"
-                    @blur="hideInput"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.demand }}</span>
-                </template>
+
               </el-table-column>
 
               <el-table-column
@@ -219,30 +202,13 @@
                 label="物料编码"
                 align="center"
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.materialnum"
-                    @blur="hideInput"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.materialnum }}</span>
-                </template>
               </el-table-column>
 
               <el-table-column
                 prop="materialname"
                 align="center"
                 :label="'物料名称'">
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.materialname"
-                    @blur="hideInput"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.materialname }}</span>
-                </template>
+
               </el-table-column>
 
               <el-table-column
@@ -250,16 +216,7 @@
                 label="规格型号"
                 align="center"
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
 
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.model"
-                    @blur="hideInput"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.model }}</span>
-                </template>
               </el-table-column>
 
               <el-table-column
@@ -267,16 +224,7 @@
                 label="单位"
                 align="center"
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
 
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.company"
-                    @blur="hideInput"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.company }}</span>
-                </template>
               </el-table-column>
 
               <el-table-column
@@ -285,15 +233,7 @@
                 align="center"
                 sortable
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.quantity"
-                    @blur="hideInput('sl')"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.quantity }}</span>
-                </template>
+
               </el-table-column>
 
               <el-table-column
@@ -302,16 +242,7 @@
                 align="center"
                 sortable
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.approval"
-                    @blur="hideInput('sl')"></el-input>
 
-                  <!-- 显示 -->
-                  <span v-else>{{ row.approval }}</span>
-                </template>
               </el-table-column>
 
               <el-table-column
@@ -320,21 +251,7 @@
                 align="center"
                 width="180"
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-date-picker
-                    style="width: 100%"
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.reachtime"
-                    prop
-                    type="date"
-                    @blur="hideInput"
-                    value-format="yyyy-MM-dd"
-                    placeholder="选择日期">
-                  </el-date-picker>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.reachtime }}</span>
-                </template>
+
               </el-table-column>
 
               <el-table-column
@@ -342,26 +259,6 @@
                 label="备注"
                 align="center"
               >
-                <template v-slot="{ row, column }">
-                  <!-- 编辑 -->
-                  <el-input
-                    v-if="rowIndex === row.index && columnIndex === column.index"
-                    v-model="row.remark"
-                    prop
-                    @blur="hideInput"></el-input>
-                  <!-- 显示 -->
-                  <span v-else>{{ row.remark }}</span>
-                </template>
-              </el-table-column>
-
-              <el-table-column
-                align="center"
-                fixed="right"
-                label="操作"
-                width="120">
-                <template v-slot="scope">
-                  <el-button type="danger"  size="small" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, detailData)"></el-button>
-                </template>
               </el-table-column>
             </el-table>
           </div>
@@ -381,7 +278,7 @@
               >
                 <el-option
                   v-for="(item,index) in dict.type.cgspzt"
-                  v-if="item.label!='待审批'"
+                  v-if="item.label!='待审批'&&item.label!='待发起'"
                   :key="index"
                   :label="item.label"
                   :value="item.value"

+ 756 - 0
zkqy-ui/src/views/amichi/warehouseWarrant/index.vue

@@ -0,0 +1,756 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="入库单编号" prop="warehouseEntryNumber">
+        <el-input
+          v-model="queryParams.warehouseEntryNumber"
+          placeholder="请输入入库单编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="生产订单" prop="productionOrderNumber">
+        <el-input
+          v-model="queryParams.productionOrderNumber"
+          placeholder="请输入生产订单编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="dateOfReceipt">
+        <el-date-picker
+          v-model="queryParams.dateOfReceipt"
+          type="date"
+          @keyup.enter.native="handleQuery"
+          format="yyyy 年 MM 月 dd 日"
+          value-format="yyyy-MM-dd"
+          placeholder="请输入日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="生产任务单号" prop="productionTaskOrderNumber">
+        <el-input
+          v-model="queryParams.productionTaskOrderNumber"
+          placeholder="请输入生产任务单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="审核人" prop="examine">
+        <el-input
+          v-model="queryParams.examine"
+          placeholder="请输入审核人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="制单人" prop="documenter">
+        <el-input
+          v-model="queryParams.documenter"
+          placeholder="请输入制单人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" style="margin-left: 20px">搜索</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" style="margin-bottom: 20px">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['amichi:information: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="['amichi:information: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="['amichi:information: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="['amichi:information:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="informationList" @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="warehouseEntryNumber" />
+      <el-table-column label="生产订单编号" align="center" prop="productionOrderNumber" />
+      <el-table-column label="日期" align="center" prop="dateOfReceipt" />
+      <el-table-column label="生产任务单号" align="center" prop="productionTaskOrderNumber" />
+      <el-table-column label="审核人" align="center" prop="examine" />
+      <el-table-column label="制单人" align="center" prop="documenter" />
+      <el-table-column label="审核状态" align="center" prop="dataApprovalStatus" >
+        <template  v-slot="scope">
+          <el-tag :type="getStatusType(scope.row.dataApprovalStatus)" disable-transitions> <dict-tag  :options="dict.type.rkdsh" :value="scope.row.dataApprovalStatus"/></el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
+            <el-button type="warning">
+              操作<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item  icon="el-icon-edit"  command="handleUpdate">修改</el-dropdown-item>
+              <el-dropdown-item  icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
+              <el-dropdown-item  icon="el-icon-edit" command="handleCat">查看详情</el-dropdown-item>
+              <el-dropdown-item  icon="el-icon-edit" command="initiateApproval">发起审批</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改入库单信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="入库单编号" prop="warehouseEntryNumber">
+              <el-input v-model="form.warehouseEntryNumber" placeholder="请输入入库单编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="生产订单号" prop="productionOrderNumber">
+              <el-input v-model="form.productionOrderNumber" placeholder="请输入生产订单编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="日期" prop="dateOfReceipt">
+              <el-date-picker
+                v-model="form.dateOfReceipt"
+                type="date"
+                @keyup.enter.native="handleQuery"
+                format="yyyy 年 MM 月 dd 日"
+                value-format="yyyy-MM-dd"
+                placeholder="请输入入库单日期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="生产任务单号" prop="productionTaskOrderNumber">
+              <el-input v-model="form.productionTaskOrderNumber" placeholder="请输入生产任务单号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+        </el-row>
+        <el-row class="">
+          <div class="cesiumTabRoot">
+            <!--              :summary-method="getSummaries"-->
+            <el-table
+              :data="detailData"
+              border
+              show-summary
+              :summary-method="getSummaries"
+              :cell-class-name="tabCellClassName"
+              :row-class-name="tabRowClassName"
+              @cell-click="cellClick"
+              style="width:100%">
+              <el-table-column
+                type="index"
+                label="序号"
+                align="center"
+                width="50">
+              </el-table-column>
+              <el-table-column
+                prop="materialCode"
+                align="center"
+                label="物料编码"
+              >
+                <template v-slot="{ row, column }">
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.materialCode"
+                    @blur="hideInput(detailData,row.index,columnIndex,'materialCode')"
+                  >
+                  </el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.materialCode }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="productName"
+                label="产品名称"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.productName"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.productName }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="modelNumber"
+                label="型号"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.modelNumber"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.modelNumber }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="unit"
+                align="center"
+                :label="'单位'">
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.unit"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.unit }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="quantity"
+                label="数量"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.quantity"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.quantity }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="remark"
+                label="备注"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.remark"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.remark }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                align="center"
+                fixed="right"
+                label="操作"
+                width="120">
+                <template v-slot="scope">
+                  <el-button type="danger"  size="small" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, detailData)"></el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-row>
+        <el-row type="flex" class="row-bg" justify="space-between" style="margin-top: 20px">
+          <el-col  :span="10">
+          </el-col>
+          <el-col  :span="10">
+            <el-button type="primary" style="float: right" icon="el-icon-circle-plus" @click="addDetails">新增明细</el-button>
+          </el-col>
+        </el-row>
+<!--        <el-row type="flex" class="row-bg" justify="space-between">-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="审核人" prop="examine">-->
+<!--              <el-input v-model="form.examine" placeholder="请输入审核人" />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="制单人" prop="documenter">-->
+<!--              <el-input v-model="form.documenter" placeholder="请输入制单人" />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>  -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 查看入库单详情信息 -->
+    <el-dialog :title="title" :visible.sync="catOpen" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="126px" class="catForm">
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="入库单编号:" prop="warehouseEntryNumber">
+              {{form.warehouseEntryNumber}}
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="生产订单号:" prop="productionOrderNumber">
+              {{form.productionOrderNumber}}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="日期" prop="dateOfReceipt">
+              {{form.dateOfReceipt}}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="生产任务单号:" prop="productionTaskOrderNumber">
+              {{form.productionTaskOrderNumber}}
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row class="">
+          <div class="cesiumTabRootA">
+            <table style="width: 100%; border-collapse: collapse;">
+              <thead>
+              <tr>
+                <th>序号</th>
+                <th>物料编码</th>
+                <th>产品名称</th>
+                <th>型号</th>
+                <th>单位</th>
+                <th>数量</th>
+                <th>备注</th>
+              </tr>
+              </thead>
+              <tbody>
+              <tr v-for="(item, index) in detailData" :key="index">
+                <td>{{ index + 1 }}</td>
+                <td>{{ item.materialCode }}</td>
+                <td>{{ item.productName }}</td>
+                <td>{{ item.modelNumber }}</td>
+                <td>{{ item.unit }}</td>
+                <td>{{ item.quantity }}</td>
+                <td>{{ item.remark }}</td>
+              </tr>
+              <tr>
+                <td colspan="5" style="text-align: left;padding-left: 40px;font-weight: bolder">合计:</td>
+                <td>{{ totalQuantity }}</td>
+                <td></td>
+              </tr>
+              </tbody>
+            </table>
+          </div>
+        </el-row>
+        <el-row type="flex" class="row-bg" justify="space-between" style="margin-top: 20px">
+          <el-col :span="8">
+            <el-form-item label="审核人:" prop="examine">
+              {{form.examine}}
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="制单人:" prop="documenter">
+              {{form.documenter}}
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="catOpen=false">确 定</el-button>
+        <el-button @click="catOpen=false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listInformation,addInformationInsert,getInformation, delInformation,updateInformationStatus,addInformation, updateInformation } from "@/api/amichi/warehouseWarrant/warehouseWarrant";
+
+export default {
+  name: "Information",
+  dicts: ["rkdsh"],
+  data() {
+    return {
+      catOpen:false,
+      // 行index
+      rowIndex: null,
+      // 列index
+      columnIndex: null,
+      detailData:[],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 入库单信息表格数据
+      informationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        warehouseEntryNumber: null,
+        productionOrderNumber: null,
+        dateOfReceipt: null,
+        productionTaskOrderNumber: null,
+        examine: null,
+        documenter: null,
+        createById: null,
+        updateById: null,
+        dataApprovalStatus: null,
+        processKey: null,
+        taskProcessKey: null,
+        taskNodeKey: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  computed: {
+    totalQuantity() {
+      return this.detailData.reduce((total, item) => total + parseInt(item.quantity), 0);
+    },
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    //展示不同的标签
+    getStatusType(status) {
+      switch (status) {
+        case '3':
+          return 'warning';
+        case '0':
+          return 'danger';
+        case '1':
+          return 'success';
+        case '2':
+          return 'info';
+        default:
+          return '';
+      }
+    },
+    //下拉菜单点击事件
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleUpdate":
+          this.handleUpdate(row)
+          break;
+        case "handleDelete":
+          this.handleDelete(row)
+          break;
+        case "handleCat":
+          this.handleCat(row)
+          break;
+        case "initiateApproval":
+          this.handleCatinitiateApproval(row)
+          break;
+
+        default:
+          break;
+      }
+    },
+    handleCatinitiateApproval(row){
+      let data={"dataApprovalStatus":0,"id":row.id}//1等于待审批
+      updateInformationStatus(data).then(response => {
+        this.$modal.msgSuccess("审批发起成功");
+        this.open = false;
+        this.getList();
+      });
+    },
+    handleCat(row){
+      this.reset();
+      const id = row.id || this.ids
+      getInformation(id).then(response => {
+        this.detailData= response.data.storeEntryDetails;
+        this.form = response.data;
+        this.catOpen = true;
+        this.title = "入库单详情";
+      });
+    },
+    // 表格input失去焦点
+    hideInput(a,b,c,d) {
+      if(a=="sl"){
+        this.updateTotalQuantity();
+      }
+      // console.log(a,b,c,d)
+      // console.log(a[b-1])
+      // console.log("33333")
+      // if(a[b-1]){
+      //   console.log("a")
+      //   if(a[b-1][`${d}`]!=undefined&&a[b-1][`${d}`]!=""){
+      //     a[b-1].isEmpty[`${d}`]=false;
+      //     console.log("h")
+      //   }else {
+      //     console.log("m")
+      //     a[b-1].isEmpty[`${d}`]=true;
+      //   }
+      // }
+      // console.log(this.detailData)
+      this.rowIndex = null;
+      this.columnIndex = null;
+    },
+    //新增明细
+    addDetails(){
+      this.detailData.push(
+        {"materialCode":"","productName":"","modelNumber":"","unit":"","quantity":"","remark":""});
+    },
+    deleteRow(index, rows) {
+      rows.splice(index, 1);
+    },
+    // 对列进行合算
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '合计';
+          return;
+        }
+        const values = data.map(item => Number(item[column.property]));
+        // 只对amount这一列进行总计核算。
+        if (column.property === 'quantity') {
+          if (!values.every(value => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr);
+              if (!isNaN(value)) {
+                return prev + curr;
+              }else {
+                return prev;
+              }
+            }, 0);
+            // sums[index] += ' 元';
+          } else {
+            // sums[index] = '---'
+          }
+        }
+      });
+      return sums;
+    },
+    /** 查询入库单信息列表 */
+    getList() {
+      this.loading = true;
+      listInformation(this.queryParams).then(response => {
+        this.informationList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        warehouseEntryNumber: null,
+        productionOrderNumber: null,
+        dateOfReceipt: null,
+        productionTaskOrderNumber: null,
+        examine: null,
+        documenter: null,
+        remark: null,
+        createById: null,
+        createBy: null,
+        createTime: null,
+        updateById: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null,
+        dataApprovalStatus: null,
+        processKey: null,
+        taskProcessKey: null,
+        taskNodeKey: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    // 点击表格单元格编辑
+    cellClick(row, column) {
+      this.rowIndex = row.index;
+      this.columnIndex = column.index;
+    },
+    // 给表格单元格数据添加列下标
+    tabCellClassName({ column, columnIndex }) {
+      column.index = columnIndex + 1;
+    },
+    // 表格行class-name
+    tabRowClassName({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    /** 重置按钮操作 */
+    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.detailData= [];
+      this.open = true;
+      this.title = "添加入库单信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInformation(id).then(response => {
+        this.detailData= response.data.storeEntryDetails;
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改入库单信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.storeEntryDetails = this.detailData;//详情信息
+          if (this.form.id != null) {
+            updateInformation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInformationInsert(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 delInformation(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('amichi/information/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+<style scoped>
+   .cesiumTabRoot input{
+     width: 100%;
+     height: 100%;
+   }
+
+   .cesiumTabRootA table tr th{
+     border: 1px solid black;
+     border-collapse: collapse; /* 移除单元格之间的间隔 */
+     text-align: center;
+   }
+
+   .cesiumTabRootA table tr{
+     height: 40px;
+     line-height: 40px;
+   }
+   .cesiumTabRootA table tr td{
+     border: 1px solid black;
+     border-collapse: collapse; /* 移除单元格之间的间隔 */
+     text-align: center;
+   }
+   .catForm ::v-deep .el-form-item__label{font-size: 18px;}
+</style>

+ 774 - 0
zkqy-ui/src/views/amichi/warehouseWarrant/warehouseWarrantApproval.vue

@@ -0,0 +1,774 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="入库单编号" prop="warehouseEntryNumber">
+        <el-input
+          v-model="queryParams.warehouseEntryNumber"
+          placeholder="请输入入库单编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="生产订单" prop="productionOrderNumber">
+        <el-input
+          v-model="queryParams.productionOrderNumber"
+          placeholder="请输入生产订单编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="dateOfReceipt">
+        <el-date-picker
+          v-model="queryParams.dateOfReceipt"
+          type="date"
+          @keyup.enter.native="handleQuery"
+          format="yyyy 年 MM 月 dd 日"
+          value-format="yyyy-MM-dd"
+          placeholder="请输入日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="生产任务单号" prop="productionTaskOrderNumber">
+        <el-input
+          v-model="queryParams.productionTaskOrderNumber"
+          placeholder="请输入生产任务单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="审核人" prop="examine">
+        <el-input
+          v-model="queryParams.examine"
+          placeholder="请输入审核人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="制单人" prop="documenter">
+        <el-input
+          v-model="queryParams.documenter"
+          placeholder="请输入制单人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" style="margin-left: 20px">搜索</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" style="margin-bottom: 20px">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['amichi:information: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="['amichi:information: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="['amichi:information: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="['amichi:information:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="informationList" @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="warehouseEntryNumber" />
+      <el-table-column label="生产订单编号" align="center" prop="productionOrderNumber" />
+      <el-table-column label="日期" align="center" prop="dateOfReceipt" />
+      <el-table-column label="生产任务单号" align="center" prop="productionTaskOrderNumber" />
+      <el-table-column label="审核人" align="center" prop="examine" />
+      <el-table-column label="制单人" align="center" prop="documenter" />
+      <el-table-column label="审核状态" align="center" prop="dataApprovalStatus" >
+        <template  v-slot="scope">
+          <el-tag :type="getStatusType(scope.row.dataApprovalStatus)" disable-transitions> <dict-tag  :options="dict.type.rkdsh" :value="scope.row.dataApprovalStatus"/></el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
+            <el-button type="warning">
+              操作<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item  icon="el-icon-edit" command="initiateApproval">审批</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改入库单信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="入库单编号" prop="warehouseEntryNumber">
+              <el-input v-model="form.warehouseEntryNumber" placeholder="请输入入库单编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="生产订单号" prop="productionOrderNumber">
+              <el-input v-model="form.productionOrderNumber" placeholder="请输入生产订单编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="日期" prop="dateOfReceipt">
+              <el-date-picker
+                v-model="form.dateOfReceipt"
+                type="date"
+                @keyup.enter.native="handleQuery"
+                format="yyyy 年 MM 月 dd 日"
+                value-format="yyyy-MM-dd"
+                placeholder="请输入入库单日期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="生产任务单号" prop="productionTaskOrderNumber">
+              <el-input v-model="form.productionTaskOrderNumber" placeholder="请输入生产任务单号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+        </el-row>
+        <el-row class="">
+          <div class="cesiumTabRoot">
+            <!--              :summary-method="getSummaries"-->
+            <el-table
+              :data="detailData"
+              border
+              show-summary
+              :summary-method="getSummaries"
+              :cell-class-name="tabCellClassName"
+              :row-class-name="tabRowClassName"
+              @cell-click="cellClick"
+              style="width:100%">
+              <el-table-column
+                type="index"
+                label="序号"
+                align="center"
+                width="50">
+              </el-table-column>
+              <el-table-column
+                prop="materialCode"
+                align="center"
+                label="物料编码"
+              >
+                <template v-slot="{ row, column }">
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.materialCode"
+                    @blur="hideInput(detailData,row.index,columnIndex,'materialCode')"
+                  >
+                  </el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.materialCode }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="demand"
+                label="产品名称"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.productName"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.productName }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="modelNumber"
+                label="型号"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.modelNumber"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.modelNumber }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="unit"
+                align="center"
+                :label="'单位'">
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.unit"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.unit }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="quantity"
+                label="数量"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.quantity"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.quantity }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="remark"
+                label="备注"
+                align="center"
+              >
+                <template v-slot="{ row, column }">
+                  <!-- 编辑 -->
+                  <el-input
+
+                    v-if="rowIndex === row.index && columnIndex === column.index"
+                    v-model="row.remark"
+                    @blur="hideInput"></el-input>
+                  <!-- 显示 -->
+                  <span v-else>{{ row.remark }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                align="center"
+                fixed="right"
+                label="操作"
+                width="120">
+                <template v-slot="scope">
+                  <el-button type="danger"  size="small" icon="el-icon-delete" @click.native.prevent="deleteRow(scope.$index, detailData)"></el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-row>
+        <el-row type="flex" class="row-bg" justify="space-between" style="margin-top: 20px">
+          <el-col  :span="10">
+          </el-col>
+          <el-col  :span="10">
+            <el-button type="primary" style="float: right" icon="el-icon-circle-plus" @click="addDetails">新增明细</el-button>
+          </el-col>
+        </el-row>
+<!--        <el-row type="flex" class="row-bg" justify="space-between">-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="审核人" prop="examine">-->
+<!--              <el-input v-model="form.examine" placeholder="请输入审核人" />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="8">-->
+<!--            <el-form-item label="制单人" prop="documenter">-->
+<!--              <el-input v-model="form.documenter" placeholder="请输入制单人" />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>  -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 产看审批表单 -->
+    <el-dialog :title="title" :visible.sync="spOpen" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :disabled="true">
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="入库单编号" prop="warehouseEntryNumber">
+              <el-input v-model="form.warehouseEntryNumber" placeholder="请输入入库单编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="生产订单号" prop="productionOrderNumber">
+              <el-input v-model="form.productionOrderNumber" placeholder="请输入生产订单编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="日期" prop="dateOfReceipt">
+              <el-date-picker
+                v-model="form.dateOfReceipt"
+                type="date"
+                @keyup.enter.native="handleQuery"
+                format="yyyy 年 MM 月 dd 日"
+                value-format="yyyy-MM-dd"
+                placeholder="请输入入库单日期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+        <el-row type="flex" class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="生产任务单号" prop="productionTaskOrderNumber">
+              <el-input v-model="form.productionTaskOrderNumber" placeholder="请输入生产任务单号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+          <el-col :span="8">
+
+          </el-col>
+        </el-row>
+        <el-row class="">
+          <div class="cesiumTabRoot">
+            <el-table
+              :data="detailData"
+              border
+              show-summary
+              :summary-method="getSummaries"
+              :cell-class-name="tabCellClassName"
+              :row-class-name="tabRowClassName"
+              @cell-click="cellClick"
+              style="width:100%">
+              <el-table-column
+                type="index"
+                label="序号"
+                align="center"
+                width="50">
+              </el-table-column>
+              <el-table-column
+                prop="materialCode"
+                align="center"
+                label="物料编码"
+              >
+
+              </el-table-column>
+
+              <el-table-column
+                prop="productName"
+                label="产品名称"
+                align="center"
+              >
+              </el-table-column>
+
+              <el-table-column
+                prop="modelNumber"
+                label="型号"
+                align="center"
+              >
+
+              </el-table-column>
+
+              <el-table-column
+                prop="unit"
+                align="center"
+                :label="'单位'">
+
+              </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>
+            </el-table>
+          </div>
+        </el-row>
+
+      </el-form>
+      <el-form ref="spForm" :model="spform" style="margin-top: 20px" :rules="spRules" label-width="80px" >
+        <el-row class="row-bg" justify="space-between" type="flex">
+          <el-col :span="8">
+            <el-form-item label="审批结果:" prop="state">
+              <el-select
+                v-model="spform.dataApprovalStatus"
+                size="small"
+                style="width: 300px"
+                clearable
+                placeholder="请选择审批结果"
+                filterable
+              >
+                <el-option
+                  v-for="(item,index) in dict.type.rkdsh"
+                  v-if="item.label!='待发起'&&item.label!='待审批'"
+                  :key="index"
+                  :label="item.label"
+                  :value="item.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row class="row-bg" justify="space-between">
+          <el-col :span="8">
+            <el-form-item label="审批意见:" prop="approvalOpinionFirst">
+              <el-input type="textarea" v-model="spform.approvalOpinionFirst"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="spOpen=false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+
+import { listInformation,addInformationInsert,getInformation, delInformation,updateInformationStatus,addInformation, updateInformation } from "@/api/amichi/warehouseWarrant/warehouseWarrant";
+
+export default {
+  name: "Information",
+  dicts: ["rkdsh"],
+  data() {
+    return {
+      spform:{},
+      spOpen:false,
+      // 行index
+      rowIndex: null,
+      // 列index
+      columnIndex: null,
+      detailData:[],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 入库单信息表格数据
+      informationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        warehouseEntryNumber: null,
+        productionOrderNumber: null,
+        dateOfReceipt: null,
+        productionTaskOrderNumber: null,
+        examine: null,
+        documenter: null,
+        createById: null,
+        updateById: null,
+        dataApprovalStatus: null,
+        processKey: null,
+        taskProcessKey: null,
+        taskNodeKey: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
+      spRules:{}
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    //展示不同的标签
+    getStatusType(status) {
+      switch (status) {
+        case '3':
+          return 'warning';
+        case '0':
+          return 'danger';
+        case '1':
+          return 'success';
+        case '2':
+          return 'info';
+        default:
+          return '';
+      }
+    },
+    //下拉菜单点击事件
+    handleCommand(command, row) {
+      switch (command) {
+        case "initiateApproval":
+          this.handleCatinitiateApproval(row)
+          break;
+        default:
+          break;
+      }
+    },
+    handleCatinitiateApproval(row){
+
+      this.reset();
+      const id = row.id || this.ids
+      getInformation(id).then(response => {
+        this.detailData= response.data.storeEntryDetails;
+        this.form = response.data;
+        this.spOpen=true;
+        this.title = "查看审批信息";
+      });
+    },
+    handleCat(row){
+      console.log("rrrrrrrr")
+    },
+    // 表格input失去焦点
+    hideInput(a,b,c,d) {
+      if(a=="sl"){
+        this.updateTotalQuantity();
+      }
+      // console.log(a,b,c,d)
+      // console.log(a[b-1])
+      // console.log("33333")
+      // if(a[b-1]){
+      //   console.log("a")
+      //   if(a[b-1][`${d}`]!=undefined&&a[b-1][`${d}`]!=""){
+      //     a[b-1].isEmpty[`${d}`]=false;
+      //     console.log("h")
+      //   }else {
+      //     console.log("m")
+      //     a[b-1].isEmpty[`${d}`]=true;
+      //   }
+      // }
+      // console.log(this.detailData)
+      this.rowIndex = null;
+      this.columnIndex = null;
+    },
+    //新增明细
+    addDetails(){
+      this.detailData.push(
+        {"materialCode":"","productName":"","modelNumber":"","unit":"","quantity":"","remark":""});
+    },
+    deleteRow(index, rows) {
+      rows.splice(index, 1);
+    },
+    // 对列进行合算
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '合计';
+          return;
+        }
+        const values = data.map(item => Number(item[column.property]));
+        // 只对amount这一列进行总计核算。
+        if (column.property === 'quantity') {
+          if (!values.every(value => isNaN(value))) {
+            sums[index] = values.reduce((prev, curr) => {
+              const value = Number(curr);
+              if (!isNaN(value)) {
+                return prev + curr;
+              }else {
+                return prev;
+              }
+            }, 0);
+            // sums[index] += ' 元';
+          } else {
+            // sums[index] = '---'
+          }
+        }
+      });
+      return sums;
+    },
+    /** 查询入库单信息列表 */
+    getList() {
+      this.loading = true;
+      this.queryParams.dataApprovalStatus = 0;
+      listInformation(this.queryParams).then(response => {
+        this.informationList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    sptj(){
+      this.spOpen= false;
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        warehouseEntryNumber: null,
+        productionOrderNumber: null,
+        dateOfReceipt: null,
+        productionTaskOrderNumber: null,
+        examine: null,
+        documenter: null,
+        remark: null,
+        createById: null,
+        createBy: null,
+        createTime: null,
+        updateById: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null,
+        dataApprovalStatus: null,
+        processKey: null,
+        taskProcessKey: null,
+        taskNodeKey: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    // 点击表格单元格编辑
+    cellClick(row, column) {
+      this.rowIndex = row.index;
+      this.columnIndex = column.index;
+    },
+    // 给表格单元格数据添加列下标
+    tabCellClassName({ column, columnIndex }) {
+      column.index = columnIndex + 1;
+    },
+    // 表格行class-name
+    tabRowClassName({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    /** 重置按钮操作 */
+    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.detailData= [];
+      this.open = true;
+      this.title = "添加入库单信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInformation(id).then(response => {
+        this.detailData= response.data.storeEntryDetails;
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改入库单信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.storeEntryDetails = this.detailData;//详情信息
+          this.spform.id = this.form.id;
+          if (this.form.id != null) {
+            updateInformationStatus(this.spform).then(response => {
+              this.$modal.msgSuccess("审批成功");
+              this.spOpen= false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除入库单信息编号为"' + ids + '"的数据项?').then(function() {
+        return delInformation(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('amichi/information/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+<style scoped>
+   .cesiumTabRoot input{
+     width: 100%;
+     height: 100%;
+   }
+</style>

+ 1 - 0
zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -1508,6 +1508,7 @@ export default {
             this.open = false;
           })
           .catch((res) => {
+            console.log('res',res);
             this.$modal.msgError("表单校验失败,请规范填写数据");
           });
       } else if (this.formType == "dragFormGroup") {