From 8b389601ea23deddb3318a8a70d0c80e7b6b994c Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期四, 20 二月 2025 13:34:59 +0800
Subject: [PATCH] -工单物料配置表

---
 jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/domain/ScMaterialConf.java                  |  151 ++++++++
 jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/impl/ScMaterialConfServiceImpl.java |  101 +++++
 jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/controller/ScMaterialConfController.java    |  120 +++++++
 jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java                                 |   19 +
 jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/mapper/ScMaterialConfMapper.java            |   63 +++
 jcdm-main/src/main/resources/mapper/sc/materialConf/ScMaterialConfMapper.xml                      |  103 ++++++
 jcdm-ui/src/api/main/sc/materialConf/materialConf.js                                              |   56 +++
 jcdm-ui/src/views/main/sc/materialConf/index.vue                                                  |  342 ++++++++++++++++++++
 jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/IScMaterialConfService.java         |   63 +++
 9 files changed, 1,016 insertions(+), 2 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
index 8a46925..dd4713c 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/CustomRunner.java
@@ -2,6 +2,7 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.jcdm.main.constant.Constants;
 import com.jcdm.main.da.cellData.service.IDaCellDataService;
 import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
@@ -13,6 +14,8 @@
 import com.jcdm.main.da.testDeviceInterfaceTemp.service.IDaTestDeviceInterfaceTempService;
 import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
 import com.jcdm.main.plcserver.sub.OPCUaSubscription;
+import com.jcdm.main.sc.materialConf.domain.ScMaterialConf;
+import com.jcdm.main.sc.materialConf.service.IScMaterialConfService;
 import com.kangaroohy.milo.service.MiloService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;
@@ -52,12 +55,16 @@
     private IDaCellDataService daCellDataService;
     @Autowired
     private IDaPsConfService daPsConfService;
+    @Autowired
+    private IScMaterialConfService materialConfService;
+
     @Override
     public void run(ApplicationArguments args) throws Exception {
 
         //PLC鍒癕ES鐗╂枡杞崲
-        Constants.materialMap.put("1","9900199052A");
-        Constants.materialMap.put("2","9900199053B");
+        initMaterialConf();
+//        Constants.materialMap.put("1","9900199052A");
+//        Constants.materialMap.put("2","9900199053B");
 //        Constants.materialMap.put("3","9900236569");
 //        Constants.materialMap.put("4","9900236570");
 //        Constants.materialMap.put("1","9900236569");
@@ -106,6 +113,14 @@
 
     }
 
+    public void initMaterialConf(){
+        List<ScMaterialConf> materialConfList = materialConfService.list(new LambdaQueryWrapper<ScMaterialConf>().eq(ScMaterialConf::getStatus, Constants.USE_ING));
+        for (ScMaterialConf materialConf : materialConfList) {
+            Constants.materialMap.put(materialConf.getModelCode(),materialConf.getMaterialCode());
+        }
+        System.out.println("鍒濆鍖栫墿鏂欒浆鎹細"+Constants.materialMap);
+    }
+
     /**
      * 璁㈤槄鍐呭
      */
