Quellcode durchsuchen

feat:工序扫描导出快捷按钮,生产结束判定修改,生产详情页面优化、手持机扫描记录按钮展示数据优化,场内计划页面,后端接口

lucky vor 4 Monaten
Ursprung
Commit
a75bda8f2e
39 geänderte Dateien mit 3637 neuen und 100 gelöschten Zeilen
  1. 107 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/IndoorMaterialInformationController.java
  2. 107 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/IndoorPlanInformationController.java
  3. 107 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/IndoorProductionGroupInformationController.java
  4. 4 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/OnSiteProgramDetailsController.java
  5. 122 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/IndoorMaterialInformation.java
  6. 181 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/IndoorPlanInformation.java
  7. 52 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/IndoorProductionGroupInformation.java
  8. 13 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/RingScanInformation.java
  9. 23 7
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/RingScanInformationVo.java
  10. 2 2
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionOrderServiceImpl.java
  11. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/IndoorMaterialInformationMapper.java
  12. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/IndoorPlanInformationMapper.java
  13. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/IndoorProductionGroupInformationMapper.java
  14. 4 3
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/scheduling/ScheduledBean.java
  15. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IIndoorMaterialInformationService.java
  16. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IIndoorPlanInformationService.java
  17. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IIndoorProductionGroupInformationService.java
  18. 2 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IOnSiteProgramDetailsService.java
  19. 93 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/IndoorMaterialInformationServiceImpl.java
  20. 93 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/IndoorPlanInformationServiceImpl.java
  21. 93 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/IndoorProductionGroupInformationServiceImpl.java
  22. 21 21
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/OnSiteProgramDetailsServiceImpl.java
  23. 52 18
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java
  24. 83 0
      zkqy-fujian-amichi/src/main/resources/mapper/IndoorMaterialInformationMapper.xml
  25. 101 0
      zkqy-fujian-amichi/src/main/resources/mapper/IndoorPlanInformationMapper.xml
  26. 56 0
      zkqy-fujian-amichi/src/main/resources/mapper/IndoorProductionGroupInformationMapper.xml
  27. 6 6
      zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationFirstMapper.xml
  28. 39 11
      zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml
  29. 44 0
      zkqy-ui/src/api/amichi/indoorMaterialInformation/information.js
  30. 44 0
      zkqy-ui/src/api/amichi/indoorPlanInformation/information.js
  31. 44 0
      zkqy-ui/src/api/amichi/indoorProductionGroupInfo/information.js
  32. 12 10
      zkqy-ui/src/views/amichi/dialogCompments/customizedVersion/productionForm.vue
  33. 345 0
      zkqy-ui/src/views/amichi/planTask/inPlanPage/indoorMaterialInformation/index.vue
  34. 371 0
      zkqy-ui/src/views/amichi/planTask/inPlanPage/indoorPlanInformation/index.vue
  35. 248 0
      zkqy-ui/src/views/amichi/planTask/inPlanPage/indoorProductionGroupInfo/index.vue
  36. 141 19
      zkqy-ui/src/views/amichi/planTask/inPlant.vue
  37. 345 0
      zkqy-ui/src/views/amichi/print/ygmPrint2 copy.vue
  38. 278 0
      zkqy-ui/src/views/amichi/print/ygmPrint2.vue
  39. 36 0
      zkqy-ui/src/views/amichi/ringScanInformation/index.vue

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

@@ -0,0 +1,107 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.zkqy.amichi.domain.IndoorMaterialInformation;
+import com.zkqy.amichi.service.IIndoorMaterialInformationService;
+
+
+/**
+ * 场内计划信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@RestController
+@RequestMapping("/indoorMaterialInformation/information")
+public class IndoorMaterialInformationController extends BaseController
+{
+    @Autowired
+    private IIndoorMaterialInformationService indoorMaterialInformationService;
+
+    /**
+     * 查询场内计划信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('indoorMaterialInformation:information:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IndoorMaterialInformation indoorMaterialInformation)
+    {
+        startPage();
+        List<IndoorMaterialInformation> list = indoorMaterialInformationService.selectIndoorMaterialInformationList(indoorMaterialInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出场内计划信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('indoorMaterialInformation:information:export')")
+    @Log(title = "场内计划信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IndoorMaterialInformation indoorMaterialInformation)
+    {
+        List<IndoorMaterialInformation> list = indoorMaterialInformationService.selectIndoorMaterialInformationList(indoorMaterialInformation);
+        ExcelUtil<IndoorMaterialInformation> util = new ExcelUtil<IndoorMaterialInformation>(IndoorMaterialInformation.class);
+        util.exportExcel(response, list, "场内计划信息数据");
+    }
+
+    /**
+     * 获取场内计划信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorMaterialInformation:information:query')")
+    @GetMapping(value = "/{materialCode}")
+    public AjaxResult getInfo(@PathVariable("materialCode") String materialCode)
+    {
+        return success(indoorMaterialInformationService.selectIndoorMaterialInformationByMaterialCode(materialCode));
+    }
+
+    /**
+     * 新增场内计划信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorMaterialInformation:information:add')")
+    @Log(title = "场内计划信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IndoorMaterialInformation indoorMaterialInformation)
+    {
+        return toAjax(indoorMaterialInformationService.insertIndoorMaterialInformation(indoorMaterialInformation));
+    }
+
+    /**
+     * 修改场内计划信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorMaterialInformation:information:edit')")
+    @Log(title = "场内计划信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IndoorMaterialInformation indoorMaterialInformation)
+    {
+        return toAjax(indoorMaterialInformationService.updateIndoorMaterialInformation(indoorMaterialInformation));
+    }
+
+    /**
+     * 删除场内计划信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorMaterialInformation:information:remove')")
+    @Log(title = "场内计划信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{materialCodes}")
+    public AjaxResult remove(@PathVariable String[] materialCodes)
+    {
+        return toAjax(indoorMaterialInformationService.deleteIndoorMaterialInformationByMaterialCodes(materialCodes));
+    }
+}

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

@@ -0,0 +1,107 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.zkqy.amichi.domain.IndoorPlanInformation;
+import com.zkqy.amichi.service.IIndoorPlanInformationService;
+
+
+/**
+ * 场内计划信息:记录场内生产计划相关的详细信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@RestController
+@RequestMapping("/indoorPlanInformation/information")
+public class IndoorPlanInformationController extends BaseController
+{
+    @Autowired
+    private IIndoorPlanInformationService indoorPlanInformationService;
+
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('indoorPlanInformation:information:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IndoorPlanInformation indoorPlanInformation)
+    {
+        startPage();
+        List<IndoorPlanInformation> list = indoorPlanInformationService.selectIndoorPlanInformationList(indoorPlanInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出场内计划信息:记录场内生产计划相关的详细信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('indoorPlanInformation:information:export')")
+    @Log(title = "场内计划信息:记录场内生产计划相关的详细信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IndoorPlanInformation indoorPlanInformation)
+    {
+        List<IndoorPlanInformation> list = indoorPlanInformationService.selectIndoorPlanInformationList(indoorPlanInformation);
+        ExcelUtil<IndoorPlanInformation> util = new ExcelUtil<IndoorPlanInformation>(IndoorPlanInformation.class);
+        util.exportExcel(response, list, "场内计划信息:记录场内生产计划相关的详细信息数据");
+    }
+
+    /**
+     * 获取场内计划信息:记录场内生产计划相关的详细信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorPlanInformation:information:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(indoorPlanInformationService.selectIndoorPlanInformationById(id));
+    }
+
+    /**
+     * 新增场内计划信息:记录场内生产计划相关的详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorPlanInformation:information:add')")
+    @Log(title = "场内计划信息:记录场内生产计划相关的详细信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IndoorPlanInformation indoorPlanInformation)
+    {
+        return toAjax(indoorPlanInformationService.insertIndoorPlanInformation(indoorPlanInformation));
+    }
+
+    /**
+     * 修改场内计划信息:记录场内生产计划相关的详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorPlanInformation:information:edit')")
+    @Log(title = "场内计划信息:记录场内生产计划相关的详细信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IndoorPlanInformation indoorPlanInformation)
+    {
+        return toAjax(indoorPlanInformationService.updateIndoorPlanInformation(indoorPlanInformation));
+    }
+
+    /**
+     * 删除场内计划信息:记录场内生产计划相关的详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorPlanInformation:information:remove')")
+    @Log(title = "场内计划信息:记录场内生产计划相关的详细信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(indoorPlanInformationService.deleteIndoorPlanInformationByIds(ids));
+    }
+}

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

@@ -0,0 +1,107 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.zkqy.amichi.domain.IndoorProductionGroupInformation;
+import com.zkqy.amichi.service.IIndoorProductionGroupInformationService;
+
+
+/**
+ * 分组信息:用于记录各个分组的基本信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@RestController
+@RequestMapping("/indoorProductionGroupInfo/information")
+public class IndoorProductionGroupInformationController extends BaseController
+{
+    @Autowired
+    private IIndoorProductionGroupInformationService indoorProductionGroupInformationService;
+
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('indoorProductionGroupInfo:information:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        startPage();
+        List<IndoorProductionGroupInformation> list = indoorProductionGroupInformationService.selectIndoorProductionGroupInformationList(indoorProductionGroupInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出分组信息:用于记录各个分组的基本信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('indoorProductionGroupInfo:information:export')")
+    @Log(title = "分组信息:用于记录各个分组的基本信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        List<IndoorProductionGroupInformation> list = indoorProductionGroupInformationService.selectIndoorProductionGroupInformationList(indoorProductionGroupInformation);
+        ExcelUtil<IndoorProductionGroupInformation> util = new ExcelUtil<IndoorProductionGroupInformation>(IndoorProductionGroupInformation.class);
+        util.exportExcel(response, list, "分组信息:用于记录各个分组的基本信息数据");
+    }
+
+    /**
+     * 获取分组信息:用于记录各个分组的基本信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorProductionGroupInfo:information:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(indoorProductionGroupInformationService.selectIndoorProductionGroupInformationById(id));
+    }
+
+    /**
+     * 新增分组信息:用于记录各个分组的基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorProductionGroupInfo:information:add')")
+    @Log(title = "分组信息:用于记录各个分组的基本信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        return toAjax(indoorProductionGroupInformationService.insertIndoorProductionGroupInformation(indoorProductionGroupInformation));
+    }
+
+    /**
+     * 修改分组信息:用于记录各个分组的基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorProductionGroupInfo:information:edit')")
+    @Log(title = "分组信息:用于记录各个分组的基本信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        return toAjax(indoorProductionGroupInformationService.updateIndoorProductionGroupInformation(indoorProductionGroupInformation));
+    }
+
+    /**
+     * 删除分组信息:用于记录各个分组的基本信息
+     */
+    @PreAuthorize("@ss.hasPermi('indoorProductionGroupInfo:information:remove')")
+    @Log(title = "分组信息:用于记录各个分组的基本信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(indoorProductionGroupInformationService.deleteIndoorProductionGroupInformationByIds(ids));
+    }
+}

+ 4 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/OnSiteProgramDetailsController.java

@@ -4,6 +4,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.zkqy.amichi.domain.OnSiteProgramDetails;
+import com.zkqy.amichi.domain.ProductionPlanningManagement;
 import com.zkqy.amichi.domain.vo.OnSiteProgramDetailsVo;
 import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
 import io.swagger.annotations.Api;
@@ -113,7 +114,9 @@ public class OnSiteProgramDetailsController extends BaseController {
     public TableDataInfo getOnSiteProgramDetailsInfoVo(@RequestBody ProductionPlanningManagementVo productionPlanningManagementVo)
     {
         startPage();
-        List<OnSiteProgramDetailsVo> onSiteProgramDetailsInfoVo = onSiteProgramDetailsService.getOnSiteProgramDetailsInfoVo(productionPlanningManagementVo);
+        //hmc
+//        List<OnSiteProgramDetailsVo> onSiteProgramDetailsInfoVo = onSiteProgramDetailsService.getOnSiteProgramDetailsInfoVo(productionPlanningManagementVo);
+        List<ProductionPlanningManagement> onSiteProgramDetailsInfoVo = onSiteProgramDetailsService.getOnSiteProgramDetailsInfoVo(productionPlanningManagementVo);
         return getDataTable(onSiteProgramDetailsInfoVo);
     }
 

+ 122 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/IndoorMaterialInformation.java

@@ -0,0 +1,122 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 场内计划信息对象 indoor_material_information
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public class IndoorMaterialInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 物料编码:物料的唯一编码 */
+    private String materialCode;
+
+    /** 物料名称:物料的具体名称 */
+    @Excel(name = "物料名称:物料的具体名称")
+    private String materialName;
+
+    /** 型号:物料的型号描述 */
+    @Excel(name = "型号:物料的型号描述")
+    private String model;
+
+    /** 规格型号:物料的具体规格参数 */
+    @Excel(name = "规格型号:物料的具体规格参数")
+    private String specification;
+
+    /** 描述:对物料的详细描述 */
+    @Excel(name = "描述:对物料的详细描述")
+    private String description;
+
+    /** 单位:物料的计量单位 */
+    @Excel(name = "单位:物料的计量单位")
+    private String unit;
+
+    /** 组ID:所属分组的ID,关联分组表 */
+    @Excel(name = "组ID:所属分组的ID,关联分组表")
+    private Long groupId;
+
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setModel(String model) 
+    {
+        this.model = model;
+    }
+
+    public String getModel() 
+    {
+        return model;
+    }
+    public void setSpecification(String specification) 
+    {
+        this.specification = specification;
+    }
+
+    public String getSpecification() 
+    {
+        return specification;
+    }
+    public void setDescription(String description) 
+    {
+        this.description = description;
+    }
+
+    public String getDescription() 
+    {
+        return description;
+    }
+    public void setUnit(String unit) 
+    {
+        this.unit = unit;
+    }
+
+    public String getUnit() 
+    {
+        return unit;
+    }
+    public void setGroupId(Long groupId) 
+    {
+        this.groupId = groupId;
+    }
+
+    public Long getGroupId() 
+    {
+        return groupId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("model", getModel())
+            .append("specification", getSpecification())
+            .append("description", getDescription())
+            .append("unit", getUnit())
+            .append("groupId", getGroupId())
+            .toString();
+    }
+}

+ 181 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/IndoorPlanInformation.java