diff --git a/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/controller/ScMaterialConfController.java b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/controller/ScMaterialConfController.java
new file mode 100644
index 0000000..caf2cb1
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/controller/ScMaterialConfController.java
@@ -0,0 +1,120 @@
+package com.jcdm.main.sc.materialConf.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.jcdm.common.core.domain.entity.SysRole;
+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.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.main.sc.materialConf.domain.ScMaterialConf;
+import com.jcdm.main.sc.materialConf.service.IScMaterialConfService;
+import com.jcdm.common.utils.poi.ExcelUtil;
+import com.jcdm.common.core.page.TableDataInfo;
+
+/**
+ * 宸ュ崟鐗╂枡閰嶇疆Controller
+ * 
+ * @author ruoyi
+ * @date 2025-02-19
+ */
+@RestController
+@RequestMapping("/sc/materialConf")
+public class ScMaterialConfController extends BaseController
+{
+    @Autowired
+    private IScMaterialConfService scMaterialConfService;
+
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('sc:materialConf:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ScMaterialConf scMaterialConf)
+    {
+        startPage();
+        List<ScMaterialConf> list = scMaterialConfService.selectScMaterialConfList(scMaterialConf);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭宸ュ崟鐗╂枡閰嶇疆鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('sc:materialConf:export')")
+    @Log(title = "宸ュ崟鐗╂枡閰嶇疆", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ScMaterialConf scMaterialConf)
+    {
+        List<ScMaterialConf> list = scMaterialConfService.selectScMaterialConfList(scMaterialConf);
+        ExcelUtil<ScMaterialConf> util = new ExcelUtil<ScMaterialConf>(ScMaterialConf.class);
+        util.exportExcel(response, list, "宸ュ崟鐗╂枡閰嶇疆鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇宸ュ崟鐗╂枡閰嶇疆璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('sc:materialConf:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(scMaterialConfService.selectScMaterialConfById(id));
+    }
+
+    /**
+     * 鏂板宸ュ崟鐗╂枡閰嶇疆
+     */
+    @PreAuthorize("@ss.hasPermi('sc:materialConf:add')")
+    @Log(title = "宸ュ崟鐗╂枡閰嶇疆", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ScMaterialConf scMaterialConf)
+    {
+        return toAjax(scMaterialConfService.insertScMaterialConf(scMaterialConf));
+    }
+
+    /**
+     * 淇敼宸ュ崟鐗╂枡閰嶇疆
+     */
+    @PreAuthorize("@ss.hasPermi('sc:materialConf:edit')")
+    @Log(title = "宸ュ崟鐗╂枡閰嶇疆", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ScMaterialConf scMaterialConf)
+    {
+        return toAjax(scMaterialConfService.updateScMaterialConf(scMaterialConf));
+    }
+
+    /**
+     * 鍒犻櫎宸ュ崟鐗╂枡閰嶇疆
+     */
+    @PreAuthorize("@ss.hasPermi('sc:materialConf:remove')")
+    @Log(title = "宸ュ崟鐗╂枡閰嶇疆", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(scMaterialConfService.deleteScMaterialConfByIds(ids));
+    }
+
+    /**
+     * 鐘舵�佷慨鏀�
+     */
+    @PutMapping("/changeMaterialStatus")
+    public AjaxResult changeMaterialStatus(@RequestBody ScMaterialConf scMaterialConf)
+    {
+        UpdateWrapper<ScMaterialConf> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id",scMaterialConf.getId());
+        updateWrapper.set("status",scMaterialConf.getStatus());
+        return toAjax(scMaterialConfService.update(updateWrapper));
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/domain/ScMaterialConf.java b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/domain/ScMaterialConf.java
new file mode 100644
index 0000000..5e9193c
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/domain/ScMaterialConf.java
@@ -0,0 +1,151 @@
+package com.jcdm.main.sc.materialConf.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.jcdm.common.annotation.Excel;
+import com.jcdm.common.core.domain.BaseEntity;
+
+/**
+ * 宸ュ崟鐗╂枡閰嶇疆瀵硅薄 sc_material_conf
+ * 
+ * @author ruoyi
+ * @date 2025-02-19
+ */
+public class ScMaterialConf extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭id */
+    private Long id;
+
+    /** 鐗╂枡缂栫爜 */
+    @Excel(name = "鐗╂枡缂栫爜")
+    private String materialCode;
+
+    /** 鐗╂枡鍚嶇О */
+    @Excel(name = "鐗╂枡鍚嶇О")
+    private String materialName;
+
+    /** 棰勭暀瀛楁1 */
+    @Excel(name = "棰勭暀瀛楁1")
+    private String sparefield1;
+
+    /** 棰勭暀瀛楁2 */
+    @Excel(name = "棰勭暀瀛楁2")
+    private String sparefield2;
+
+    /** 鍒涘缓鐢ㄦ埛 */
+    @Excel(name = "鍒涘缓鐢ㄦ埛")
+    private String createUser;
+
+    /** 鏇存敼鐢ㄦ埛 */
+    @Excel(name = "鏇存敼鐢ㄦ埛")
+    private String updateUser;
+
+    /** 鐘舵�� */
+    @Excel(name = "鐘舵��")
+    private String status;
+
+    /** 妯$粍绫诲瀷 */
+    @Excel(name = "妯$粍绫诲瀷")
+    private String modelCode;
+    public void setModelCode(String modelCode)
+    {
+        this.modelCode = modelCode;
+    }
+
+    public String getModelCode()
+    {
+        return modelCode;
+    }
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setMaterialCode(String materialCode) 
+    {
+        this.materialCode = materialCode;
+    }
+
+    public String getMaterialCode() 
+    {
+        return materialCode;
+    }
+    public void setMaterialName(String materialName) 
+    {
+        this.materialName = materialName;
+    }
+
+    public String getMaterialName() 
+    {
+        return materialName;
+    }
+    public void setSparefield1(String sparefield1) 
+    {
+        this.sparefield1 = sparefield1;
+    }
+
+    public String getSparefield1() 
+    {
+        return sparefield1;
+    }
+    public void setSparefield2(String sparefield2) 
+    {
+        this.sparefield2 = sparefield2;
+    }
+
+    public String getSparefield2() 
+    {
+        return sparefield2;
+    }
+    public void setCreateUser(String createUser) 
+    {
+        this.createUser = createUser;
+    }
+
+    public String getCreateUser() 
+    {
+        return createUser;
+    }
+    public void setUpdateUser(String updateUser) 
+    {
+        this.updateUser = updateUser;
+    }
+
+    public String getUpdateUser() 
+    {
+        return updateUser;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("materialCode", getMaterialCode())
+            .append("materialName", getMaterialName())
+            .append("remark", getRemark())
+            .append("sparefield1", getSparefield1())
+            .append("sparefield2", getSparefield2())
+            .append("createUser", getCreateUser())
+            .append("createTime", getCreateTime())
+            .append("updateUser", getUpdateUser())
+            .append("updateTime", getUpdateTime())
+            .append("status", getStatus())
+            .toString();
+    }
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/mapper/ScMaterialConfMapper.java b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/mapper/ScMaterialConfMapper.java
new file mode 100644
index 0000000..6e75772
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/mapper/ScMaterialConfMapper.java
@@ -0,0 +1,63 @@
+package com.jcdm.main.sc.materialConf.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jcdm.main.sc.materialConf.domain.ScMaterialConf;
+
+/**
+ * 宸ュ崟鐗╂枡閰嶇疆Mapper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2025-02-19
+ */
+public interface ScMaterialConfMapper extends BaseMapper<ScMaterialConf>
+{
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param id 宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 宸ュ崟鐗╂枡閰嶇疆
+     */
+    public ScMaterialConf selectScMaterialConfById(Long id);
+
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆鍒楄〃
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 宸ュ崟鐗╂枡閰嶇疆闆嗗悎
+     */
+    public List<ScMaterialConf> selectScMaterialConfList(ScMaterialConf scMaterialConf);
+
+    /**
+     * 鏂板宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 缁撴灉
+     */
+    public int insertScMaterialConf(ScMaterialConf scMaterialConf);
+
+    /**
+     * 淇敼宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 缁撴灉
+     */
+    public int updateScMaterialConf(ScMaterialConf scMaterialConf);
+
+    /**
+     * 鍒犻櫎宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param id 宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteScMaterialConfById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteScMaterialConfByIds(Long[] ids);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/IScMaterialConfService.java b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/IScMaterialConfService.java
new file mode 100644
index 0000000..d0f3d2d
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/IScMaterialConfService.java
@@ -0,0 +1,63 @@
+package com.jcdm.main.sc.materialConf.service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jcdm.main.sc.materialConf.domain.ScMaterialConf;
+
+/**
+ * 宸ュ崟鐗╂枡閰嶇疆Service鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2025-02-19
+ */
+public interface IScMaterialConfService extends IService<ScMaterialConf>
+{
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param id 宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 宸ュ崟鐗╂枡閰嶇疆
+     */
+    public ScMaterialConf selectScMaterialConfById(Long id);
+
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆鍒楄〃
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 宸ュ崟鐗╂枡閰嶇疆闆嗗悎
+     */
+    public List<ScMaterialConf> selectScMaterialConfList(ScMaterialConf scMaterialConf);
+
+    /**
+     * 鏂板宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 缁撴灉
+     */
+    public int insertScMaterialConf(ScMaterialConf scMaterialConf);
+
+    /**
+     * 淇敼宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 缁撴灉
+     */
+    public int updateScMaterialConf(ScMaterialConf scMaterialConf);
+
+    /**
+     * 鎵归噺鍒犻櫎宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑宸ュ崟鐗╂枡閰嶇疆涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteScMaterialConfByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎宸ュ崟鐗╂枡閰嶇疆淇℃伅
+     * 
+     * @param id 宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteScMaterialConfById(Long id);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/impl/ScMaterialConfServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/impl/ScMaterialConfServiceImpl.java
new file mode 100644
index 0000000..d950694
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/sc/materialConf/service/impl/ScMaterialConfServiceImpl.java
@@ -0,0 +1,101 @@
+package com.jcdm.main.sc.materialConf.service.impl;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jcdm.common.utils.DateUtils;
+import com.jcdm.main.sc.stationConf.domain.ScStationConf;
+import com.jcdm.main.sc.stationConf.mapper.ScStationConfMapper;
+import com.jcdm.main.sc.stationConf.service.IScStationConfService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.jcdm.main.sc.materialConf.mapper.ScMaterialConfMapper;
+import com.jcdm.main.sc.materialConf.domain.ScMaterialConf;
+import com.jcdm.main.sc.materialConf.service.IScMaterialConfService;
+
+/**
+ * 宸ュ崟鐗╂枡閰嶇疆Service涓氬姟灞傚鐞�
+ * 
+ * @author ruoyi
+ * @date 2025-02-19
+ */
+@Service
+public class ScMaterialConfServiceImpl extends ServiceImpl<ScMaterialConfMapper, ScMaterialConf> implements IScMaterialConfService
+{
+    @Autowired
+    private ScMaterialConfMapper scMaterialConfMapper;
+
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param id 宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 宸ュ崟鐗╂枡閰嶇疆
+     */
+    @Override
+    public ScMaterialConf selectScMaterialConfById(Long id)
+    {
+        return scMaterialConfMapper.selectScMaterialConfById(id);
+    }
+
+    /**
+     * 鏌ヨ宸ュ崟鐗╂枡閰嶇疆鍒楄〃
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 宸ュ崟鐗╂枡閰嶇疆
+     */
+    @Override
+    public List<ScMaterialConf> selectScMaterialConfList(ScMaterialConf scMaterialConf)
+    {
+        return scMaterialConfMapper.selectScMaterialConfList(scMaterialConf);
+    }
+
+    /**
+     * 鏂板宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertScMaterialConf(ScMaterialConf scMaterialConf)
+    {
+        scMaterialConf.setCreateTime(DateUtils.getNowDate());
+        return scMaterialConfMapper.insertScMaterialConf(scMaterialConf);
+    }
+
+    /**
+     * 淇敼宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param scMaterialConf 宸ュ崟鐗╂枡閰嶇疆
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateScMaterialConf(ScMaterialConf scMaterialConf)
+    {
+        scMaterialConf.setUpdateTime(DateUtils.getNowDate());
+        return scMaterialConfMapper.updateScMaterialConf(scMaterialConf);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎宸ュ崟鐗╂枡閰嶇疆
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteScMaterialConfByIds(Long[] ids)
+    {
+        return scMaterialConfMapper.deleteScMaterialConfByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎宸ュ崟鐗╂枡閰嶇疆淇℃伅
+     * 
+     * @param id 宸ュ崟鐗╂枡閰嶇疆涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteScMaterialConfById(Long id)
+    {
+        return scMaterialConfMapper.deleteScMaterialConfById(id);
+    }
+}
diff --git a/jcdm-main/src/main/resources/mapper/sc/materialConf/ScMaterialConfMapper.xml b/jcdm-main/src/main/resources/mapper/sc/materialConf/ScMaterialConfMapper.xml
new file mode 100644
index 0000000..e187e46
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/sc/materialConf/ScMaterialConfMapper.xml
@@ -0,0 +1,103 @@
+<?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.jcdm.main.sc.materialConf.mapper.ScMaterialConfMapper">
+
+    <resultMap type="ScMaterialConf" id="ScMaterialConfResult">
+        <result property="id"    column="id"    />
+        <result property="materialCode"    column="material_code"    />
+        <result property="materialName"    column="material_name"    />
+        <result property="remark"    column="remark"    />
+        <result property="sparefield1"    column="sparefield1"    />
+        <result property="sparefield2"    column="sparefield2"    />
+        <result property="createUser"    column="create_user"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateUser"    column="update_user"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="status"    column="status"    />
+        <result property="modelCode"    column="model_code"    />
+    </resultMap>
+
+    <sql id="selectScMaterialConfVo">
+        select id, material_code, material_name, remark, sparefield1, sparefield2, create_user, create_time, update_user, update_time, status, model_code from sc_material_conf
+    </sql>
+
+    <select id="selectScMaterialConfList" parameterType="ScMaterialConf" resultMap="ScMaterialConfResult">
+        <include refid="selectScMaterialConfVo"/>
+        <where>
+            <if test="materialCode != null  and materialCode != ''"> and material_code like concat('%', #{materialCode}, '%')</if>
+            <if test="materialName != null  and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
+            <if test="sparefield1 != null  and sparefield1 != ''"> and sparefield1 = #{sparefield1}</if>
+            <if test="sparefield2 != null  and sparefield2 != ''"> and sparefield2 = #{sparefield2}</if>
+            <if test="createUser != null  and createUser != ''"> and create_user = #{createUser}</if>
+            <if test="updateUser != null  and updateUser != ''"> and update_user = #{updateUser}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="modelCode != null  and modelCode != ''"> and model_code = #{modelCode}</if>
+        </where>
+    </select>
+
+    <select id="selectScMaterialConfById" parameterType="Long" resultMap="ScMaterialConfResult">
+        <include refid="selectScMaterialConfVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertScMaterialConf" parameterType="ScMaterialConf" useGeneratedKeys="true" keyProperty="id">
+        insert into sc_material_conf
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">material_code,</if>
+            <if test="materialName != null">material_name,</if>
+            <if test="remark != null">remark,</if>
+            <if test="sparefield1 != null">sparefield1,</if>
+            <if test="sparefield2 != null">sparefield2,</if>
+            <if test="createUser != null">create_user,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateUser != null">update_user,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="status != null">status,</if>
+            <if test="modelCode != null">model_code,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="materialCode != null">#{materialCode},</if>
+            <if test="materialName != null">#{materialName},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="sparefield1 != null">#{sparefield1},</if>
+            <if test="sparefield2 != null">#{sparefield2},</if>
+            <if test="createUser != null">#{createUser},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateUser != null">#{updateUser},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="status != null">#{status},</if>
+            <if test="modelCode != null">#{modelCode},</if>
+        </trim>
+    </insert>
+
+    <update id="updateScMaterialConf" parameterType="ScMaterialConf">
+        update sc_material_conf
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="materialCode != null">material_code = #{materialCode},</if>
+            <if test="materialName != null">material_name = #{materialName},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="sparefield1 != null">sparefield1 = #{sparefield1},</if>
+            <if test="sparefield2 != null">sparefield2 = #{sparefield2},</if>
+            <if test="createUser != null">create_user = #{createUser},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateUser != null">update_user = #{updateUser},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="modelCode != null">model_code = #{modelCode},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteScMaterialConfById" parameterType="Long">
+        delete from sc_material_conf where id = #{id}
+    </delete>
+
+    <delete id="deleteScMaterialConfByIds" parameterType="String">
+        delete from sc_material_conf where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/jcdm-ui/src/api/main/sc/materialConf/materialConf.js b/jcdm-ui/src/api/main/sc/materialConf/materialConf.js
new file mode 100644
index 0000000..6b8a060
--- /dev/null
+++ b/jcdm-ui/src/api/main/sc/materialConf/materialConf.js
@@ -0,0 +1,56 @@
+import request from '@/utils/request'
+
+// 鏌ヨ宸ュ崟鐗╂枡閰嶇疆鍒楄〃
+export function listMaterialConf(query) {
+  return request({
+    url: '/sc/materialConf/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function changeMaterialStatus(id, status) {
+  const data = {
+    id,
+    status
+  }
+  return request({
+    url: '/sc/materialConf/changeMaterialStatus',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鏌ヨ宸ュ崟鐗╂枡閰嶇疆璇︾粏
+export function getMaterialConf(id) {
+  return request({
+    url: '/sc/materialConf/' + id,
+    method: 'get'
+  })
+}
+
+// 鏂板宸ュ崟鐗╂枡閰嶇疆
+export function addMaterialConf(data) {
+  return request({
+    url: '/sc/materialConf',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼宸ュ崟鐗╂枡閰嶇疆
+export function updateMaterialConf(data) {
+  return request({
+    url: '/sc/materialConf',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎宸ュ崟鐗╂枡閰嶇疆
+export function delMaterialConf(id) {
+  return request({
+    url: '/sc/materialConf/' + id,
+    method: 'delete'
+  })
+}
diff --git a/jcdm-ui/src/views/main/sc/materialConf/index.vue b/jcdm-ui/src/views/main/sc/materialConf/index.vue
new file mode 100644
index 0000000..e6096b3
--- /dev/null
+++ b/jcdm-ui/src/views/main/sc/materialConf/index.vue
@@ -0,0 +1,342 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <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 style="float: right">
+            <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-card>
+
+    <el-card style="margin-top: 10px" class="box-card">
+        <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="['sc:materialConf: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="['sc:materialConf: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="['sc:materialConf: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="['sc:materialConf:export']"
+            >瀵煎嚭</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+
+        <el-table border v-loading="loading" :data="materialConfList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="鐗╂枡缂栫爜" align="center" prop="materialCode">
+          </el-table-column>
+          <el-table-column label="鐗╂枡鍚嶇О" align="center" prop="materialName">
+          </el-table-column>
+          <el-table-column label="妯$粍绫诲瀷" align="center" prop="modelCode">
+          </el-table-column>
+          <el-table-column label="鐘舵��" align="center" width="100">
+            <template slot-scope="scope">
+              <el-switch
+                v-model="scope.row.status"
+                active-value="0"
+                inactive-value="1"
+                @change="handleStatusChange(scope.row)"
+              ></el-switch>
+            </template>
+          </el-table-column>
+          <el-table-column label="澶囨敞" align="center" prop="remark">
+          </el-table-column>
+          <el-table-column label="鍒涘缓鐢ㄦ埛" align="center" prop="createUser">
+          </el-table-column>
+          <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime">
+          </el-table-column>
+          <el-table-column label="鏇存敼鐢ㄦ埛" align="center" prop="updateUser">
+          </el-table-column>
+          <el-table-column label="鏇存敼鏃堕棿" align="center" prop="updateTime">
+          </el-table-column>
+          <el-table-column width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="success"
+                plain
+                style="width: 72px"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['sc:materialConf:edit']"
+              >淇敼</el-button>
+              <el-button
+                size="mini"
+                type="danger"
+                plain
+                style="width: 72px"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['sc:materialConf:remove']"
+              >鍒犻櫎</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+    </el-card>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀瑰伐鍗曠墿鏂欓厤缃璇濇 -->
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
+      <span slot="title">
+        <i class="el-icon-s-order"></i>
+        {{titleName}}
+      </span>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="鐗╂枡缂栫爜" prop="materialCode">
+          <el-input v-model="form.materialCode" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" />
+        </el-form-item>
+        <el-form-item label="鐗╂枡鍚嶇О" prop="materialName">
+          <el-input v-model="form.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" />
+        </el-form-item>
+        <el-form-item label="妯$粍绫诲瀷" prop="modelCode">
+          <el-input v-model="form.modelCode" placeholder="璇疯緭鍏ユā缁勭被鍨�" />
+        </el-form-item>
+        <el-form-item label="澶囨敞" prop="remark">
+          <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listMaterialConf,
+  getMaterialConf,
+  delMaterialConf,
+  addMaterialConf,
+  updateMaterialConf,
+  changeMaterialStatus
+} from "@/api/main/sc/materialConf/materialConf";
+import {changeRoleStatus} from "@/api/system/role";
+
+export default {
+  name: "MaterialConf",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      titleName: "",
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 宸ュ崟鐗╂枡閰嶇疆琛ㄦ牸鏁版嵁
+      materialConfList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        materialCode: null,
+        materialName: null,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        id: [
+          { required: true, message: "涓婚敭id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      // 璁$畻鐘舵�佷负1鐨勭墿鏂欐暟閲�
+      const activeMaterialCount = this.materialConfList.filter(material => material.status === "0").length;
+      // 濡傛灉瑕佸惎鐢ㄧ墿鏂欙紝妫�鏌ョ姸鎬佷负1鐨勭墿鏂欐暟閲忔槸鍚﹀ぇ浜�2
+      if (activeMaterialCount > 2) {
+        // 鎭㈠鐘舵��
+        row.status = "1"; // 鍋囪鍘熷鐘舵�佹槸1
+        this.$modal.msgWarning("宸茬粡鏈変袱涓墿鏂欏浜庡惎鐢ㄧ姸鎬侊紝涓嶈兘鍚敤鏇村鐗╂枡銆�");
+        return;
+      }
+
+      this.$modal.confirm('纭瑕�"' + text + '""' + row.materialCode + '"鐗╂枡鍚楋紵').then(function() {
+        return changeMaterialStatus(row.id, row.status);
+      }).then(() => {
+        this.$modal.msgSuccess(text + "鎴愬姛");
+      }).catch(function() {
+        row.status = row.status === "0" ? "1" : "0";
+      });
+    },
+    /** 鏌ヨ宸ュ崟鐗╂枡閰嶇疆鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listMaterialConf(this.queryParams).then(response => {
+        this.materialConfList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        materialCode: null,
+        materialName: null,
+        remark: null,
+        sparefield1: null,
+        sparefield2: null,
+        createUser: null,
+        createTime: null,
+        updateUser: null,
+        updateTime: null,
+        status: null,
+        modelCode: 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.titleName = "娣诲姞宸ュ崟鐗╂枡閰嶇疆";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getMaterialConf(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.titleName = "淇敼宸ュ崟鐗╂枡閰嶇疆";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateMaterialConf(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addMaterialConf(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 delMaterialConf(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('sc/materialConf/export', {
+        ...this.queryParams
+      }, `materialConf_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3