@@ -0,0 +1,181 @@
+package com.zkqy.amichi.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 场内计划信息:记录场内生产计划相关的详细信息对象 indoor_plan_information
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public class IndoorPlanInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID:唯一标识每条记录 */
+    private Long id;
+
+    /** 任务编号:唯一标识每个生产任务 */
+    @Excel(name = "任务编号:唯一标识每个生产任务")
+    private String taskId;
+
+    /** 物料编码:物料的唯一编码 */
+    @Excel(name = "物料编码:物料的唯一编码")
+    private String materialCode;
+
+    /** 物料名称:物料的具体名称 */
+    @Excel(name = "物料名称:物料的具体名称")
+    private String materialName;
+
+    /** 物料型号:物料的型号描述 */
+    @Excel(name = "物料型号:物料的型号描述")
+    private String materialModel;
+
+    /** 物料规格:物料的具体规格 */
+    @Excel(name = "物料规格:物料的具体规格")
+    private String materialSpecification;
+
+    /** 生产时间:任务计划的生产时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "生产时间:任务计划的生产时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date productionTime;
+
+    /** 任务数量:本次任务需要生产的数量 */
+    @Excel(name = "任务数量:本次任务需要生产的数量")
+    private Long taskQuantity;
+
+    /** 计划状态:任务当前的状态 1:生产中 2:已完成 3:已取消 */
+    @Excel(name = "计划状态:任务当前的状态 1:生产中 2:已完成 3:已取消")
+    private String planStatus;
+
+    /** 产品描述:对产品的详细描述 */
+    @Excel(name = "产品描述:对产品的详细描述")
+    private String productDescription;
+
+    /** 备注:其他需要说明的信息 */
+    @Excel(name = "备注:其他需要说明的信息")
+    private String remarks;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTaskId(String taskId) 
+    {
+        this.taskId = taskId;
+    }
+
+    public String getTaskId() 
+    {
+        return taskId;
+    }
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setMaterialModel(String materialModel) 
+    {
+        this.materialModel = materialModel;
+    }
+
+    public String getMaterialModel() 
+    {
+        return materialModel;
+    }
+    public void setMaterialSpecification(String materialSpecification) 
+    {
+        this.materialSpecification = materialSpecification;
+    }
+
+    public String getMaterialSpecification() 
+    {
+        return materialSpecification;
+    }
+    public void setProductionTime(Date productionTime) 
+    {
+        this.productionTime = productionTime;
+    }
+
+    public Date getProductionTime() 
+    {
+        return productionTime;
+    }
+    public void setTaskQuantity(Long taskQuantity) 
+    {
+        this.taskQuantity = taskQuantity;
+    }
+
+    public Long getTaskQuantity() 
+    {
+        return taskQuantity;
+    }
+    public void setPlanStatus(String planStatus) 
+    {
+        this.planStatus = planStatus;
+    }
+
+    public String getPlanStatus() 
+    {
+        return planStatus;
+    }
+    public void setProductDescription(String productDescription) 
+    {
+        this.productDescription = productDescription;
+    }
+
+    public String getProductDescription() 
+    {
+        return productDescription;
+    }
+    public void setRemarks(String remarks) 
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() 
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("taskId", getTaskId())
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("materialModel", getMaterialModel())
+            .append("materialSpecification", getMaterialSpecification())
+            .append("productionTime", getProductionTime())
+            .append("taskQuantity", getTaskQuantity())
+            .append("planStatus", getPlanStatus())
+            .append("productDescription", getProductDescription())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 52 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/IndoorProductionGroupInformation.java

@@ -0,0 +1,52 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 分组信息:用于记录各个分组的基本信息对象 indoor_production_group_information
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public class IndoorProductionGroupInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID:唯一标识每个分组 */
+    private Long id;
+
+    /** 组名:分组的名称 */
+    @Excel(name = "组名:分组的名称")
+    private String groupName;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setGroupName(String groupName) 
+    {
+        this.groupName = groupName;
+    }
+
+    public String getGroupName() 
+    {
+        return groupName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("groupName", getGroupName())
+            .toString();
+    }
+}

+ 13 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/RingScanInformation.java

@@ -42,10 +42,22 @@ public class RingScanInformation extends BaseEntity
     private String deviceName;
 
     /** 扫描时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @Excel(name = "扫描时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime scanningTime;
 
+
+    /** 扫描时间 加这个字段是为了转日期转不过去 */
+    private String scanningTimeString;
+
+    public String getScanningTimeString() {
+        return scanningTimeString;
+    }
+
+    public void setScanningTimeString(String scanningTimeString) {
+        this.scanningTimeString = scanningTimeString;
+    }
+
     /** 区间范围时间查询,扫描时间 */
     private List<String> scanningTimes;
 

+ 23 - 7
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/vo/RingScanInformationVo.java

@@ -3,6 +3,7 @@ package com.zkqy.amichi.domain.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zkqy.amichi.domain.RingScanInformation;
 import com.zkqy.common.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
@@ -17,26 +18,27 @@ public class RingScanInformationVo {
     @Excel(name = "人员姓名")
     private  String  personnelName;
 
-    @Excel(name = "设备名称")
+//    @Excel(name = "设备名称")
     private  String deviceName;
     @Excel(name = "生产订单号")
     private  String  orderNumber;
     @Excel(name = "订单号")
     private  String  demandDocument;
 
-//    @Excel(name = "流转卡序列号")
-    private  String  serialNumber;
 
+    private  String  serialNumber;
+    @Excel(name = "流转卡序列号")
+    private  String  nativeNumbering;
     @Excel(name = "工序")
     private  String  processName;
 
     private String stationId;
 
-    @Excel(name = "工位")
+//    @Excel(name = "工位")
     private  String  stationName;
 
     /** 扫描内容 */
-    @Excel(name = "序列号")
+    @Excel(name = "定子/转子 序列号")
     private String contentInformation;
 
     @Excel(name = "原材料编码")
@@ -44,9 +46,13 @@ public class RingScanInformationVo {
 
     @Excel(name = "原材料名称")
     private  String  materialName;
-    @Excel(name = "规格")
+
+    @Excel(name = "型号")
     private  String  model;
 
+    @Excel(name = "规格")
+    private  String  specification;
+
     private String process;
 
 
@@ -54,6 +60,7 @@ public class RingScanInformationVo {
     /** 扫描时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "扫描时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime scanningTime;
 
     @Excel(name = "扫描信息")
@@ -62,6 +69,15 @@ public class RingScanInformationVo {
     private String deviceNumber;
 
 
+
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+
     public LocalDateTime getScanningTime() {
         return scanningTime;
     }
@@ -94,7 +110,7 @@ public class RingScanInformationVo {
 
 
 
-    private String nativeNumbering;
+
 
     private String executionMark;
 

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

@@ -156,11 +156,11 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
                         "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,FSaleOrderNo,FPickMtrlStatus," +
                         "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
                         "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate,F_PONP_XQRQ,FPlanStartDate,FPlanFinishDate\",\n" +
-                        "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FDate\",\"Compare\":\"63\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                        "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"(\",\"FieldName\":\"FDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":1},{\"Left\":\"\",\"FieldName\":\"FDate\",\"Compare\":\"3\",\"Value\":\"60\",\"Right\":\")\",\"Logic\":0}],\n" +
                         "    \"OrderString\": \"\",\n" +
                         "    \"TopRowCount\": 0,\n" +
                         "    \"StartRow\": 0,\n" +
-                        "    \"Limit\": 5000,\n" +
+                        "    \"Limit\": 8000,\n" +
                         "    \"SubSystemId\": \"\"\n" +
                         "}";
                 //查询结果

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

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.IndoorMaterialInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 场内计划信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@Mapper
+public interface IndoorMaterialInformationMapper 
+{
+    /**
+     * 查询场内计划信息
+     * 
+     * @param materialCode 场内计划信息主键
+     * @return 场内计划信息
+     */
+    public IndoorMaterialInformation selectIndoorMaterialInformationByMaterialCode(String materialCode);
+
+    /**
+     * 查询场内计划信息列表
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 场内计划信息集合
+     */
+    public List<IndoorMaterialInformation> selectIndoorMaterialInformationList(IndoorMaterialInformation indoorMaterialInformation);
+
+    /**
+     * 新增场内计划信息
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 结果
+     */
+    public int insertIndoorMaterialInformation(IndoorMaterialInformation indoorMaterialInformation);
+
+    /**
+     * 修改场内计划信息
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 结果
+     */
+    public int updateIndoorMaterialInformation(IndoorMaterialInformation indoorMaterialInformation);
+
+    /**
+     * 删除场内计划信息
+     * 
+     * @param materialCode 场内计划信息主键
+     * @return 结果
+     */
+    public int deleteIndoorMaterialInformationByMaterialCode(String materialCode);
+
+    /**
+     * 批量删除场内计划信息
+     * 
+     * @param materialCodes 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteIndoorMaterialInformationByMaterialCodes(String[] materialCodes);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.IndoorPlanInformation;
+
+/**
+ * 场内计划信息:记录场内生产计划相关的详细信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public interface IndoorPlanInformationMapper 
+{
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param id 场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 场内计划信息:记录场内生产计划相关的详细信息
+     */
+    public IndoorPlanInformation selectIndoorPlanInformationById(Long id);
+
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息列表
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 场内计划信息:记录场内生产计划相关的详细信息集合
+     */
+    public List<IndoorPlanInformation> selectIndoorPlanInformationList(IndoorPlanInformation indoorPlanInformation);
+
+    /**
+     * 新增场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 结果
+     */
+    public int insertIndoorPlanInformation(IndoorPlanInformation indoorPlanInformation);
+
+    /**
+     * 修改场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 结果
+     */
+    public int updateIndoorPlanInformation(IndoorPlanInformation indoorPlanInformation);
+
+    /**
+     * 删除场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param id 场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 结果
+     */
+    public int deleteIndoorPlanInformationById(Long id);
+
+    /**
+     * 批量删除场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteIndoorPlanInformationByIds(Long[] ids);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.IndoorProductionGroupInformation;
+
+/**
+ * 分组信息:用于记录各个分组的基本信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public interface IndoorProductionGroupInformationMapper 
+{
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息
+     * 
+     * @param id 分组信息:用于记录各个分组的基本信息主键
+     * @return 分组信息:用于记录各个分组的基本信息
+     */
+    public IndoorProductionGroupInformation selectIndoorProductionGroupInformationById(Long id);
+
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息列表
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 分组信息:用于记录各个分组的基本信息集合
+     */
+    public List<IndoorProductionGroupInformation> selectIndoorProductionGroupInformationList(IndoorProductionGroupInformation indoorProductionGroupInformation);
+
+    /**
+     * 新增分组信息:用于记录各个分组的基本信息
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 结果
+     */
+    public int insertIndoorProductionGroupInformation(IndoorProductionGroupInformation indoorProductionGroupInformation);
+
+    /**
+     * 修改分组信息:用于记录各个分组的基本信息
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 结果
+     */
+    public int updateIndoorProductionGroupInformation(IndoorProductionGroupInformation indoorProductionGroupInformation);
+
+    /**
+     * 删除分组信息:用于记录各个分组的基本信息
+     * 
+     * @param id 分组信息:用于记录各个分组的基本信息主键
+     * @return 结果
+     */
+    public int deleteIndoorProductionGroupInformationById(Long id);
+
+    /**
+     * 批量删除分组信息:用于记录各个分组的基本信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteIndoorProductionGroupInformationByIds(Long[] ids);
+}

+ 4 - 3
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/scheduling/ScheduledBean.java

@@ -20,6 +20,7 @@ import com.zkqy.common.core.redis.RedisCache;
 import com.zkqy.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.time.format.DateTimeFormatter;
@@ -64,7 +65,7 @@ public class ScheduledBean {
      * 流转卡序列号信息
      * 焊接单数据信息
      */
-//    @Scheduled(cron = "0 0 0/1 * * ?", zone = "Asia/Shanghai")
+    @Scheduled(cron = "0 0 0/1 * * ?", zone = "Asia/Shanghai")
     public void printLog1(){
         Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:ptd:pulled", "true");
         if (aTrue) {
@@ -82,11 +83,11 @@ public class ScheduledBean {
                         "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,FSaleOrderNo,FPickMtrlStatus," +
                         "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
                         "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate,F_PONP_XQRQ,FPlanStartDate,FPlanFinishDate\",\n" +
-                        "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"63\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                        "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":1}],\n" +
                         "    \"OrderString\": \"\",\n" +
                         "    \"TopRowCount\": 0,\n" +
                         "    \"StartRow\": 0,\n" +
-                        "    \"Limit\": 5000,\n" +
+                        "    \"Limit\": 8000,\n" +
                         "    \"SubSystemId\": \"\"\n" +
                         "}";
                 //查询结果

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.IndoorMaterialInformation;
+
+/**
+ * 场内计划信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public interface IIndoorMaterialInformationService 
+{
+    /**
+     * 查询场内计划信息
+     * 
+     * @param materialCode 场内计划信息主键
+     * @return 场内计划信息
+     */
+    public IndoorMaterialInformation selectIndoorMaterialInformationByMaterialCode(String materialCode);
+
+    /**
+     * 查询场内计划信息列表
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 场内计划信息集合
+     */
+    public List<IndoorMaterialInformation> selectIndoorMaterialInformationList(IndoorMaterialInformation indoorMaterialInformation);
+
+    /**
+     * 新增场内计划信息
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 结果
+     */
+    public int insertIndoorMaterialInformation(IndoorMaterialInformation indoorMaterialInformation);
+
+    /**
+     * 修改场内计划信息
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 结果
+     */
+    public int updateIndoorMaterialInformation(IndoorMaterialInformation indoorMaterialInformation);
+
+    /**
+     * 批量删除场内计划信息
+     * 
+     * @param materialCodes 需要删除的场内计划信息主键集合
+     * @return 结果
+     */
+    public int deleteIndoorMaterialInformationByMaterialCodes(String[] materialCodes);
+
+    /**
+     * 删除场内计划信息信息
+     * 
+     * @param materialCode 场内计划信息主键
+     * @return 结果
+     */
+    public int deleteIndoorMaterialInformationByMaterialCode(String materialCode);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.IndoorPlanInformation;
+
+/**
+ * 场内计划信息:记录场内生产计划相关的详细信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public interface IIndoorPlanInformationService 
+{
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param id 场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 场内计划信息:记录场内生产计划相关的详细信息
+     */
+    public IndoorPlanInformation selectIndoorPlanInformationById(Long id);
+
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息列表
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 场内计划信息:记录场内生产计划相关的详细信息集合
+     */
+    public List<IndoorPlanInformation> selectIndoorPlanInformationList(IndoorPlanInformation indoorPlanInformation);
+
+    /**
+     * 新增场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 结果
+     */
+    public int insertIndoorPlanInformation(IndoorPlanInformation indoorPlanInformation);
+
+    /**
+     * 修改场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 结果
+     */
+    public int updateIndoorPlanInformation(IndoorPlanInformation indoorPlanInformation);
+
+    /**
+     * 批量删除场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param ids 需要删除的场内计划信息:记录场内生产计划相关的详细信息主键集合
+     * @return 结果
+     */
+    public int deleteIndoorPlanInformationByIds(Long[] ids);
+
+    /**
+     * 删除场内计划信息:记录场内生产计划相关的详细信息信息
+     * 
+     * @param id 场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 结果
+     */
+    public int deleteIndoorPlanInformationById(Long id);
+}

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

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.IndoorProductionGroupInformation;
+
+/**
+ * 分组信息:用于记录各个分组的基本信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+public interface IIndoorProductionGroupInformationService 
+{
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息
+     * 
+     * @param id 分组信息:用于记录各个分组的基本信息主键
+     * @return 分组信息:用于记录各个分组的基本信息
+     */
+    public IndoorProductionGroupInformation selectIndoorProductionGroupInformationById(Long id);
+
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息列表
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 分组信息:用于记录各个分组的基本信息集合
+     */
+    public List<IndoorProductionGroupInformation> selectIndoorProductionGroupInformationList(IndoorProductionGroupInformation indoorProductionGroupInformation);
+
+    /**
+     * 新增分组信息:用于记录各个分组的基本信息
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 结果
+     */
+    public int insertIndoorProductionGroupInformation(IndoorProductionGroupInformation indoorProductionGroupInformation);
+
+    /**
+     * 修改分组信息:用于记录各个分组的基本信息
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 结果
+     */
+    public int updateIndoorProductionGroupInformation(IndoorProductionGroupInformation indoorProductionGroupInformation);
+
+    /**
+     * 批量删除分组信息:用于记录各个分组的基本信息
+     * 
+     * @param ids 需要删除的分组信息:用于记录各个分组的基本信息主键集合
+     * @return 结果
+     */
+    public int deleteIndoorProductionGroupInformationByIds(Long[] ids);
+
+    /**
+     * 删除分组信息:用于记录各个分组的基本信息信息
+     * 
+     * @param id 分组信息:用于记录各个分组的基本信息主键
+     * @return 结果
+     */
+    public int deleteIndoorProductionGroupInformationById(Long id);
+}

+ 2 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IOnSiteProgramDetailsService.java

@@ -3,6 +3,7 @@ package com.zkqy.amichi.service;
 import java.util.List;
 
 import com.zkqy.amichi.domain.OnSiteProgramDetails;
+import com.zkqy.amichi.domain.ProductionPlanningManagement;
 import com.zkqy.amichi.domain.vo.OnSiteProgramDetailsVo;
 import com.zkqy.amichi.domain.vo.ProductionPlanningManagementVo;
 
@@ -74,7 +75,7 @@ public interface IOnSiteProgramDetailsService
      * @param productionPlanningManagementVo
      * @return
      */
-    List<OnSiteProgramDetailsVo> getOnSiteProgramDetailsInfoVo(ProductionPlanningManagementVo productionPlanningManagementVo);
+    List<ProductionPlanningManagement> getOnSiteProgramDetailsInfoVo(ProductionPlanningManagementVo productionPlanningManagementVo);
 
     /**
      * 修改场内计划的查询回显

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

@@ -0,0 +1,93 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.IndoorMaterialInformationMapper;
+import com.zkqy.amichi.domain.IndoorMaterialInformation;
+import com.zkqy.amichi.service.IIndoorMaterialInformationService;
+
+/**
+ * 场内计划信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@Service
+public class IndoorMaterialInformationServiceImpl implements IIndoorMaterialInformationService 
+{
+    @Autowired
+    private IndoorMaterialInformationMapper indoorMaterialInformationMapper;
+
+    /**
+     * 查询场内计划信息
+     * 
+     * @param materialCode 场内计划信息主键
+     * @return 场内计划信息
+     */
+    @Override
+    public IndoorMaterialInformation selectIndoorMaterialInformationByMaterialCode(String materialCode)
+    {
+        return indoorMaterialInformationMapper.selectIndoorMaterialInformationByMaterialCode(materialCode);
+    }
+
+    /**
+     * 查询场内计划信息列表
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 场内计划信息
+     */
+    @Override
+    public List<IndoorMaterialInformation> selectIndoorMaterialInformationList(IndoorMaterialInformation indoorMaterialInformation)
+    {
+        return indoorMaterialInformationMapper.selectIndoorMaterialInformationList(indoorMaterialInformation);
+    }
+
+    /**
+     * 新增场内计划信息
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 结果
+     */
+    @Override
+    public int insertIndoorMaterialInformation(IndoorMaterialInformation indoorMaterialInformation)
+    {
+        return indoorMaterialInformationMapper.insertIndoorMaterialInformation(indoorMaterialInformation);
+    }
+
+    /**
+     * 修改场内计划信息
+     * 
+     * @param indoorMaterialInformation 场内计划信息
+     * @return 结果
+     */
+    @Override
+    public int updateIndoorMaterialInformation(IndoorMaterialInformation indoorMaterialInformation)
+    {
+        return indoorMaterialInformationMapper.updateIndoorMaterialInformation(indoorMaterialInformation);
+    }
+
+    /**
+     * 批量删除场内计划信息
+     * 
+     * @param materialCodes 需要删除的场内计划信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteIndoorMaterialInformationByMaterialCodes(String[] materialCodes)
+    {
+        return indoorMaterialInformationMapper.deleteIndoorMaterialInformationByMaterialCodes(materialCodes);
+    }
+
+    /**
+     * 删除场内计划信息信息
+     * 
+     * @param materialCode 场内计划信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteIndoorMaterialInformationByMaterialCode(String materialCode)
+    {
+        return indoorMaterialInformationMapper.deleteIndoorMaterialInformationByMaterialCode(materialCode);
+    }
+}

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

@@ -0,0 +1,93 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.IndoorPlanInformationMapper;
+import com.zkqy.amichi.domain.IndoorPlanInformation;
+import com.zkqy.amichi.service.IIndoorPlanInformationService;
+
+/**
+ * 场内计划信息:记录场内生产计划相关的详细信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@Service
+public class IndoorPlanInformationServiceImpl implements IIndoorPlanInformationService 
+{
+    @Autowired
+    private IndoorPlanInformationMapper indoorPlanInformationMapper;
+
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param id 场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 场内计划信息:记录场内生产计划相关的详细信息
+     */
+    @Override
+    public IndoorPlanInformation selectIndoorPlanInformationById(Long id)
+    {
+        return indoorPlanInformationMapper.selectIndoorPlanInformationById(id);
+    }
+
+    /**
+     * 查询场内计划信息:记录场内生产计划相关的详细信息列表
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 场内计划信息:记录场内生产计划相关的详细信息
+     */
+    @Override
+    public List<IndoorPlanInformation> selectIndoorPlanInformationList(IndoorPlanInformation indoorPlanInformation)
+    {
+        return indoorPlanInformationMapper.selectIndoorPlanInformationList(indoorPlanInformation);
+    }
+
+    /**
+     * 新增场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 结果
+     */
+    @Override
+    public int insertIndoorPlanInformation(IndoorPlanInformation indoorPlanInformation)
+    {
+        return indoorPlanInformationMapper.insertIndoorPlanInformation(indoorPlanInformation);
+    }
+
+    /**
+     * 修改场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param indoorPlanInformation 场内计划信息:记录场内生产计划相关的详细信息
+     * @return 结果
+     */
+    @Override
+    public int updateIndoorPlanInformation(IndoorPlanInformation indoorPlanInformation)
+    {
+        return indoorPlanInformationMapper.updateIndoorPlanInformation(indoorPlanInformation);
+    }
+
+    /**
+     * 批量删除场内计划信息:记录场内生产计划相关的详细信息
+     * 
+     * @param ids 需要删除的场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteIndoorPlanInformationByIds(Long[] ids)
+    {
+        return indoorPlanInformationMapper.deleteIndoorPlanInformationByIds(ids);
+    }
+
+    /**
+     * 删除场内计划信息:记录场内生产计划相关的详细信息信息
+     * 
+     * @param id 场内计划信息:记录场内生产计划相关的详细信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteIndoorPlanInformationById(Long id)
+    {
+        return indoorPlanInformationMapper.deleteIndoorPlanInformationById(id);
+    }
+}

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

@@ -0,0 +1,93 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.IndoorProductionGroupInformationMapper;
+import com.zkqy.amichi.domain.IndoorProductionGroupInformation;
+import com.zkqy.amichi.service.IIndoorProductionGroupInformationService;
+
+/**
+ * 分组信息:用于记录各个分组的基本信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-02-11
+ */
+@Service
+public class IndoorProductionGroupInformationServiceImpl implements IIndoorProductionGroupInformationService 
+{
+    @Autowired
+    private IndoorProductionGroupInformationMapper indoorProductionGroupInformationMapper;
+
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息
+     * 
+     * @param id 分组信息:用于记录各个分组的基本信息主键
+     * @return 分组信息:用于记录各个分组的基本信息
+     */
+    @Override
+    public IndoorProductionGroupInformation selectIndoorProductionGroupInformationById(Long id)
+    {
+        return indoorProductionGroupInformationMapper.selectIndoorProductionGroupInformationById(id);
+    }
+
+    /**
+     * 查询分组信息:用于记录各个分组的基本信息列表
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 分组信息:用于记录各个分组的基本信息
+     */
+    @Override
+    public List<IndoorProductionGroupInformation> selectIndoorProductionGroupInformationList(IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        return indoorProductionGroupInformationMapper.selectIndoorProductionGroupInformationList(indoorProductionGroupInformation);
+    }
+
+    /**
+     * 新增分组信息:用于记录各个分组的基本信息
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 结果
+     */
+    @Override
+    public int insertIndoorProductionGroupInformation(IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        return indoorProductionGroupInformationMapper.insertIndoorProductionGroupInformation(indoorProductionGroupInformation);
+    }
+
+    /**
+     * 修改分组信息:用于记录各个分组的基本信息
+     * 
+     * @param indoorProductionGroupInformation 分组信息:用于记录各个分组的基本信息
+     * @return 结果
+     */
+    @Override
+    public int updateIndoorProductionGroupInformation(IndoorProductionGroupInformation indoorProductionGroupInformation)
+    {
+        return indoorProductionGroupInformationMapper.updateIndoorProductionGroupInformation(indoorProductionGroupInformation);
+    }
+
+    /**
+     * 批量删除分组信息:用于记录各个分组的基本信息
+     * 
+     * @param ids 需要删除的分组信息:用于记录各个分组的基本信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteIndoorProductionGroupInformationByIds(Long[] ids)
+    {
+        return indoorProductionGroupInformationMapper.deleteIndoorProductionGroupInformationByIds(ids);
+    }
+
+    /**
+     * 删除分组信息:用于记录各个分组的基本信息信息
+     * 
+     * @param id 分组信息:用于记录各个分组的基本信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteIndoorProductionGroupInformationById(Long id)
+    {
+        return indoorProductionGroupInformationMapper.deleteIndoorProductionGroupInformationById(id);
+    }
+}

+ 21 - 21
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/OnSiteProgramDetailsServiceImpl.java

@@ -203,28 +203,28 @@ public class OnSiteProgramDetailsServiceImpl implements IOnSiteProgramDetailsSer
     }
 
     @Override
-    public List<OnSiteProgramDetailsVo> getOnSiteProgramDetailsInfoVo(ProductionPlanningManagementVo productionPlanningManagementVo) {
+    public List<ProductionPlanningManagement> getOnSiteProgramDetailsInfoVo(ProductionPlanningManagementVo productionPlanningManagementVo) {
         //查询计划类型plan_type=1的信息
-        ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
-        productionPlanningManagement.setPlanType(productionPlanningManagementVo.getPlanType());//计划类型为1
-        List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement);
-        List<OnSiteProgramDetailsVo> collect = productionPlanningManagements.stream().map(item -> {
-            OnSiteProgramDetailsVo onSiteProgramDetailsVo = new OnSiteProgramDetailsVo();
-            onSiteProgramDetailsVo.setQuantity(Integer.valueOf(item.getQuantity())); //数量
-            onSiteProgramDetailsVo.setRemark(item.getRemark());//备注
-            LocalDate localDate = DateUtils.toLocalDate(item.getCompletionTime().toString(), "yyyy-MM-dd");
-            onSiteProgramDetailsVo.setCompletionTime(localDate); //完成时间
-            onSiteProgramDetailsVo.setPlanNumber(item.getPlanNumber());//计划编号
-            onSiteProgramDetailsVo.setTaskStatus(item.getTaskStatus());//投产状态
-            onSiteProgramDetailsVo.setId(item.getId().toString());//计划id;
-            //计划详细信息
-            OnSiteProgramDetails onSiteProgramDetails = new OnSiteProgramDetails();
-            onSiteProgramDetails.setPlanId(item.getId().toString());//计划id
-            List<OnSiteProgramDetails> onSiteProgramDetails1 = onSiteProgramDetailsMapper.selectOnSiteProgramDetailsList(onSiteProgramDetails);
-            onSiteProgramDetailsVo.setOnSiteProgramDetails(onSiteProgramDetails1);
-            return onSiteProgramDetailsVo;
-        }).collect(Collectors.toList());
-        return collect;
+//        ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
+//        productionPlanningManagement.setPlanType(productionPlanningManagementVo.getPlanType());//计划类型为1
+        List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagementVo);
+//        List<OnSiteProgramDetailsVo> collect = productionPlanningManagements.stream().map(item -> {
+//            OnSiteProgramDetailsVo onSiteProgramDetailsVo = new OnSiteProgramDetailsVo();
+//            onSiteProgramDetailsVo.setQuantity(Integer.valueOf(item.getQuantity())); //数量
+//            onSiteProgramDetailsVo.setRemark(item.getRemark());//备注
+//            LocalDate localDate = DateUtils.toLocalDate(item.getCompletionTime().toString(), "yyyy-MM-dd");
+//            onSiteProgramDetailsVo.setCompletionTime(localDate); //完成时间
+//            onSiteProgramDetailsVo.setPlanNumber(item.getPlanNumber());//计划编号
+//            onSiteProgramDetailsVo.setTaskStatus(item.getTaskStatus());//投产状态
+//            onSiteProgramDetailsVo.setId(item.getId().toString());//计划id;
+//            //计划详细信息
+//            OnSiteProgramDetails onSiteProgramDetails = new OnSiteProgramDetails();
+//            onSiteProgramDetails.setPlanId(item.getId().toString());//计划id
+//            List<OnSiteProgramDetails> onSiteProgramDetails1 = onSiteProgramDetailsMapper.selectOnSiteProgramDetailsList(onSiteProgramDetails);
+//            onSiteProgramDetailsVo.setOnSiteProgramDetails(onSiteProgramDetails1);
+//            return onSiteProgramDetailsVo;
+//        }).collect(Collectors.toList());
+        return productionPlanningManagements;
     }
 
     @Override

+ 52 - 18
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java

@@ -421,10 +421,12 @@ public class StationInformationServiceImpl implements IStationInformationService
                 if(planTaskDetails1.size()>0){
                     PlanTaskDetails planTaskDetails2 = planTaskDetails1.get(0);
                     String materialId = planTaskDetails2.getMaterialId();
-                    if(materialId.startsWith("1")){//
-                        ringScanInformationFirst1.setPackingOrInspection("1");//1开头的 试机,包装,包装检验, 入库
-                    }else if(materialId.startsWith("2")) {
-                        ringScanInformationFirst1.setPackingOrInspection("2");//2试机,入库
+                    if(materialId.startsWith("1")){// 成品检验
+                        ringScanInformationFirst1.setPackingOrInspection("1");//1开头的 成品检验, 入库
+                        ringScanInformationFirst1.setPackingQuantity("1"); //插入第一条的时候数量为1
+                    }else if(materialId.startsWith("2")) { //试机检验
+                        ringScanInformationFirst1.setPackingOrInspection("2");//2试机检验,入库
+                        ringScanInformationFirst1.setInspectionQuantity("1"); //插入第一条的时候数量为1
                     }
                 }
                 //扫一次产品记录一次
@@ -453,7 +455,7 @@ public class StationInformationServiceImpl implements IStationInformationService
                         if(ringScanInformations1.size()<=0) {
                             RingScanInformationFirst newRingScanInformationFirst = getRingScanInformationFirst(ringScanInformationFirstNumber.getPackingQuantity(), ringScanInformation, "1");
                             ringScanInformationFirstMapper.updateRingScanInformationFirstByproductionOrderNumber(newRingScanInformationFirst);
-                            //生产汇报
+                            //生产汇报  等于代表走工序汇报逻辑 1 和 2代表入的什么仓库(1:成品 2:利库)   3和4 代表走工序汇报逻辑(3:成品 4:利库)
 //                            this.generateWarehouseWarrant2(ringScanInformation.getProductionOrderNumber(),ringScanInformation.getProcessName());//生产订单号,工序名
                              this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber(),ringScanInformation.getProcessName(),"3");//生产订单号,工序名
                         }
@@ -468,7 +470,8 @@ public class StationInformationServiceImpl implements IStationInformationService
                             ringScanInformationFirstMapper.updateRingScanInformationFirstByproductionOrderNumber(newRingScanInformationFirst);
                             //生产汇报
 //                         this.generateWarehouseWarrant2(ringScanInformation.getProductionOrderNumber());
-                           this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber(),ringScanInformation.getProcessName(),"3");//生产订单号,工序名
+                            // 等于代表走工序汇报逻辑 1 和 2代表入的什么仓库(1:成品 2:利库)   3和4 代表走工序汇报逻辑(3:成品 4:利库)
+                           this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber(),ringScanInformation.getProcessName(),"4");//生产订单号,工序名
                         }
                     }
                     else if(materialId.startsWith("1")&&ringScanInformation.getProcessName().equals("入库")){//1开头产品的入库逻辑
@@ -577,7 +580,7 @@ public class StationInformationServiceImpl implements IStationInformationService
                 RingScanInformation ringScanInformation1=new RingScanInformation();
                 BeanUtils.copyProperties(ringScanInformation,ringScanInformation1);
                 ringScanInformation1.setProcessName("包装");
-                ringScanInformation1.setProcess("26");
+                ringScanInformation1.setProcess("28");
                 ringScanInformation1.setStationId("0");
                 ringScanInformation1.setStationName("包装工位");
                 int i2 = ringScanInformationMapper.insertRingScanInformation(ringScanInformation1);
@@ -836,24 +839,40 @@ public class StationInformationServiceImpl implements IStationInformationService
      * @return
      */
     private static RingScanInformationFirst getRingScanInformationFirst(String ringScanInformationFirstNumber, RingScanInformation ringScanInformation,String type) {
-        if(type.equals("1")){
-            //检查出没出现过这个订单信息的扫描,没有就更新第一次订单扫描的数量
+        if(type.equals("1")){      //成品检验
             String inspectionQuantity = ringScanInformationFirstNumber;
             Double newInspectionQuantity = Double.parseDouble(inspectionQuantity) + 1;
             Integer i1 = newInspectionQuantity.intValue();
             RingScanInformationFirst newRingScanInformationFirst = new RingScanInformationFirst();
             newRingScanInformationFirst.setProductionOrderNumber(ringScanInformation.getProductionOrderNumber());
             newRingScanInformationFirst.setPackingQuantity(i1.toString());
+
+            //1开头的机器,如果成品检验了就代表入库了
+            String rKQuantity = ringScanInformationFirstNumber;
+            Double newRkQuantity = Double.parseDouble(rKQuantity) + 1;
+            Integer i3 = newRkQuantity.intValue();
+            newRingScanInformationFirst.setProductionOrderNumber(ringScanInformation.getProductionOrderNumber());
+            newRingScanInformationFirst.setRks(i3.toString());
             return newRingScanInformationFirst;
-        }else if(type.equals("2")) {
+
+        }else if(type.equals("2")) { //试机检验
+
             String inspectionQuantity = ringScanInformationFirstNumber;
             Double newInspectionQuantity = Double.parseDouble(inspectionQuantity) + 1;
+
             Integer i2 = newInspectionQuantity.intValue();
             RingScanInformationFirst newRingScanInformationFirst = new RingScanInformationFirst();
             newRingScanInformationFirst.setProductionOrderNumber(ringScanInformation.getProductionOrderNumber());
             newRingScanInformationFirst.setInspectionQuantity(i2.toString());
+
+            //2开头的机器,如果试机检验了就代表入库了
+            String rKQuantity = ringScanInformationFirstNumber;
+            Double newRkQuantity = Double.parseDouble(rKQuantity) + 1;
+            Integer i3 = newRkQuantity.intValue();
+            newRingScanInformationFirst.setProductionOrderNumber(ringScanInformation.getProductionOrderNumber());
+            newRingScanInformationFirst.setRks(i3.toString());
             return newRingScanInformationFirst;
-        }else if(type.equals("3")) {
+        }else if(type.equals("3")) {//入库
             String rKQuantity = ringScanInformationFirstNumber;
             Double newRkQuantity = Double.parseDouble(rKQuantity) + 1;
             Integer i2 = newRkQuantity.intValue();
@@ -897,7 +916,7 @@ public class StationInformationServiceImpl implements IStationInformationService
                   }
               }
               return "正在入库";
-          }else if(type.equals("3")){//等于代表走工序汇报逻辑
+          }else if(type.equals("3")||type.equals("4")){//等于代表走工序汇报逻辑 1 和 2代表入的什么仓库(1:成品 2:利库)   3和4 代表走工序汇报逻辑(3:成品 4:利库)
               RingScanInformationFirst newRingScanInformationFirst = new RingScanInformationFirst();
               newRingScanInformationFirst.setProductionOrderNumber(productionOrderNumber);
               //查询第一次新增时确定的是试机入库还是包装入库
@@ -918,14 +937,20 @@ public class StationInformationServiceImpl implements IStationInformationService
                       if(ringScanInformationFirst.getPackingQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
 //                          int i = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
                           //工序汇报
-                          erpProcessReport(planTaskDetails1.get(0));
+                          erpProcessReport(planTaskDetails1.get(0),type);
+                          //加更正生产订单状态
+                          planTaskDetails.setStatus("2");//生产完成
+                          int i2 = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
                       }
                   }else if(packingOrInspection.equals("2")){ //试机数量--下推生产汇报单
                       //看包装跟当前生产订单总数量是否相等
                       if(ringScanInformationFirst.getInspectionQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
 //                          int i = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
                           //生产汇报
-                          erpProcessReport(planTaskDetails1.get(0));
+                          erpProcessReport(planTaskDetails1.get(0),type);
+                          //加更正生产订单状态
+                          planTaskDetails.setStatus("2");//生产完成
+                          int i2 = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
                       }
                   }
               }
@@ -938,7 +963,7 @@ public class StationInformationServiceImpl implements IStationInformationService
      * 生产汇报单是否下推提交审核成功
      * @param planTaskDetails1
      */
-    private void erpProcessReport(PlanTaskDetails planTaskDetails1) {
+    private void erpProcessReport(PlanTaskDetails planTaskDetails1,String type) {
         //生产汇报
         ObjectMapper objectMapper = new ObjectMapper();
         try {
@@ -966,6 +991,13 @@ public class StationInformationServiceImpl implements IStationInformationService
             HashMap fbomdIdMap=new HashMap();
             fbomdIdMap.put("FNumber",planTaskDetails1.getFbomIdFnumber());
             map.put("FBomId",fbomdIdMap);
+            HashMap FStockId=new HashMap();
+            if(type.equals("3")){
+                FStockId.put("FNumber","CK007"); //成品仓
+            }else if(type.equals("4")) {
+                FStockId.put("FNumber","CK006"); //利库仓
+            }
+            map.put("FStockId",FStockId);
             String FSNUnitIDJson = objectMapper.writeValueAsString( map.get("FSNUnitID"));
             Map<String,String > FSNUnitIDMap = objectMapper.readValue(FSNUnitIDJson, Map.class);
             FSNUnitIDMap.put("FNumber",planTaskDetails1.getFunitidfNumber());
@@ -1150,9 +1182,9 @@ public class StationInformationServiceImpl implements IStationInformationService
             map7.put("FMOMAINENTRYID",planTaskDetails1.getFtreeEntityFentryid());
             HashMap<String, String> fStockId = new HashMap<>();
             if(type.equals("1")){
-                fStockId.put("FNumber","CK007");
+                fStockId.put("FNumber","CK007"); //成品仓
             }else {
-                fStockId.put("FNumber","CK006");
+                fStockId.put("FNumber","CK006"); //利库仓
             }
             map7.put("FStockId",fStockId);
             HashMap<String, String> fNumber = new HashMap<>();
@@ -1952,6 +1984,8 @@ public class StationInformationServiceImpl implements IStationInformationService
                     ringScanInformation.setOrderNumber(jdProductionOrders.get(0).getDemandDocument());
                     //生产订单号
                     ringScanInformation.setProductionOrderNumber(jdProductionOrders.get(0).getDocumentNumber());
+                    //唯一标识id
+//                    ringScanInformation.setId(UUID.randomUUID().toString());
                 }
             }
 
@@ -1985,7 +2019,7 @@ public class StationInformationServiceImpl implements IStationInformationService
                     }
                     List<Map> mapListTotal = JSON.parseArray(resultJsonTotal, Map.class);
                     if(mapListTotal.size()<=0){
-                        ringScanInformation.setExecutionMark("1");//成功
+                        ringScanInformation.setExecutionMark("2");//成功
                         ringScanInformation.setExecutionMessage("扫描失败");
                         int i2 = ringScanInformationMapper.insertRingScanInformation(ringScanInformation);
                         return "订单已关闭-扫描失败";

+ 83 - 0
zkqy-fujian-amichi/src/main/resources/mapper/IndoorMaterialInformationMapper.xml

@@ -0,0 +1,83 @@
+<?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.IndoorMaterialInformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.IndoorMaterialInformation" id="IndoorMaterialInformationResult">
+        <result property="materialCode"    column="material_code"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="model"    column="model"    />
+        <result property="specification"    column="specification"    />
+        <result property="description"    column="description"    />
+        <result property="unit"    column="unit"    />
+        <result property="groupId"    column="group_id"    />
+    </resultMap>
+
+    <sql id="selectIndoorMaterialInformationVo">
+        select material_code, material_name, model, specification, description, unit, group_id from fjqydb.indoor_material_information
+    </sql>
+
+    <select id="selectIndoorMaterialInformationList" parameterType="com.zkqy.amichi.domain.IndoorMaterialInformation" resultMap="IndoorMaterialInformationResult">
+        <include refid="selectIndoorMaterialInformationVo"/>
+        <where>  
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+            <if test="specification != null  and specification != ''"> and specification = #{specification}</if>
+            <if test="description != null  and description != ''"> and description = #{description}</if>
+            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
+            <if test="groupId != null "> and group_id = #{groupId}</if>
+        </where>
+    </select>
+    
+    <select id="selectIndoorMaterialInformationByMaterialCode" parameterType="String" resultMap="IndoorMaterialInformationResult">
+        <include refid="selectIndoorMaterialInformationVo"/>
+        where material_code = #{materialCode}
+    </select>
+        
+    <insert id="insertIndoorMaterialInformation" parameterType="com.zkqy.amichi.domain.IndoorMaterialInformation">
+        insert into fjqydb.indoor_material_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">material_code,</if>
+            <if test="materialName != null and materialName != ''">material_name,</if>
+            <if test="model != null">model,</if>
+            <if test="specification != null">specification,</if>
+            <if test="description != null">description,</if>
+            <if test="unit != null and unit != ''">unit,</if>
+            <if test="groupId != null">group_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="materialName != null and materialName != ''">#{materialName},</if>
+            <if test="model != null">#{model},</if>
+            <if test="specification != null">#{specification},</if>
+            <if test="description != null">#{description},</if>
+            <if test="unit != null and unit != ''">#{unit},</if>
+            <if test="groupId != null">#{groupId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateIndoorMaterialInformation" parameterType="com.zkqy.amichi.domain.IndoorMaterialInformation">
+        update fjqydb.indoor_material_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
+            <if test="model != null">model = #{model},</if>
+            <if test="specification != null">specification = #{specification},</if>
+            <if test="description != null">description = #{description},</if>
+            <if test="unit != null and unit != ''">unit = #{unit},</if>
+            <if test="groupId != null">group_id = #{groupId},</if>
+        </trim>
+        where material_code = #{materialCode}
+    </update>
+
+    <delete id="deleteIndoorMaterialInformationByMaterialCode" parameterType="String">
+        delete from fjqydb.indoor_material_information where material_code = #{materialCode}
+    </delete>
+
+    <delete id="deleteIndoorMaterialInformationByMaterialCodes" parameterType="String">
+        delete from fjqydb.indoor_material_information where material_code in
+        <foreach item="materialCode" collection="array" open="(" separator="," close=")">
+            #{materialCode}
+        </foreach>
+    </delete>
+</mapper>

+ 101 - 0
zkqy-fujian-amichi/src/main/resources/mapper/IndoorPlanInformationMapper.xml

@@ -0,0 +1,101 @@
+<?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.IndoorPlanInformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.IndoorPlanInformation" id="IndoorPlanInformationResult">
+        <result property="id"    column="id"    />
+        <result property="taskId"    column="task_id"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="materialModel"    column="material_model"    />
+        <result property="materialSpecification"    column="material_specification"    />
+        <result property="productionTime"    column="production_time"    />
+        <result property="taskQuantity"    column="task_quantity"    />
+        <result property="planStatus"    column="plan_status"    />
+        <result property="productDescription"    column="product_description"    />
+        <result property="remarks"    column="remarks"    />
+    </resultMap>
+
+    <sql id="selectIndoorPlanInformationVo">
+        select id, task_id, material_code, material_name, material_model, material_specification, production_time, task_quantity, plan_status, product_description, remarks from fjqydb.indoor_plan_information
+    </sql>
+
+    <select id="selectIndoorPlanInformationList" parameterType="com.zkqy.amichi.domain.IndoorPlanInformation" resultMap="IndoorPlanInformationResult">
+        <include refid="selectIndoorPlanInformationVo"/>
+        <where>  
+            <if test="taskId != null  and taskId != ''"> and task_id = #{taskId}</if>
+            <if test="materialCode != null  and materialCode != ''"> and material_code = #{materialCode}</if>
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="materialModel != null  and materialModel != ''"> and material_model = #{materialModel}</if>
+            <if test="materialSpecification != null  and materialSpecification != ''"> and material_specification = #{materialSpecification}</if>
+            <if test="productionTime != null "> and production_time = #{productionTime}</if>
+            <if test="taskQuantity != null "> and task_quantity = #{taskQuantity}</if>
+            <if test="planStatus != null  and planStatus != ''"> and plan_status = #{planStatus}</if>
+            <if test="productDescription != null  and productDescription != ''"> and product_description = #{productDescription}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        </where>
+    </select>
+    
+    <select id="selectIndoorPlanInformationById" parameterType="Long" resultMap="IndoorPlanInformationResult">
+        <include refid="selectIndoorPlanInformationVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertIndoorPlanInformation" parameterType="com.zkqy.amichi.domain.IndoorPlanInformation" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.indoor_plan_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskId != null and taskId != ''">task_id,</if>
+            <if test="materialCode != null and materialCode != ''">material_code,</if>
+            <if test="materialName != null and materialName != ''">material_name,</if>
+            <if test="materialModel != null">material_model,</if>
+            <if test="materialSpecification != null">material_specification,</if>
+            <if test="productionTime != null">production_time,</if>
+            <if test="taskQuantity != null">task_quantity,</if>
+            <if test="planStatus != null and planStatus != ''">plan_status,</if>
+            <if test="productDescription != null">product_description,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskId != null and taskId != ''">#{taskId},</if>
+            <if test="materialCode != null and materialCode != ''">#{materialCode},</if>
+            <if test="materialName != null and materialName != ''">#{materialName},</if>
+            <if test="materialModel != null">#{materialModel},</if>
+            <if test="materialSpecification != null">#{materialSpecification},</if>
+            <if test="productionTime != null">#{productionTime},</if>
+            <if test="taskQuantity != null">#{taskQuantity},</if>
+            <if test="planStatus != null and planStatus != ''">#{planStatus},</if>
+            <if test="productDescription != null">#{productDescription},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateIndoorPlanInformation" parameterType="com.zkqy.amichi.domain.IndoorPlanInformation">
+        update fjqydb.indoor_plan_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskId != null and taskId != ''">task_id = #{taskId},</if>
+            <if test="materialCode != null and materialCode != ''">material_code = #{materialCode},</if>
+            <if test="materialName != null and materialName != ''">material_name = #{materialName},</if>
+            <if test="materialModel != null">material_model = #{materialModel},</if>
+            <if test="materialSpecification != null">material_specification = #{materialSpecification},</if>
+            <if test="productionTime != null">production_time = #{productionTime},</if>
+            <if test="taskQuantity != null">task_quantity = #{taskQuantity},</if>
+            <if test="planStatus != null and planStatus != ''">plan_status = #{planStatus},</if>
+            <if test="productDescription != null">product_description = #{productDescription},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIndoorPlanInformationById" parameterType="Long">
+        delete from fjqydb.indoor_plan_information where id = #{id}
+    </delete>
+
+    <delete id="deleteIndoorPlanInformationByIds" parameterType="String">
+        delete from fjqydb.indoor_plan_information where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 56 - 0
zkqy-fujian-amichi/src/main/resources/mapper/IndoorProductionGroupInformationMapper.xml

@@ -0,0 +1,56 @@
+<?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.IndoorProductionGroupInformationMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.IndoorProductionGroupInformation" id="IndoorProductionGroupInformationResult">
+        <result property="id"    column="id"    />
+        <result property="groupName"    column="group_name"    />
+    </resultMap>
+
+    <sql id="selectIndoorProductionGroupInformationVo">
+        select `id`, `group_name` from fjqydb.indoor_production_group_information
+    </sql>
+
+    <select id="selectIndoorProductionGroupInformationList" parameterType="com.zkqy.amichi.domain.IndoorProductionGroupInformation" resultMap="IndoorProductionGroupInformationResult">
+        <include refid="selectIndoorProductionGroupInformationVo"/>
+        <where>  
+            <if test="groupName != null  and groupName != ''"> and group_name like concat('%', #{groupName}, '%')</if>
+        </where>
+    </select>
+    
+    <select id="selectIndoorProductionGroupInformationById" parameterType="Long" resultMap="IndoorProductionGroupInformationResult">
+        <include refid="selectIndoorProductionGroupInformationVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertIndoorProductionGroupInformation" parameterType="com.zkqy.amichi.domain.IndoorProductionGroupInformation" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.indoor_production_group_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="groupName != null and groupName != ''">group_name,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="groupName != null and groupName != ''">#{groupName},</if>
+         </trim>
+    </insert>
+
+    <update id="updateIndoorProductionGroupInformation" parameterType="com.zkqy.amichi.domain.IndoorProductionGroupInformation">
+        update fjqydb.indoor_production_group_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="groupName != null and groupName != ''">group_name = #{groupName},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIndoorProductionGroupInformationById" parameterType="Long">
+        delete from fjqydb.indoor_production_group_information where id = #{id}
+    </delete>
+
+    <delete id="deleteIndoorProductionGroupInformationByIds" parameterType="String">
+        delete from fjqydb.indoor_production_group_information where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

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

@@ -52,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         from fjqydb.ring_scan_information_first as rsif left join
         fjqydb.production_planning_management as ppm on (ppm.order_number = rsif.order_number)
         <where>
-            <if test="orderNumber != null  and orderNumber != ''"> and ( rsif.order_number = #{orderNumber} or  rsif.production_order_number = #{orderNumber})</if>
+            <if test="orderNumber != null  and orderNumber != ''"> and ( rsif.order_number LIKE concat('%', #{orderNumber}, '%')  or  rsif.production_order_number LIKE concat('%', #{orderNumber}, '%'))</if>
             <if test="productionOrderNumber != null  and productionOrderNumber != ''"> and  rsif.production_order_number = #{productionOrderNumber}</if>
             <if test="status != null  and status != ''"> and  rsif.status = #{status}</if>
             <if test="startTime != null  and startTime != ''"> and  rsif.start_time = #{startTime}</if>
@@ -121,11 +121,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="orderNumber != null">order_number = #{orderNumber},</if>
             <if test="productionOrderNumber != null">production_order_number = #{productionOrderNumber},</if>
             <if test="status != null">status = #{status},</if>
-            <if test="startTime != null  and startTime != ''">start_time = #{startTime}</if>
-            <if test="endTime != null  and endTime != ''">end_time = #{endTime}</if>
-            <if test="packingQuantity != null  and packingQuantity != ''"> packing_quantity = #{packingQuantity}</if>
-            <if test="inspectionQuantity != null  and inspectionQuantity != ''">inspection_quantity = #{inspectionQuantity}</if>
-            <if test="totalQuantity != null  and totalQuantity != ''">total_quantity = #{totalQuantity}</if>
+            <if test="startTime != null  and startTime != ''">start_time = #{startTime},</if>
+            <if test="endTime != null  and endTime != ''">end_time = #{endTime},</if>
+            <if test="packingQuantity != null  and packingQuantity != ''"> packing_quantity = #{packingQuantity},</if>
+            <if test="inspectionQuantity != null  and inspectionQuantity != ''">inspection_quantity = #{inspectionQuantity},</if>
+            <if test="totalQuantity != null  and totalQuantity != ''">total_quantity = #{totalQuantity},</if>
             <if test="rks != null  and rks != ''">rks = #{rks}</if>
         </trim>
         where production_order_number = #{productionOrderNumber}

+ 39 - 11
zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml

@@ -57,8 +57,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="scanningTimes!=null and scanningTimes[0] != null and scanningTimes[0] != ''">
                 <![CDATA[ and scanning_time >= #{scanningTimes[0]}]]>
             </if>
-            <if test="scanningTimes!=null and scanningTimes[1] != null and scanningTimes[0] != ''">
-                <![CDATA[ and scanning_time <= #{scanningTimes[0]}]]>
+            <if test="scanningTimes!=null and scanningTimes[1] != null and scanningTimes[1] != ''">
+                <![CDATA[ and scanning_time <= #{scanningTimes[1]}]]>
             </if>
         </where>
         order by  scanning_time,process_name
@@ -79,6 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ptd.material_id,
         ptd.material_name,
         ptd.model_number AS model,
+        ptd.specification as specification,
         ptd.demand_document,
         rsi.production_order_number,
         rsi.order_number
@@ -88,19 +89,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             <if test="deviceNumber != null  and deviceNumber != ''"> and device_number = #{deviceNumber}</if>
             <if test="deviceName != null  and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if>
-            <if test="scanningTime != null "> and scanning_time = #{scanningTime}</if>
+            <if test="scanningTimeString != null "> and DATE(scanning_time) = DATE(#{scanningTimeString})</if>
             <if test="personnelName != null "> and personnel_name = #{personnelName}</if>
             <if test="process != null "> and process = #{process}</if>
             <if test="contentInformation != null  and contentInformation != ''"> and content_information = #{contentInformation}</if>
             <if test="nativeNumbering != null  and nativeNumbering != ''"> and native_numbering = #{nativeNumbering}</if>
             <if test="executionMark!=null and executionMark!=''">and execution_mark = #{executionMark}</if>
             <if test="productionOrderNumber!=null and productionOrderNumber!=''">and rsi.production_order_number = #{productionOrderNumber}</if>
-            <if test="orderNumber!=null and orderNumber!=''">and rsi.order_number = #{orderNumber}</if>
+            <if test="orderNumber!=null and orderNumber!=''">and rsi.order_number  like concat('%', #{orderNumber}, '%')</if>
             <if test="scanningTimes!=null and scanningTimes[0] != null and scanningTimes[0] != ''">
                 <![CDATA[ and scanning_time >= #{scanningTimes[0]}]]>
             </if>
-            <if test="scanningTimes!=null and scanningTimes[1] != null and scanningTimes[0] != ''">
-                <![CDATA[ and scanning_time <= #{scanningTimes[0]}]]>
+            <if test="scanningTimes!=null and scanningTimes[1] != null and scanningTimes[1] != ''">
+                <![CDATA[ and scanning_time <= #{scanningTimes[1]}]]>
             </if>
         </where>
         order by  personnel_name,process_name asc,scanning_time desc
@@ -126,8 +127,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="stationName"    column="station_name"    />
         <result property="executionMessage"    column="execution_message"/>
         <result property="executionMark"    column="execution_mark"/>
+        <result property="specification" column="specification"/>
     </resultMap>
-
+<!--
+      SELECT
+        rsi.id,
+        rsi.device_number,
+        rsi.device_name,
+        rsi.scanning_time,
+        rsi.content_information,
+        rsi.native_numbering,
+        rsi.personnel_name,
+        rsi.process_name,
+        rsi.station_name,
+        rsi.execution_mark,
+        rsi.execution_message,
+        ptd.material_id,
+        ptd.material_name,
+        ptd.model_number AS model,
+        ptd.specification as specification,
+        ptd.demand_document,
+        rsi.production_order_number,
+        rsi.order_number
+        FROM
+        fjqydb.ring_scan_information as rsi
+        LEFT JOIN fjqydb.plan_task_details AS ptd ON ptd.demand_document = rsi.production_order_number
+        left join fjqydb.production_planning_management  as  ppm on ptd.plan_id=ppm.id
+-->
     <select id="selectRingScanInformationListVo" parameterType="com.zkqy.amichi.domain.RingScanInformation" resultMap="RingScanInformationResultNR">
         SELECT
         rsi.id,
@@ -144,6 +170,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ptd.material_id,
         ptd.material_name,
         ptd.model_number AS model,
+        ptd.specification as specification,
         ptd.demand_document,
         rsi.production_order_number,
         rsi.order_number
@@ -154,7 +181,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             <if test="deviceNumber != null  and deviceNumber != ''"> and device_number = #{deviceNumber}</if>
             <if test="deviceName != null  and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if>
-            <if test="scanningTime != null "> and scanning_time = #{scanningTime}</if>
+            <if test="scanningTime != null "> and DATE(scanning_time) = #{scanningTime}</if>
             <if test="personnelName != null "> and personnel_name like concat('%', #{personnelName}, '%') </if>
             <if test="process != null "> and process like concat('%', #{process}, '%')</if>
             <if test="contentInformation != null  and contentInformation != ''"> and content_information like concat('%', #{contentInformation}, '%')</if>
@@ -165,8 +192,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="scanningTimes!=null and scanningTimes[0] != null and scanningTimes[0] != ''">
                 <![CDATA[ and scanning_time >= #{scanningTimes[0]}]]>
             </if>
-            <if test="scanningTimes!=null and scanningTimes[1] != null and scanningTimes[0] != ''">
-                <![CDATA[ and scanning_time <= #{scanningTimes[0]}]]>
+            <if test="scanningTimes!=null and scanningTimes[1] != null and scanningTimes[1] != ''">
+                <![CDATA[ and scanning_time <= #{scanningTimes[1]}]]>
             </if>
         </where>
         order by scanning_time desc
@@ -371,7 +398,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             fjqydb.ring_scan_information AS rsi
                 LEFT JOIN fjqydb.ring_scan_information_first AS rsif ON rsi.production_order_number = rsif.production_order_number
                 left join fjqydb.plan_task_details as ptd on rsi.production_order_number=ptd.demand_document
-        where DATE(rsi.scanning_time) = CURDATE()
+        where DATE(rsi.scanning_time) = CURDATE() and
+            rsi.execution_message !='失败-未同步ERP'
         GROUP BY
             rsi.order_number,
             rsi.personnel_name,

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询场内计划信息列表
+export function listInformation(query) {
+  return request({
+    url: '/indoorMaterialInformation/information/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询场内计划信息详细
+export function getInformation(materialCode) {
+  return request({
+    url: '/indoorMaterialInformation/information/' + materialCode,
+    method: 'get'
+  })
+}
+
+// 新增场内计划信息
+export function addInformation(data) {
+  return request({
+    url: '/indoorMaterialInformation/information',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改场内计划信息
+export function updateInformation(data) {
+  return request({
+    url: '/indoorMaterialInformation/information',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除场内计划信息
+export function delInformation(materialCode) {
+  return request({
+    url: '/indoorMaterialInformation/information/' + materialCode,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询场内计划信息:记录场内生产计划相关的详细信息列表
+export function listInformation(query) {
+  return request({
+    url: '/indoorPlanInformation/information/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询场内计划信息:记录场内生产计划相关的详细信息详细
+export function getInformation(id) {
+  return request({
+    url: '/indoorPlanInformation/information/' + id,
+    method: 'get'
+  })
+}
+
+// 新增场内计划信息:记录场内生产计划相关的详细信息
+export function addInformation(data) {
+  return request({
+    url: '/indoorPlanInformation/information',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改场内计划信息:记录场内生产计划相关的详细信息
+export function updateInformation(data) {
+  return request({
+    url: '/indoorPlanInformation/information',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除场内计划信息:记录场内生产计划相关的详细信息
+export function delInformation(id) {
+  return request({
+    url: '/indoorPlanInformation/information/' + id,
+    method: 'delete'
+  })
+}

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

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询分组信息:用于记录各个分组的基本信息列表
+export function listInformation(query) {
+  return request({
+    url: '/indoorProductionGroupInfo/information/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询分组信息:用于记录各个分组的基本信息详细
+export function getInformation(id) {
+  return request({
+    url: '/indoorProductionGroupInfo/information/' + id,
+    method: 'get'
+  })
+}
+
+// 新增分组信息:用于记录各个分组的基本信息
+export function addInformation(data) {
+  return request({
+    url: '/indoorProductionGroupInfo/information',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改分组信息:用于记录各个分组的基本信息
+export function updateInformation(data) {
+  return request({
+    url: '/indoorProductionGroupInfo/information',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除分组信息:用于记录各个分组的基本信息
+export function delInformation(id) {
+  return request({
+    url: '/indoorProductionGroupInfo/information/' + id,
+    method: 'delete'
+  })
+}

+ 12 - 10
zkqy-ui/src/views/amichi/dialogCompments/customizedVersion/productionForm.vue

@@ -29,7 +29,7 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="sheetList" @selection-change="handleSelectionChange" :row-style="tableRowStyle" style="margin-top: 20px">
+    <el-table v-loading="loading" :data="sheetList" @selection-change="handleSelectionChange" :cell-style="tableRowClassName"  style="margin-top: 20px">
       <el-table-column label="订单号" align="center" prop="orderNumber" />
       <el-table-column label="订单数" align="center" prop="totalQuantity" />
       <el-table-column label="完成数量" align="center" prop="he" :formatter="formatHe" />
@@ -471,13 +471,18 @@ export default {
     formatHe(row, column, cellValue) {
       return parseInt(cellValue, 10) || 0; // 将 'he' 字段解析为整数,如果解析失败则默认为 0
     },
-    // ... 其他方法
-    tableRowStyle({ row, rowIndex }) {
-      if (row.totalQuantity === row.he) {
+    tableRowClassName({row, rowIndex}) {
+      if (row.totalQuantity == parseInt(row.he)) {
         return { 'background-color': 'green', color: 'white' };
       }
       return {};
     },
+    // ... 其他方法
+    // tableRowStyle({ row, rowIndex }) {
+    //   console.log(row.totalQuantity,parseInt(row.he))
+    //
+    //   return {};
+    // },
     //展示不同的标签
     getStatusType(status) {
       switch (status) {
@@ -738,7 +743,9 @@ export default {
   width: 100%;
   height: 100%;
 }
-
+.el-table .success-row {
+  background: #f0f9eb;
+}
 .cesiumTabRootA table tr th{
   border: 1px solid black;
   border-collapse: collapse; /* 移除单元格之间的间隔 */
@@ -755,9 +762,4 @@ export default {
   text-align: center;
 }
 .catForm ::v-deep .el-form-item__label{font-size: 18px;}
-
-.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{
-  background-color:red;
-  color: red;
-}
 </style>

+ 345 - 0
zkqy-ui/src/views/amichi/planTask/inPlanPage/indoorMaterialInformation/index.vue

@@ -0,0 +1,345 @@
+<template>
+  <div class="app-container">
+
+      <div  class="left-container">
+          1
+      </div>
+      <div class="right-container">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
+          <el-form-item label="物料名称" prop="materialName">
+            <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="specification">
+            <el-input
+              v-model="queryParams.specification"
+              placeholder="请输入规格型号:"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="单位:" prop="unit">
+            <el-input
+              v-model="queryParams.unit"
+              placeholder="请输入单位:"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="组名称:" prop="groupId">
+            <el-input
+              v-model="queryParams.groupId"
+              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="['indoorMaterialInformation: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="['indoorMaterialInformation: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="['indoorMaterialInformation: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="['indoorMaterialInformation:information: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="informationList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="物料编码" align="center" prop="materialCode" />
+          <el-table-column label="物料名称" align="center" prop="materialName" />
+          <el-table-column label="型号" align="center" prop="model" />
+          <el-table-column label="规格型号" align="center" prop="specification" />
+          <el-table-column label="描述" align="center" prop="description" />
+          <el-table-column label="单位" align="center" prop="unit" />
+          <el-table-column label="组ID" align="center" prop="groupId" />
+          <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="['indoorMaterialInformation:information:edit']"
+              >修改</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['indoorMaterialInformation:information: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="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="description">
+              <el-input v-model="form.description" type="textarea" placeholder="请输入内容" />
+            </el-form-item>
+            <el-form-item label="单位:" prop="unit">
+              <el-input v-model="form.unit" placeholder="请输入单位" />
+            </el-form-item>
+            <el-form-item label="组ID:" prop="groupId">
+              <el-input v-model="form.groupId" placeholder="请输入组ID" />
+            </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>
+
+  </div>
+</template>
+
+<script>
+import { listInformation, getInformation, delInformation, addInformation, updateInformation } from "@/api/amichi/indoorMaterialInformation/information";
+
+export default {
+  name: "Information",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 场内计划信息表格数据
+      informationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        materialName: null,
+        model: null,
+        specification: null,
+        description: null,
+        unit: null,
+        groupId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        materialName: [
+          { required: true, message: "物料名称:物料的具体名称不能为空", trigger: "blur" }
+        ],
+        unit: [
+          { required: true, message: "单位:物料的计量单位不能为空", trigger: "blur" }
+        ],
+        groupId: [
+          { required: true, message: "组ID:所属分组的ID,关联分组表不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询场内计划信息列表 */
+    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 = {
+        materialCode: null,
+        materialName: null,
+        model: null,
+        specification: null,
+        description: null,
+        unit: null,
+        groupId: 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.materialCode)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加场内计划信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const materialCode = row.materialCode || this.ids
+      getInformation(materialCode).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改场内计划信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.materialCode != null) {
+            updateInformation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInformation(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const materialCodes = row.materialCode || this.ids;
+      this.$modal.confirm('是否确认删除场内计划信息编号为"' + materialCodes + '"的数据项?').then(function() {
+        return delInformation(materialCodes);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('indoorMaterialInformation/information/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped >
+  .app-container{
+    width: 100%;
+    height: 100%;
+    //border: 1px solid red;
+    display: flex;
+    padding: 0px;
+    .left-container{
+      width: 20%;
+      height: 900px;
+      border-right: 3px solid blue;
+    }
+    .right-container{
+      width: 80%;
+      height: 900px;
+      padding: 20px;
+      //border: 1px solid blue;
+    }
+  }
+
+</style>

+ 371 - 0
zkqy-ui/src/views/amichi/planTask/inPlanPage/indoorPlanInformation/index.vue

@@ -0,0 +1,371 @@
+<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="taskId">
+        <el-input
+          v-model="queryParams.taskId"
+          placeholder="请输入任务编号:唯一标识每个生产任务"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="物料编码:物料的唯一编码" prop="materialCode">
+        <el-input
+          v-model="queryParams.materialCode"
+          placeholder="请输入物料编码:物料的唯一编码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="物料名称:物料的具体名称" prop="materialName">
+        <el-input
+          v-model="queryParams.materialName"
+          placeholder="请输入物料名称:物料的具体名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="物料型号:物料的型号描述" prop="materialModel">
+        <el-input
+          v-model="queryParams.materialModel"
+          placeholder="请输入物料型号:物料的型号描述"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="物料规格:物料的具体规格" prop="materialSpecification">
+        <el-input
+          v-model="queryParams.materialSpecification"
+          placeholder="请输入物料规格:物料的具体规格"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="生产时间:任务计划的生产时间" prop="productionTime">
+        <el-date-picker clearable
+          v-model="queryParams.productionTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择生产时间:任务计划的生产时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="任务数量:本次任务需要生产的数量" prop="taskQuantity">
+        <el-input
+          v-model="queryParams.taskQuantity"
+          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="['indoorPlanInformation: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="['indoorPlanInformation: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="['indoorPlanInformation: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="['indoorPlanInformation: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="主键ID:唯一标识每条记录" align="center" prop="id" />
+      <el-table-column label="任务编号:唯一标识每个生产任务" align="center" prop="taskId" />
+      <el-table-column label="物料编码:物料的唯一编码" align="center" prop="materialCode" />
+      <el-table-column label="物料名称:物料的具体名称" align="center" prop="materialName" />
+      <el-table-column label="物料型号:物料的型号描述" align="center" prop="materialModel" />
+      <el-table-column label="物料规格:物料的具体规格" align="center" prop="materialSpecification" />
+      <el-table-column label="生产时间:任务计划的生产时间" align="center" prop="productionTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.productionTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="任务数量:本次任务需要生产的数量" align="center" prop="taskQuantity" />
+      <el-table-column label="计划状态:任务当前的状态 1:生产中 2:已完成 3:已取消" align="center" prop="planStatus" />
+      <el-table-column label="产品描述:对产品的详细描述" align="center" prop="productDescription" />
+      <el-table-column label="备注:其他需要说明的信息" align="center" prop="remarks" />
+      <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="['indoorPlanInformation:information:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['indoorPlanInformation:information: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="taskId">
+          <el-input v-model="form.taskId" placeholder="请输入任务编号:唯一标识每个生产任务" />
+        </el-form-item>
+        <el-form-item label="物料编码:物料的唯一编码" prop="materialCode">
+          <el-input v-model="form.materialCode" placeholder="请输入物料编码:物料的唯一编码" />
+        </el-form-item>
+        <el-form-item label="物料名称:物料的具体名称" prop="materialName">
+          <el-input v-model="form.materialName" placeholder="请输入物料名称:物料的具体名称" />
+        </el-form-item>
+        <el-form-item label="物料型号:物料的型号描述" prop="materialModel">
+          <el-input v-model="form.materialModel" placeholder="请输入物料型号:物料的型号描述" />
+        </el-form-item>
+        <el-form-item label="物料规格:物料的具体规格" prop="materialSpecification">
+          <el-input v-model="form.materialSpecification" placeholder="请输入物料规格:物料的具体规格" />
+        </el-form-item>
+        <el-form-item label="生产时间:任务计划的生产时间" prop="productionTime">
+          <el-date-picker clearable
+            v-model="form.productionTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择生产时间:任务计划的生产时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="任务数量:本次任务需要生产的数量" prop="taskQuantity">
+          <el-input v-model="form.taskQuantity" placeholder="请输入任务数量:本次任务需要生产的数量" />
+        </el-form-item>
+        <el-form-item label="产品描述:对产品的详细描述" prop="productDescription">
+          <el-input v-model="form.productDescription" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="备注:其他需要说明的信息" prop="remarks">
+          <el-input v-model="form.remarks" type="textarea" 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 { listInformation, getInformation, delInformation, addInformation, updateInformation } from "@/api/amichi/indoorPlanInformation/information";
+
+export default {
+  name: "Information",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 场内计划信息:记录场内生产计划相关的详细信息表格数据
+      informationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        taskId: null,
+        materialCode: null,
+        materialName: null,
+        materialModel: null,
+        materialSpecification: null,
+        productionTime: null,
+        taskQuantity: null,
+        planStatus: null,
+        productDescription: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        taskId: [
+          { required: true, message: "任务编号:唯一标识每个生产任务不能为空", trigger: "blur" }
+        ],
+        materialCode: [
+          { required: true, message: "物料编码:物料的唯一编码不能为空", trigger: "blur" }
+        ],
+        materialName: [
+          { required: true, message: "物料名称:物料的具体名称不能为空", trigger: "blur" }
+        ],
+        productionTime: [
+          { required: true, message: "生产时间:任务计划的生产时间不能为空", trigger: "blur" }
+        ],
+        taskQuantity: [
+          { required: true, message: "任务数量:本次任务需要生产的数量不能为空", trigger: "blur" }
+        ],
+        planStatus: [
+          { required: true, message: "计划状态:任务当前的状态 1:生产中 2:已完成 3:已取消不能为空", trigger: "change" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询场内计划信息:记录场内生产计划相关的详细信息列表 */
+    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,
+        taskId: null,
+        materialCode: null,
+        materialName: null,
+        materialModel: null,
+        materialSpecification: null,
+        productionTime: null,
+        taskQuantity: null,
+        planStatus: null,
+        productDescription: null,
+        remarks: 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
+      getInformation(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) {
+            updateInformation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInformation(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('indoorPlanInformation/information/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 248 - 0
zkqy-ui/src/views/amichi/planTask/inPlanPage/indoorProductionGroupInfo/index.vue

@@ -0,0 +1,248 @@
+<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="groupName">
+        <el-input
+          v-model="queryParams.groupName"
+          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="['indoorProductionGroupInfo: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="['indoorProductionGroupInfo: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="['indoorProductionGroupInfo: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="['indoorProductionGroupInfo: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="主键ID:唯一标识每个分组" align="center" prop="id" />
+      <el-table-column label="组名:分组的名称" align="center" prop="groupName" />
+      <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="['indoorProductionGroupInfo:information:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['indoorProductionGroupInfo:information: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="groupName">
+          <el-input v-model="form.groupName" 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 { listInformation, getInformation, delInformation, addInformation, updateInformation } from "@/api/amichi/indoorProductionGroupInfo/information";
+
+export default {
+  name: "Information",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 分组信息:用于记录各个分组的基本信息表格数据
+      informationList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        groupName: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        groupName: [
+          { required: true, message: "组名:分组的名称不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询分组信息:用于记录各个分组的基本信息列表 */
+    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,
+        groupName: 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
+      getInformation(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) {
+            updateInformation(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInformation(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('indoorProductionGroupInfo/information/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 141 - 19
zkqy-ui/src/views/amichi/planTask/inPlant.vue

@@ -16,7 +16,7 @@
         <el-form-item label="计划状态:" prop="taskStatus">
           <el-select
             v-model="queryParams.taskStatus"
-            placeholder="请选择产状态"
+            placeholder="请选择产状态"
             clearable
             filterable
           >
@@ -79,15 +79,15 @@
               v-hasPermi="['amichi:tasks:export']"
             >导出</el-button>
           </el-col>
-          <el-col :span="1.5">
-            <el-button
-              :disabled="!selection.length"
-              type="info"
-              icon="el-icon-s-help"
-              size="mini"
-              @click="handleAuto"
-            >自动排产</el-button>
-          </el-col>
+<!--          <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--              :disabled="!selection.length"-->
+<!--              type="info"-->
+<!--              icon="el-icon-s-help"-->
+<!--              size="mini"-->
+<!--              @click="handleAuto"-->
+<!--            >自动排产</el-button>-->
+<!--          </el-col>-->
           <right-toolbar
             :showCount.sync="showCount"
             :showSearch.sync="showSearch"
@@ -167,14 +167,29 @@
 
 
         </el-table-column>
-        <el-table-column   label="序号" prop="id"  align="center" width="55"></el-table-column>
+<!--        <el-table-column   label="序号" prop="id"  align="center" width="55"></el-table-column>-->
         <el-table-column
-          label="任务编号"
+          label="物料编码"
           align="center"
-          prop="planNumber">
+          prop="completionTime">
         </el-table-column>
         <el-table-column
-          label="计划生产时间"
+          label="物料名称"
+          align="center"
+          prop="completionTime">
+        </el-table-column>
+          <el-table-column
+            label="物料型号"
+            align="center"
+            prop="completionTime">
+          </el-table-column>
+            <el-table-column
+              label="物料规格"
+              align="center"
+              prop="completionTime">
+            </el-table-column>
+        <el-table-column
+          label="生产时间"
           align="center"
           prop="completionTime">
         </el-table-column>
@@ -219,8 +234,8 @@
         :limit.sync="queryParams.pageSize"
         @pagination="getPlanList"
       />
-      <!-- 场内计划新增-->
-      <el-dialog :title="inPlanTitle" :visible.sync="inPlanBoolean" width="1200px">
+      <!-- 场内计划新增 :visible.sync="inPlanBoolean" -->
+      <el-dialog :title="inPlanTitle" width="1200px">
         <el-form
           :model="inPlanForm"
           ref="inPlanForm"
@@ -362,6 +377,93 @@
           </span>
         </template>
       </el-dialog>
+      <!--  0211 场内计划新增表单-->
+      <el-dialog :title="inPlanTitle" :visible.sync="inPlanBoolean" width="1200px">
+        <el-form
+          :model="inPlanForm"
+          ref="inPlanForm"
+          :rules="inPlanFormRules"
+          label-width="100px"
+          :inline="true"
+          size="normal"
+        >
+          <el-row type="flex" class="row-bg" justify="space-between">
+            <el-col :span="8">
+              <el-form-item label="物料信息">
+                <el-select v-model="value" placeholder="请选择">
+                  <el-option
+                    v-for="item in cities"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                    <span style="float: left">{{ item.label }}</span>
+                    <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="型号">
+                <el-select v-model="value" placeholder="请选择">
+                  <el-option
+                    v-for="item in cities"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                    <span style="float: left">{{ item.label }}</span>
+                    <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="规格">
+                <el-select v-model="value" placeholder="请选择">
+                  <el-option
+                    v-for="item in cities"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                    <span style="float: left">{{ item.label }}</span>
+                    <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="生产时间">
+                <el-date-picker
+                  v-model="inPlanForm.completionTime"
+                  type="date"
+                  format="yyyy 年 MM 月 dd 日"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择计划生产时间">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="计划数量">
+                <el-input v-model="inPlanForm.quantity" style="width: 218px"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row type="flex" class="row-bg" justify="space-between">
+            <el-col :span="24">
+              <el-form-item label="备注">
+                <el-input type="textarea" v-model="inPlanForm.remark" style="width: 990px" :rows="6"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <template #footer>
+          <span>
+            <el-button type="info" @click="inPlanBoolean = false">取消</el-button>
+            <el-button type="primary" @click="inPlanConfirmHandler">确认</el-button>
+          </span>
+        </template>
+      </el-dialog>
 
       <!-- 自动排产 -->
       <el-dialog title="自动排产" :visible.sync="autoShow" width="1200px">
@@ -499,6 +601,26 @@ export default {
   },
   data() {
     return {
+      cities: [{
+        value: 'Beijing',
+        label: '北京'
+      }, {
+        value: 'Shanghai',
+        label: '上海'
+      }, {
+        value: 'Nanjing',
+        label: '南京'
+      }, {
+        value: 'Chengdu',
+        label: '成都'
+      }, {
+        value: 'Shenzhen',
+        label: '深圳'
+      }, {
+        value: 'Guangzhou',
+        label: '广州'
+      }],
+      value: '',
       productOptions:[],
       // 行index
       rowIndex: null,
@@ -836,9 +958,9 @@ export default {
     },
     //新增计划
     handleAdd(){
-      console.log("新增厂内计划")
+      console.log("新增计划")
       this.inPlanBoolean=true;
-      this.inPlanTitle="新增厂内计划"
+      this.inPlanTitle="新增计划"
       //查看半成品信息
       this.productDataList();
       this.detailData=[];
@@ -847,7 +969,7 @@ export default {
     handleUpdate(row){
       console.log(row);
       this.inPlanBoolean=true;
-      this.inPlanTitle="修改场内计划"
+      this.inPlanTitle="修改计划"
       this.$set(this.inPlanForm,"quantity",row.quantity);
       this.$set(this.inPlanForm,"remark",row.quantity);
       this.$set(this.inPlanForm,"planNumber",row.planNumber);

+ 345 - 0
zkqy-ui/src/views/amichi/print/ygmPrint2 copy.vue

@@ -0,0 +1,345 @@
+<template>
+  <!--  入库卡大小的二维码-->
+  <div>
+    <div class="tools" style="width: 100%;height:80px;margin: 0 auto ">
+      <div style="width:800px;height:80px;display: flex; justify-content: space-between; align-items: center;margin: 0 auto">
+        <div style="width: 800px;height: 40px">
+          <pagination
+            v-show="total>0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="generateEmployeeCodeList"
+            :page-sizes="[9]"
+          />
+        </div>
+        <div style="width: 200px;height: 40px">
+          <el-button type="primary" icon="el-icon-search"  size="mini"  v-print="printViewInfo">打印</el-button>
+        </div>
+      </div>
+    </div>
+    <div class="base" id="printView" >
+      <div class="box" >
+        <div class="ygmboxfj">
+          <!--卡片-->
+          <div class="ygmbox" v-for="(item,index) in listDate">
+            <div class="xx">
+              <!--              <div class="ygmbox_top">-->
+              <!--                <div class="tpdiv">-->
+              <!--                  <img :src="item.images" class="imgYs"  alt="">-->
+              <!--                </div>-->
+              <!--              </div>-->
+              <!--              <div class="ygmbox_bottom">-->
+              <!--                <table  class="ygmbox_bottom_table" border="0px">-->
+              <!--                  <tr>-->
+              <!--                    <td  class="xingming"><span>姓名</span></td>-->
+              <!--                    <td  class="xingmingValue"><span>{{item.personnelName}}</span></td>-->
+              <!--                  </tr>-->
+              <!--                  <tr>-->
+              <!--                    <td class="gdName"><span>工段</span></td>-->
+              <!--                    <td class="gdValue"><span>{{item.processName}}</span></td>-->
+              <!--                  </tr>-->
+              <!--                </table>-->
+              <!--              </div>-->
+            </div>
+
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {generateEmployeeCodeList} from "@/api/amichi/planTask/planTaskDetails.js";
+import Table from "@/views/dragform/tableList.vue";
+
+export default {
+  name: "rkadyPrint",
+  components: {Table},
+  data () {
+    return {
+      queryParams:{
+        pageNum: 1,
+        pageSize: 9,
+        userIds:[],
+      },
+      total:0,
+      listDate:[],
+      dialogVisible: false,
+      msg: "打印",
+      printViewInfo: {
+        id: "printView", //打印区域的唯一的id属性
+        // popTitle: '配置页眉标题', // 页眉文字 (不设置时显示undifined)(页眉页脚可以在打印页面的更多设置的选项中取消勾选)
+        // extraHead: '打印,印刷', // 最左上方的头部文字,附加在head标签上的额外标签,使用逗号分割
+        preview: false, // 是否启动预览模式,默认是false (开启预览模式ture会占满整个屏幕,不建议开启,除非业务需要)
+        // previewTitle: '预览的标题', // 打印预览的标题(预览模式preview为true时才显示)
+        // previewPrintBtnLabel: '预览结束,开始打印', // 打印预览的标题下方的按钮文本,点击可进入打印(预览模式preview为true时才显示)
+        zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高
+        previewBeforeOpenCallback (that) { console.log('正在加载预览窗口!'); console.log(that.msg, this) }, // 预览窗口打开之前的callback (预览模式preview为true时才执行) (that可以取到data里的变量值)
+        previewOpenCallback () { console.log('已经加载完预览窗口,预览打开了!') }, // 预览窗口打开时的callback (预览模式preview为true时才执行)
+        beforeOpenCallback () { console.log('开始打印之前!') }, // 开始打印之前的callback
+        openCallback () { console.log('执行打印了!') }, // 调用打印时的callback
+        closeCallback () { console.log('关闭了打印工具!') }, // 关闭打印的callback(无法区分确认or取消)
+        clickMounted () { console.log('点击v-print绑定的按钮了!') },
+        // url: 'http://localhost:8080/', // 打印指定的URL,确保同源策略相同
+        // asyncUrl (reslove) {
+        //   setTimeout(() => {
+        //     reslove('http://localhost:8080/')
+        //   }, 2000)
+        // },
+        standard: '',
+        extarCss: '',
+        isDataLoaded: false,
+      }
+    }
+  },
+  methods: {
+    //渲染表格内容
+    async generateEmployeeCodeList(){
+      let res = await generateEmployeeCodeList(this.queryParams)
+      if (res.code == 200) {
+        this.listDate = res.rows;
+        this.total = res.total;
+        this.isDataLoaded = true;
+      }
+    },
+  },
+  mounted() {
+  },
+  created(){
+    this.queryParams.userIds =this.$route.query.orderNumberSTwo;
+    console.log(this.queryParams.userIds,"1111111111111");
+    // let obj={"userIds":this.queryParams.orderNumberList}
+    // console.log(obj)
+    this.generateEmployeeCodeList();
+  },
+}
+
+</script>
+<style scoped>
+/* 正常展示时的样式 */
+::v-deep .pagination-container {
+  margin-top: -10px;
+}
+
+.base {
+  .page-break {
+    page-break-after: always;
+    position: relative;
+  }
+
+  .tools {
+    margin-top: 10px;
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 10px;
+  }
+
+  .box {
+    font-size: 21px;
+    width: 800px;
+    margin-bottom: 10px;
+    margin: 0 auto;
+
+    .ygmboxfj {
+      width: 800px;
+      margin: 0 auto;
+      display: flex;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+
+      .ygmbox {
+        width: 240px;
+        height: 315px;
+        border: 1px solid black;
+        margin-top: 20px;
+        margin-left: 19px;
+        .ygmbox_top {
+          width: 180px;
+          height: 180px;
+          margin: 0 auto;
+          margin-top: 30px;
+          .tpdiv {
+            width: 180px;
+            height: 180px;
+            margin-top: 27px;
+            .imgYs{
+              width: 180px;
+              height: 180px;
+            }
+          }
+        }
+        .ygmbox_bottom {
+          width: 240px;
+          height: 86px;
+          margin-top: 26px;
+          .ygmbox_bottom_table {
+            width: 99%;
+            text-align: center;
+            border-left: 0px;
+            border-right: 0px;
+            border-bottom: 0px;
+            tr {
+              td {
+                height: 38px;
+              }
+              .xingming {
+                width: 30%;
+                border-top: 2px solid black;
+                border-bottom: 2px solid black;
+                border-right: 2px solid black
+              }
+              .xingming {
+                width: 30%;
+                border-top: 2px solid black;
+                border-bottom: 2px solid black;
+                border-right: 2px solid black
+              }
+              .xingmingValue {
+                width: 40%;
+                border-top: 2px solid black;
+                border-bottom: 2px solid black
+              }
+              .gdName {
+                width: 20%;
+                border-right: 2px solid black
+              }
+              .gdValue {
+                width: 30%;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+/* 打印时的样式 */
+@media print {
+  /* 隐藏不需要打印的元素 */
+  .tools, .pagination-container {
+    display: none !important;
+  }
+  .base {
+    width: 40mm !important;
+    height: 30mm !important;
+    margin: 0 auto !important;
+  }
+
+  .box {
+    width: 40mm !important;
+    height: 30mm !important;
+    margin: 0 !important;
+    padding: 0 !important;
+    display: flex !important;
+    justify-content: center !important;
+    align-items: center !important;
+  }
+
+  .ygmboxfj {
+    width: 40mm !important;
+    height: 30mm !important;
+    border: 1px solid black !important;
+  }
+
+  .ygmbox {
+    width: 40mm !important;
+    height: 30mm !important;
+    border: 1px solid black !important;
+    box-sizing: border-box;
+    display: flex !important;
+    justify-content: center;
+    align-items: center !important;
+
+    .xx{
+      width: 38mm !important;
+      height: 28mm !important;
+      border: 1px solid black !important;
+      margin: 0;
+      .ygmbox_top {
+        width: 30mm !important;  /* 调整为30mm */
+        height: 27.5mm !important;
+        margin: 0  !important;
+        padding: 0 !important;
+        box-sizing: border-box;
+        border-right: 1px solid black;
+        .tpdiv {
+          width: 24mm !important;
+          height: 24mm !important;
+          margin: 0 auto !important;
+          margin-top: 1.5mm !important;
+          padding: 0 !important;
+          overflow: hidden !important;
+          display: flex !important;
+          align-items: center !important;
+          justify-content: center !important;
+
+          img {
+            width: 28mm !important;  /* 留1mm边距 */
+            height: 28mm !important;
+            object-fit: contain !important;
+          }
+        }
+      }
+      .ygmbox_bottom {
+        width: 7.5mm !important;
+        height: 27.5mm !important;
+        margin: 0 !important;
+        padding: 0 !important;
+        position: absolute !important;
+        right: 0 !important;
+        top: 0 !important;
+
+        .ygmbox_bottom_table {
+          width: 100% !important;
+          height: 100% !important;
+          border-collapse: collapse !important;
+          font-size: 4pt !important;
+
+          tr {
+            height: 50% !important;
+          }
+
+          td {
+            padding: 0 !important;
+            text-align: center !important;
+            vertical-align: middle !important;
+            position: relative !important;
+
+            &.xingming, &.gdName {
+              width: 3mm !important;
+              text-align: center !important;
+              line-height: 3mm !important;
+              border-right: 0.5px solid black !important;
+              border-top: none !important;
+            }
+
+            &.xingmingValue, &.gdValue {
+              width: 3mm !important;
+              text-align: center !important;
+              line-height: 3mm !important;
+              border-top: none !important;  /* 移除顶部边框 */
+            }
+
+            span {
+              writing-mode: vertical-rl !important;  /* 改为从右向左的垂直书写 */
+              text-orientation: mixed !important;  /* 允许文字自然旋转 */
+              display: inline-block !important;
+              width: 100% !important;
+              height: 100% !important;
+              line-height: 1 !important;
+            }
+          }
+
+          /* 添加边框 */
+          tr:first-child td {
+            border-bottom: 0.5px solid black !important;
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 278 - 0
zkqy-ui/src/views/amichi/print/ygmPrint2.vue

@@ -0,0 +1,278 @@
+<template>
+  <div>
+    <div class="tools" style="width: 100%;height:80px;margin: 0 auto">
+      <div style="width:800px;height:80px;display: flex; justify-content: space-between; align-items: center;margin: 0 auto">
+        <div style="width: 800px;height: 40px">
+          <pagination
+            v-show="total>0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="flowCardListApi"
+            :page-sizes="[5,10,30]"
+          />
+        </div>
+        <div style="width: 200px;height: 40px">
+          <el-button type="primary" icon="el-icon-search"  size="mini"  v-print="printViewInfo">打印</el-button>
+        </div>
+      </div>
+    </div>
+    <div class="base" id="printView" >
+      <!--      <div class="box" style="page-break-after:always;margin-top: 10px;">-->
+      <!--        <div  class="bj" v-for="(item,index) in listDate" style="margin-top: 20px">-->
+      <!--          <div class="erweima"><img :src="item.base46MaD"  alt=""></div>-->
+      <!--          <div class="xh">{{item.serialNumber}}</div>-->
+      <!--        </div>-->
+      <!--      </div>-->
+      <div class="fj">
+        <div class="abc" v-for="(item,index) in listDate" >
+          <div class="label-container">
+            <div class="content-inner">
+              <div id="qrcode1" ><img :src="item.images" style="width: 24mm;height: 24mm" :alt="item.personnelName"></div>
+              <div class="order-number">{{item.personnelName}} {{item.processName}}</div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {generateEmployeeCodeList, listInfoRkK} from "@/api/amichi/planTask/planTaskDetails.js";
+export default {
+  name: "rkadyPrint",
+  data () {
+    return {
+      queryParams:{
+        pageNum: 1,
+        pageSize: 30,
+        orderNumberList:[],
+      },
+      total:0,
+      listDate:[],
+      dialogVisible: false,
+      msg: "打印",
+      printViewInfo: {
+        id: "printView", //打印区域的唯一的id属性
+        // popTitle: '配置页眉标题', // 页眉文字 (不设置时显示undifined)(页眉页脚可以在打印页面的更多设置的选项中取消勾选)
+        // extraHead: '打印,印刷', // 最左上方的头部文字,附加在head标签上的额外标签,使用逗号分割
+        preview: false, // 是否启动预览模式,默认是false (开启预览模式ture会占满整个屏幕,不建议开启,除非业务需要)
+        // previewTitle: '预览的标题', // 打印预览的标题(预览模式preview为true时才显示)
+        // previewPrintBtnLabel: '预览结束,开始打印', // 打印预览的标题下方的按钮文本,点击可进入打印(预览模式preview为true时才显示)
+        zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高
+        previewBeforeOpenCallback (that) { console.log('正在加载预览窗口!'); console.log(that.msg, this) }, // 预览窗口打开之前的callback (预览模式preview为true时才执行) (that可以取到data里的变量值)
+        previewOpenCallback () { console.log('已经加载完预览窗口,预览打开了!') }, // 预览窗口打开时的callback (预览模式preview为true时才执行)
+        beforeOpenCallback () { console.log('开始打印之前!') }, // 开始打印之前的callback
+        openCallback () { console.log('执行打印了!') }, // 调用打印时的callback
+        closeCallback () { console.log('关闭了打印工具!') }, // 关闭打印的callback(无法区分确认or取消)
+        clickMounted () { console.log('点击v-print绑定的按钮了!') },
+        // url: 'http://localhost:8080/', // 打印指定的URL,确保同源策略相同
+        // asyncUrl (reslove) {
+        //   setTimeout(() => {
+        //     reslove('http://localhost:8080/')
+        //   }, 2000)
+        // },
+        standard: '',
+        extarCss: '',
+        isDataLoaded: false,
+      }
+    }
+  },
+  methods: {
+    //渲染表格内容
+    async generateEmployeeCodeList(){
+      let res = await generateEmployeeCodeList(this.queryParams)
+      if (res.code == 200) {
+        this.listDate = res.rows;
+        this.total = res.total;
+        this.isDataLoaded = true;
+      }
+    },
+    getNextOrderNumber(index) {
+      if (index < this.listDate.length - 1) {
+        return this.listDate[index + 1];
+      } else {
+        return 0
+      }
+    },
+
+    //渲染表格内容
+    async flowCardListApi(){
+      let res = await listInfoRkK(this.queryParams)
+      if (res.code == 200) {
+        this.listDate = res.rows;
+        this.total = res.total;
+        this.isDataLoaded = true;
+        this.$nextTick(()=>{
+          this.adjustFontSize();
+          this.adjustFontSizebzxsm()
+        })
+
+      }
+    },
+
+    adjustFontSize() {
+      const element = this.$refs.bzx;
+      if (!element) return; // 如果元素不存在,直接返回
+
+      for (let i=0;i<element.length;i++) {
+        const maxHeight = 115;
+        let currentFontSize = 21;
+        while (element[i].scrollHeight > maxHeight && currentFontSize > 8) {
+          currentFontSize -= 0.5; // 每次减少0.5px
+          element[i].style.fontSize = `${currentFontSize}px`;
+        }
+      }
+      console.log(element[0].style)
+    },
+    adjustFontSizebzxsm() {
+      const element = this.$refs.bzxsm;
+      console.log(element.length)
+      if (!element) return; // 如果元素不存在,直接返回
+      for (let i=0;i<element.length;i++){
+        const maxHeight = 50;
+        let currentFontSize = 21;
+        while (element[i].scrollHeight > maxHeight && currentFontSize > 8) {
+          currentFontSize -= 0.5; // 每次减少0.5px
+          element[i].style.fontSize = `${currentFontSize}px`;
+        }
+      }
+
+      console.log(element[0].style)
+    }
+  },
+  mounted() {
+
+  },
+  created(){
+    this.queryParams.userIds =this.$route.query.orderNumberSTwo;
+    console.log(this.queryParams.userIds,"1111111111111");
+    // let obj={"userIds":this.queryParams.orderNumberList}
+    // console.log(obj)
+    this.generateEmployeeCodeList();
+  },
+}
+
+</script>
+<style media="print" scoped>
+::v-deep .pagination-container {
+  margin-top: -10px;
+}
+body {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+  background-color: #2c2b2b;
+}
+
+.fj {
+  width: 220mm;  /* 足够放下5个标签的宽度 */
+  margin: 20px auto;
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+  justify-content: flex-start;
+}
+
+.abc {
+  width: 40mm;
+  height: 30mm;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: 15px;
+}
+
+.label-container {
+  width: 38mm;
+  height: 28mm;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  box-sizing: border-box;
+  border: 1px dashed #000;
+  page-break-after: always;
+}
+.qrcode1 img{
+
+}
+.content-inner {
+  transform: rotate(270deg);
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 38mm;
+  height: 28mm;
+  position: relative;
+}
+
+#qrcode1, #qrcode2, #qrcode3, #qrcode4, #qrcode5 {
+  width: 24mm;
+  height: 24mm;
+  margin: 0;
+  position: relative;
+  top: -0.5mm;
+}
+
+.order-number {
+  display: flex;
+  flex-direction: column;
+  font-size: 14px;
+  position: absolute;
+  right: -8mm;
+  top: 50%;
+  transform: translateY(-50%) rotate(90deg);
+  line-height: 1.2;
+  background: white;
+}
+
+@media print {
+  .fj {
+    width: 40mm;
+    margin: 0;
+    gap: 0;
+  }
+
+  @page {
+    size: 40mm 30mm;
+    margin: 0;
+  }
+
+  body {
+    width: 40mm;
+    margin: 0;
+    padding: 0;
+  }
+
+  .abc {
+    width: 40mm;
+    height: 30mm;
+    margin: 0;
+    page-break-after: always;
+    overflow: hidden;
+    margin-top: 0px;
+  }
+
+  .label-container {
+    border: 1px dashed #000;
+    transform: scale(0.95);
+  }
+
+  .content-inner {
+    transform: rotate(270deg);
+  }
+
+  .order-number {
+    display: block;
+    position: static;
+    transform: none;
+    margin-top: 2mm;
+    text-align: center;
+    font-size: 14px;
+    background: none;
+    color: black;
+    font-weight: bold;
+  }
+}
+</style>

+ 36 - 0
zkqy-ui/src/views/amichi/ringScanInformation/index.vue

@@ -85,6 +85,26 @@
           v-hasPermi="['ringScanInformation:information:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport2"
+          v-hasPermi="['ringScanInformation:information:export']"
+        >导出今天</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport3"
+          v-hasPermi="['ringScanInformation:information:export']"
+        >导出昨天</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -107,6 +127,7 @@
       <el-table-column label="物料编码" align="center" prop="materialCode" />
       <el-table-column label="物料名称" align="center" prop="materialName" />
       <el-table-column label="型号" align="center" prop="model" />
+      <el-table-column label="规格" align="center" prop="specification" />
 <!--      <el-table-column label="扫描状态" align="center" prop="executionMark"  v-if="">-->
 <!--        <template  v-slot="scope">-->
 <!--          <dict-tag  :options="dict.type.smzt" :value="scope.row.executionMark"/>-->
@@ -156,6 +177,7 @@
 <script>
 import { listInformation, getInformation, delInformation, addInformation, updateInformation } from "@/api/amichi/ringScanInformation/index";
 import {listList} from "@/api/amichi/procedureList/list";
+import  dayjs from 'dayjs'
 
 export default {
   name: "Information",
@@ -353,6 +375,20 @@ export default {
       this.download('/amichi/ringScanInformation/export', {
         ...this.queryParams
       }, `information_${new Date().getTime()}.xlsx`)
+    },
+    /** 导出按钮操作今天 */
+    handleExport2() {
+      this.queryParams.scanningTimeString=dayjs().format('YYYY-MM-D HH:mm:ss');
+      this.download('/amichi/ringScanInformation/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
+    },
+    /** 导出按钮操作昨天 */
+    handleExport3() {
+      this.queryParams.scanningTimeString=dayjs().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'), // 昨天的日期,格式化输出为 YYYY-MM-DD 格式
+      this.download('/amichi/ringScanInformation/export', {
+        ...this.queryParams
+      }, `information_${new Date().getTime()}.xlsx`)
     }
   }
 };