diff --git a/ant-design-vue/src/views/modules/injectSpotData/TtInjectSpotDataList.vue b/ant-design-vue/src/views/modules/injectSpotData/TtInjectSpotDataList.vue
new file mode 100644
index 0000000..b2df23c
--- /dev/null
+++ b/ant-design-vue/src/views/modules/injectSpotData/TtInjectSpotDataList.vue
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
查询
+
导出
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/injectSpotData/TtInjectSpotData_menu_insert.sql b/ant-design-vue/src/views/modules/injectSpotData/TtInjectSpotData_menu_insert.sql
new file mode 100644
index 0000000..a4c25ea
--- /dev/null
+++ b/ant-design-vue/src/views/modules/injectSpotData/TtInjectSpotData_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/injectspotdata文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020511096670090', NULL, 'tt_inject_spot_data', '/injectspotdata/ttInjectSpotDataList', 'injectspotdata/TtInjectSpotDataList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670091', '2023020511096670090', '添加tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670092', '2023020511096670090', '编辑tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670093', '2023020511096670090', '删除tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670094', '2023020511096670090', '批量删除tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096680095', '2023020511096670090', '导出excel_tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096680096', '2023020511096670090', '导入excel_tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataForm.vue b/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataForm.vue
new file mode 100644
index 0000000..662128a
--- /dev/null
+++ b/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataForm.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataModal.Style#Drawer.vue b/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataModal.Style#Drawer.vue
new file mode 100644
index 0000000..21f9bc2
--- /dev/null
+++ b/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataModal.vue b/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataModal.vue
new file mode 100644
index 0000000..67687b2
--- /dev/null
+++ b/ant-design-vue/src/views/modules/injectSpotData/modules/TtInjectSpotDataModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/ipqcmadata/TtIpqcMaDataList.vue b/ant-design-vue/src/views/modules/ipqcmadata/TtIpqcMaDataList.vue
new file mode 100644
index 0000000..52041fa
--- /dev/null
+++ b/ant-design-vue/src/views/modules/ipqcmadata/TtIpqcMaDataList.vue
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
查询
+
导出
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/ipqcmadata/TtIpqcMaData_menu_insert.sql b/ant-design-vue/src/views/modules/ipqcmadata/TtIpqcMaData_menu_insert.sql
new file mode 100644
index 0000000..ffa38ac
--- /dev/null
+++ b/ant-design-vue/src/views/modules/ipqcmadata/TtIpqcMaData_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/ipqcmadata文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509154700580', NULL, 'tt_ipqc_ma_data', '/ipqcmadata/ttIpqcMaDataList', 'ipqcmadata/TtIpqcMaDataList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154700581', '2023020509154700580', '添加tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710582', '2023020509154700580', '编辑tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710583', '2023020509154700580', '删除tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710584', '2023020509154700580', '批量删除tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710585', '2023020509154700580', '导出excel_tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710586', '2023020509154700580', '导入excel_tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataForm.vue b/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataForm.vue
new file mode 100644
index 0000000..40b8eb8
--- /dev/null
+++ b/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataForm.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataModal.Style#Drawer.vue b/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataModal.Style#Drawer.vue
new file mode 100644
index 0000000..de2ea61
--- /dev/null
+++ b/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataModal.vue b/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataModal.vue
new file mode 100644
index 0000000..6b52a79
--- /dev/null
+++ b/ant-design-vue/src/views/modules/ipqcmadata/modules/TtIpqcMaDataModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/controller/TtInjectSpotDataController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/controller/TtInjectSpotDataController.java
new file mode 100644
index 0000000..b8a3e07
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/controller/TtInjectSpotDataController.java
@@ -0,0 +1,184 @@
+package org.jeecg.modules.demo.injectspotdata.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.injectspotdata.entity.TtInjectSpotData;
+import org.jeecg.modules.demo.injectspotdata.service.ITtInjectSpotDataService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_inject_spot_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_inject_spot_data")
+@RestController
+@RequestMapping("/injectspotdata/ttInjectSpotData")
+@Slf4j
+public class TtInjectSpotDataController extends JeecgController {
+ @Autowired
+ private ITtInjectSpotDataService ttInjectSpotDataService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttInjectSpotData
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_inject_spot_data-分页列表查询")
+ @ApiOperation(value="tt_inject_spot_data-分页列表查询", notes="tt_inject_spot_data-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtInjectSpotData ttInjectSpotData,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttInjectSpotData, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ if(ttInjectSpotData.getStartDayName() != null){
+ queryWrapper.gt("day_name", ttInjectSpotData.getStartDayName());
+ }
+ if(ttInjectSpotData.getEndDayName() != null){
+ queryWrapper.lt("day_name", ttInjectSpotData.getEndDayName());
+ }
+ IPage pageList = ttInjectSpotDataService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttInjectSpotData
+ * @return
+ */
+ @AutoLog(value = "tt_inject_spot_data-添加")
+ @ApiOperation(value="tt_inject_spot_data-添加", notes="tt_inject_spot_data-添加")
+ //@RequiresPermissions("injectspotdata:tt_inject_spot_data:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtInjectSpotData ttInjectSpotData) {
+ ttInjectSpotDataService.save(ttInjectSpotData);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttInjectSpotData
+ * @return
+ */
+ @AutoLog(value = "tt_inject_spot_data-编辑")
+ @ApiOperation(value="tt_inject_spot_data-编辑", notes="tt_inject_spot_data-编辑")
+ //@RequiresPermissions("injectspotdata:tt_inject_spot_data:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtInjectSpotData ttInjectSpotData) {
+ ttInjectSpotDataService.updateById(ttInjectSpotData);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_inject_spot_data-通过id删除")
+ @ApiOperation(value="tt_inject_spot_data-通过id删除", notes="tt_inject_spot_data-通过id删除")
+ //@RequiresPermissions("injectspotdata:tt_inject_spot_data:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttInjectSpotDataService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_inject_spot_data-批量删除")
+ @ApiOperation(value="tt_inject_spot_data-批量删除", notes="tt_inject_spot_data-批量删除")
+ //@RequiresPermissions("injectspotdata:tt_inject_spot_data:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttInjectSpotDataService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_inject_spot_data-通过id查询")
+ @ApiOperation(value="tt_inject_spot_data-通过id查询", notes="tt_inject_spot_data-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtInjectSpotData ttInjectSpotData = ttInjectSpotDataService.getById(id);
+ if(ttInjectSpotData==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttInjectSpotData);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttInjectSpotData
+ */
+ //@RequiresPermissions("injectspotdata:tt_inject_spot_data:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtInjectSpotData ttInjectSpotData) {
+ return super.exportXls(request, ttInjectSpotData, TtInjectSpotData.class, "tt_inject_spot_data");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("injectspotdata:tt_inject_spot_data:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtInjectSpotData.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/entity/TtInjectSpotData.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/entity/TtInjectSpotData.java
new file mode 100644
index 0000000..3ceecfe
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/entity/TtInjectSpotData.java
@@ -0,0 +1,125 @@
+package org.jeecg.modules.demo.injectspotdata.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_inject_spot_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_inject_spot_data")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_inject_spot_data对象", description="tt_inject_spot_data")
+public class TtInjectSpotData implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**日期*/
+ @Excel(name = "日期", width = 15, format = "yyyy-MM-dd")
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "日期")
+ private Date dayName;
+ /**机台*/
+ @Excel(name = "机台", width = 15)
+ @ApiModelProperty(value = "机台")
+ private String equipNo;
+ /**定模设定值*/
+ @Excel(name = "定模设定值", width = 15)
+ @ApiModelProperty(value = "定模设定值")
+ private String fixedMoldCfgTemp;
+ /**定模实际值*/
+ @Excel(name = "定模实际值", width = 15)
+ @ApiModelProperty(value = "定模实际值")
+ private String fixedMoldActTemp;
+ /**动模设定值*/
+ @Excel(name = "动模设定值", width = 15)
+ @ApiModelProperty(value = "动模设定值")
+ private String dynamicMoldCfgTemp;
+ /**动模实际值*/
+ @Excel(name = "动模实际值", width = 15)
+ @ApiModelProperty(value = "动模实际值")
+ private String dynamicMoldActTemp;
+ /**液压油温度*/
+ @Excel(name = "液压油温度", width = 15)
+ @ApiModelProperty(value = "液压油温度")
+ private String hydraulicOilTemp;
+ /**干燥机滤芯*/
+ @Excel(name = "干燥机滤芯", width = 15)
+ @ApiModelProperty(value = "干燥机滤芯")
+ private String dryer;
+ /**机台润滑油量*/
+ @Excel(name = "机台润滑油量", width = 15)
+ @ApiModelProperty(value = "机台润滑油量")
+ private String lubricateOil;
+ /**清扫*/
+ @Excel(name = "清扫", width = 15)
+ @ApiModelProperty(value = "清扫")
+ private String clean;
+ /**是否漏油/水*/
+ @Excel(name = "是否漏油/水", width = 15)
+ @ApiModelProperty(value = "是否漏油/水")
+ private String noLeakageOil;
+ /**动作确认*/
+ @Excel(name = "动作确认", width = 15)
+ @ApiModelProperty(value = "动作确认")
+ private String actConfirm;
+ /**压力计*/
+ @Excel(name = "压力计", width = 15)
+ @ApiModelProperty(value = "压力计")
+ private String pressureGauge;
+ /**模具松紧*/
+ @Excel(name = "模具松紧", width = 15)
+ @ApiModelProperty(value = "模具松紧")
+ private String moldTightness;
+ /**材料干燥温度设定值*/
+ @Excel(name = "材料干燥温度设定值", width = 15)
+ @ApiModelProperty(value = "材料干燥温度设定值")
+ private String materialDryCfgTemp;
+ /**材料干燥温度实际值*/
+ @Excel(name = "材料干燥温度实际值", width = 15)
+ @ApiModelProperty(value = "材料干燥温度实际值")
+ private String materialDryActTemp;
+ /**担当*/
+ @Excel(name = "担当", width = 15)
+ @ApiModelProperty(value = "担当")
+ private String operator;
+ /**确认*/
+ @Excel(name = "确认", width = 15)
+ @ApiModelProperty(value = "确认")
+ private String confirmUser;
+ /**备注*/
+ @Excel(name = "备注", width = 15)
+ @ApiModelProperty(value = "备注")
+ private String remark;
+ @TableField(exist = false)
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "开始日期")
+ private Date startDayName;
+ @TableField(exist = false)
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "结束日期")
+ private Date endDayName;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/mapper/TtInjectSpotDataMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/mapper/TtInjectSpotDataMapper.java
new file mode 100644
index 0000000..0964263
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/mapper/TtInjectSpotDataMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.injectspotdata.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.injectspotdata.entity.TtInjectSpotData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_inject_spot_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtInjectSpotDataMapper extends BaseMapper {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/mapper/xml/TtInjectSpotDataMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/mapper/xml/TtInjectSpotDataMapper.xml
new file mode 100644
index 0000000..14412d4
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/mapper/xml/TtInjectSpotDataMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/service/ITtInjectSpotDataService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/service/ITtInjectSpotDataService.java
new file mode 100644
index 0000000..4a71ef8
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/service/ITtInjectSpotDataService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.demo.injectspotdata.service;
+
+import org.jeecg.modules.demo.injectspotdata.entity.TtInjectSpotData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: tt_inject_spot_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtInjectSpotDataService extends IService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/service/impl/TtInjectSpotDataServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/service/impl/TtInjectSpotDataServiceImpl.java
new file mode 100644
index 0000000..f31bcb0
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/service/impl/TtInjectSpotDataServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.demo.injectspotdata.service.impl;
+
+import org.jeecg.modules.demo.injectspotdata.entity.TtInjectSpotData;
+import org.jeecg.modules.demo.injectspotdata.mapper.TtInjectSpotDataMapper;
+import org.jeecg.modules.demo.injectspotdata.service.ITtInjectSpotDataService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: tt_inject_spot_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtInjectSpotDataServiceImpl extends ServiceImpl implements ITtInjectSpotDataService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/TtInjectSpotDataList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/TtInjectSpotDataList.vue
new file mode 100644
index 0000000..33fed86
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/TtInjectSpotDataList.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/TtInjectSpotData_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/TtInjectSpotData_menu_insert.sql
new file mode 100644
index 0000000..a4c25ea
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/TtInjectSpotData_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/injectspotdata文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020511096670090', NULL, 'tt_inject_spot_data', '/injectspotdata/ttInjectSpotDataList', 'injectspotdata/TtInjectSpotDataList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670091', '2023020511096670090', '添加tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670092', '2023020511096670090', '编辑tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670093', '2023020511096670090', '删除tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096670094', '2023020511096670090', '批量删除tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096680095', '2023020511096670090', '导出excel_tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020511096680096', '2023020511096670090', '导入excel_tt_inject_spot_data', NULL, NULL, 0, NULL, NULL, 2, 'injectspotdata:tt_inject_spot_data:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 11:09:09', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataForm.vue
new file mode 100644
index 0000000..662128a
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataForm.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataModal.Style#Drawer.vue
new file mode 100644
index 0000000..21f9bc2
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataModal.vue
new file mode 100644
index 0000000..67687b2
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/injectspotdata/vue/modules/TtInjectSpotDataModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/controller/TtIpqcDeDataController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/controller/TtIpqcDeDataController.java
new file mode 100644
index 0000000..c8b4432
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/controller/TtIpqcDeDataController.java
@@ -0,0 +1,178 @@
+package org.jeecg.modules.demo.ipqcdedata.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.ipqcdedata.entity.TtIpqcDeData;
+import org.jeecg.modules.demo.ipqcdedata.service.ITtIpqcDeDataService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_ipqc_de_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_ipqc_de_data")
+@RestController
+@RequestMapping("/ipqcdedata/ttIpqcDeData")
+@Slf4j
+public class TtIpqcDeDataController extends JeecgController {
+ @Autowired
+ private ITtIpqcDeDataService ttIpqcDeDataService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttIpqcDeData
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_ipqc_de_data-分页列表查询")
+ @ApiOperation(value="tt_ipqc_de_data-分页列表查询", notes="tt_ipqc_de_data-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtIpqcDeData ttIpqcDeData,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttIpqcDeData, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttIpqcDeDataService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttIpqcDeData
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_de_data-添加")
+ @ApiOperation(value="tt_ipqc_de_data-添加", notes="tt_ipqc_de_data-添加")
+ //@RequiresPermissions("ipqcdedata:tt_ipqc_de_data:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtIpqcDeData ttIpqcDeData) {
+ ttIpqcDeDataService.save(ttIpqcDeData);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttIpqcDeData
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_de_data-编辑")
+ @ApiOperation(value="tt_ipqc_de_data-编辑", notes="tt_ipqc_de_data-编辑")
+ //@RequiresPermissions("ipqcdedata:tt_ipqc_de_data:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtIpqcDeData ttIpqcDeData) {
+ ttIpqcDeDataService.updateById(ttIpqcDeData);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_de_data-通过id删除")
+ @ApiOperation(value="tt_ipqc_de_data-通过id删除", notes="tt_ipqc_de_data-通过id删除")
+ //@RequiresPermissions("ipqcdedata:tt_ipqc_de_data:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttIpqcDeDataService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_de_data-批量删除")
+ @ApiOperation(value="tt_ipqc_de_data-批量删除", notes="tt_ipqc_de_data-批量删除")
+ //@RequiresPermissions("ipqcdedata:tt_ipqc_de_data:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttIpqcDeDataService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_ipqc_de_data-通过id查询")
+ @ApiOperation(value="tt_ipqc_de_data-通过id查询", notes="tt_ipqc_de_data-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtIpqcDeData ttIpqcDeData = ttIpqcDeDataService.getById(id);
+ if(ttIpqcDeData==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttIpqcDeData);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttIpqcDeData
+ */
+ //@RequiresPermissions("ipqcdedata:tt_ipqc_de_data:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtIpqcDeData ttIpqcDeData) {
+ return super.exportXls(request, ttIpqcDeData, TtIpqcDeData.class, "tt_ipqc_de_data");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("ipqcdedata:tt_ipqc_de_data:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtIpqcDeData.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/entity/TtIpqcDeData.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/entity/TtIpqcDeData.java
new file mode 100644
index 0000000..cba3d4f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/entity/TtIpqcDeData.java
@@ -0,0 +1,99 @@
+package org.jeecg.modules.demo.ipqcdedata.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_ipqc_de_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_ipqc_de_data")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_ipqc_de_data对象", description="tt_ipqc_de_data")
+public class TtIpqcDeData implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**主表id,对应tt_ipqc_ma_data中的id列*/
+ @Excel(name = "主表id,对应tt_ipqc_ma_data中的id列", width = 15)
+ @ApiModelProperty(value = "主表id,对应tt_ipqc_ma_data中的id列")
+ private Integer mId;
+ /**机台*/
+ @Excel(name = "机台", width = 15)
+ @ApiModelProperty(value = "机台")
+ private String equipNo;
+ /**操作工*/
+ @Excel(name = "操作工", width = 15)
+ @ApiModelProperty(value = "操作工")
+ private String operator;
+ /**规格*/
+ @Excel(name = "规格", width = 15)
+ @ApiModelProperty(value = "规格")
+ private String spec;
+ /**胶料型号*/
+ @Excel(name = "胶料型号", width = 15)
+ @ApiModelProperty(value = "胶料型号")
+ private String glueType;
+ /**时间(单位:秒)*/
+ @Excel(name = "时间(单位:秒)", width = 15)
+ @ApiModelProperty(value = "时间(单位:秒)")
+ private String sulfTime;
+ /**最低温度(℃)*/
+ @Excel(name = "最低温度(℃)", width = 15)
+ @ApiModelProperty(value = "最低温度(℃)")
+ private String sulfTemp1;
+ /**最高温度(℃)*/
+ @Excel(name = "最高温度(℃)", width = 15)
+ @ApiModelProperty(value = "最高温度(℃)")
+ private String sulfTemp2;
+ /**压力(Mpa)*/
+ @Excel(name = "压力(Mpa)", width = 15)
+ @ApiModelProperty(value = "压力(Mpa)")
+ private String sulfPressure;
+ /**厚度(mm)*/
+ @Excel(name = "厚度(mm)", width = 15)
+ @ApiModelProperty(value = "厚度(mm)")
+ private String height;
+ /**外径(mm)*/
+ @Excel(name = "外径(mm)", width = 15)
+ @ApiModelProperty(value = "外径(mm)")
+ private String externalSize;
+ /**孔径(mm)*/
+ @Excel(name = "孔径(mm)", width = 15)
+ @ApiModelProperty(value = "孔径(mm)")
+ private String apertureSize;
+ /**硬度(A)*/
+ @Excel(name = "硬度(A)", width = 15)
+ @ApiModelProperty(value = "硬度(A)")
+ private String hardness;
+ /**外观检查结果*/
+ @Excel(name = "外观检查结果", width = 15)
+ @ApiModelProperty(value = "外观检查结果")
+ private String desc1;
+ /**质检确认结果*/
+ @Excel(name = "质检确认结果", width = 15)
+ @ApiModelProperty(value = "质检确认结果")
+ private String desc2;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/mapper/TtIpqcDeDataMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/mapper/TtIpqcDeDataMapper.java
new file mode 100644
index 0000000..aa64663
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/mapper/TtIpqcDeDataMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.ipqcdedata.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.ipqcdedata.entity.TtIpqcDeData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_ipqc_de_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtIpqcDeDataMapper extends BaseMapper {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/mapper/xml/TtIpqcDeDataMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/mapper/xml/TtIpqcDeDataMapper.xml
new file mode 100644
index 0000000..4b18605
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/mapper/xml/TtIpqcDeDataMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/service/ITtIpqcDeDataService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/service/ITtIpqcDeDataService.java
new file mode 100644
index 0000000..f21e1d4
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/service/ITtIpqcDeDataService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.demo.ipqcdedata.service;
+
+import org.jeecg.modules.demo.ipqcdedata.entity.TtIpqcDeData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: tt_ipqc_de_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtIpqcDeDataService extends IService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/service/impl/TtIpqcDeDataServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/service/impl/TtIpqcDeDataServiceImpl.java
new file mode 100644
index 0000000..fb1056e
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/service/impl/TtIpqcDeDataServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.demo.ipqcdedata.service.impl;
+
+import org.jeecg.modules.demo.ipqcdedata.entity.TtIpqcDeData;
+import org.jeecg.modules.demo.ipqcdedata.mapper.TtIpqcDeDataMapper;
+import org.jeecg.modules.demo.ipqcdedata.service.ITtIpqcDeDataService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: tt_ipqc_de_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtIpqcDeDataServiceImpl extends ServiceImpl implements ITtIpqcDeDataService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/TtIpqcDeDataList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/TtIpqcDeDataList.vue
new file mode 100644
index 0000000..c15e9fa
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/TtIpqcDeDataList.vue
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/TtIpqcDeData_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/TtIpqcDeData_menu_insert.sql
new file mode 100644
index 0000000..86bbb38
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/TtIpqcDeData_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/ipqcdedata文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509156360410', NULL, 'tt_ipqc_de_data', '/ipqcdedata/ttIpqcDeDataList', 'ipqcdedata/TtIpqcDeDataList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509156360411', '2023020509156360410', '添加tt_ipqc_de_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcdedata:tt_ipqc_de_data:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509156360412', '2023020509156360410', '编辑tt_ipqc_de_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcdedata:tt_ipqc_de_data:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509156360413', '2023020509156360410', '删除tt_ipqc_de_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcdedata:tt_ipqc_de_data:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509156360414', '2023020509156360410', '批量删除tt_ipqc_de_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcdedata:tt_ipqc_de_data:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509156360415', '2023020509156360410', '导出excel_tt_ipqc_de_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcdedata:tt_ipqc_de_data:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509156360416', '2023020509156360410', '导入excel_tt_ipqc_de_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcdedata:tt_ipqc_de_data:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:41', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataForm.vue
new file mode 100644
index 0000000..5f7b716
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataForm.vue
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataModal.Style#Drawer.vue
new file mode 100644
index 0000000..2ef3c69
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataModal.vue
new file mode 100644
index 0000000..fe4823a
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcdedata/vue/modules/TtIpqcDeDataModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/controller/TtIpqcMaDataController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/controller/TtIpqcMaDataController.java
new file mode 100644
index 0000000..252f8dd
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/controller/TtIpqcMaDataController.java
@@ -0,0 +1,199 @@
+package org.jeecg.modules.demo.ipqcmadata.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.ipqcmadata.entity.TtIpqcMaData;
+import org.jeecg.modules.demo.ipqcmadata.service.ITtIpqcMaDataService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_ipqc_ma_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_ipqc_ma_data")
+@RestController
+@RequestMapping("/ipqcmadata/ttIpqcMaData")
+@Slf4j
+public class TtIpqcMaDataController extends JeecgController {
+ @Autowired
+ private ITtIpqcMaDataService ttIpqcMaDataService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttIpqcMaData
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_ipqc_ma_data-分页列表查询")
+ @ApiOperation(value="tt_ipqc_ma_data-分页列表查询", notes="tt_ipqc_ma_data-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtIpqcMaData ttIpqcMaData,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttIpqcMaData, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttIpqcMaDataService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttIpqcMaData
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_ipqc_ma_data-分页列表查询")
+ @ApiOperation(value="tt_ipqc_ma_data-分页列表查询", notes="tt_ipqc_ma_data-分页列表查询")
+ @GetMapping(value = "/queryPageList")
+ public Result>> queryPageList2(TtIpqcMaData ttIpqcMaData,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ Page page = new Page(pageNo, pageSize);
+ IPage> pageList = ttIpqcMaDataService.queryPage(page, ttIpqcMaData);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttIpqcMaData
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_ma_data-添加")
+ @ApiOperation(value="tt_ipqc_ma_data-添加", notes="tt_ipqc_ma_data-添加")
+ //@RequiresPermissions("ipqcmadata:tt_ipqc_ma_data:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtIpqcMaData ttIpqcMaData) {
+ ttIpqcMaDataService.save(ttIpqcMaData);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttIpqcMaData
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_ma_data-编辑")
+ @ApiOperation(value="tt_ipqc_ma_data-编辑", notes="tt_ipqc_ma_data-编辑")
+ //@RequiresPermissions("ipqcmadata:tt_ipqc_ma_data:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtIpqcMaData ttIpqcMaData) {
+ ttIpqcMaDataService.updateById(ttIpqcMaData);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_ma_data-通过id删除")
+ @ApiOperation(value="tt_ipqc_ma_data-通过id删除", notes="tt_ipqc_ma_data-通过id删除")
+ //@RequiresPermissions("ipqcmadata:tt_ipqc_ma_data:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttIpqcMaDataService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_ipqc_ma_data-批量删除")
+ @ApiOperation(value="tt_ipqc_ma_data-批量删除", notes="tt_ipqc_ma_data-批量删除")
+ //@RequiresPermissions("ipqcmadata:tt_ipqc_ma_data:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttIpqcMaDataService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_ipqc_ma_data-通过id查询")
+ @ApiOperation(value="tt_ipqc_ma_data-通过id查询", notes="tt_ipqc_ma_data-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtIpqcMaData ttIpqcMaData = ttIpqcMaDataService.getById(id);
+ if(ttIpqcMaData==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttIpqcMaData);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttIpqcMaData
+ */
+ //@RequiresPermissions("ipqcmadata:tt_ipqc_ma_data:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtIpqcMaData ttIpqcMaData) {
+ return super.exportXls(request, ttIpqcMaData, TtIpqcMaData.class, "tt_ipqc_ma_data");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("ipqcmadata:tt_ipqc_ma_data:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtIpqcMaData.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/entity/TtIpqcMaData.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/entity/TtIpqcMaData.java
new file mode 100644
index 0000000..26cba6e
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/entity/TtIpqcMaData.java
@@ -0,0 +1,77 @@
+package org.jeecg.modules.demo.ipqcmadata.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_ipqc_ma_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_ipqc_ma_data")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_ipqc_ma_data对象", description="tt_ipqc_ma_data")
+public class TtIpqcMaData implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**日期名称*/
+ @Excel(name = "日期名称", width = 15, format = "yyyy-MM-dd")
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "日期名称")
+ private Date dayName;
+ /**班次名称*/
+ @Excel(name = "班次名称", width = 15)
+ @ApiModelProperty(value = "班次名称")
+ private String shiftName;
+ /**参考标准*/
+ @Excel(name = "参考标准", width = 15)
+ @ApiModelProperty(value = "参考标准")
+ private String ipqcStandard;
+ /**ipqc用户*/
+ @Excel(name = "ipqc用户", width = 15)
+ @ApiModelProperty(value = "ipqc用户")
+ private String ipqcUser;
+ /**硫化主管*/
+ @Excel(name = "硫化主管", width = 15)
+ @ApiModelProperty(value = "硫化主管")
+ private String sulfUser;
+ /**品质主管*/
+ @Excel(name = "品质主管", width = 15)
+ @ApiModelProperty(value = "品质主管")
+ private String qaUser;
+
+ @TableField(exist = false)
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "开始日期")
+ private Date startDayName;
+ @TableField(exist = false)
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "结束日期")
+ private Date endDayName;
+ @TableField(exist = false)
+ @ApiModelProperty(value = "机台")
+ private String equipNo;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/mapper/TtIpqcMaDataMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/mapper/TtIpqcMaDataMapper.java
new file mode 100644
index 0000000..149e530
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/mapper/TtIpqcMaDataMapper.java
@@ -0,0 +1,21 @@
+package org.jeecg.modules.demo.ipqcmadata.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.ipqcmadata.entity.TtIpqcMaData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_ipqc_ma_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtIpqcMaDataMapper extends BaseMapper {
+
+ IPage> queryPage(Page page, TtIpqcMaData ttIpqcMaData);
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/mapper/xml/TtIpqcMaDataMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/mapper/xml/TtIpqcMaDataMapper.xml
new file mode 100644
index 0000000..01df043
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/mapper/xml/TtIpqcMaDataMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/service/ITtIpqcMaDataService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/service/ITtIpqcMaDataService.java
new file mode 100644
index 0000000..c4bdecd
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/service/ITtIpqcMaDataService.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.demo.ipqcmadata.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.demo.ipqcmadata.entity.TtIpqcMaData;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: tt_ipqc_ma_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtIpqcMaDataService extends IService {
+
+ IPage> queryPage(Page page, TtIpqcMaData ttIpqcMaData);
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/service/impl/TtIpqcMaDataServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/service/impl/TtIpqcMaDataServiceImpl.java
new file mode 100644
index 0000000..e8a1a77
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/service/impl/TtIpqcMaDataServiceImpl.java
@@ -0,0 +1,31 @@
+package org.jeecg.modules.demo.ipqcmadata.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.demo.ipqcmadata.entity.TtIpqcMaData;
+import org.jeecg.modules.demo.ipqcmadata.mapper.TtIpqcMaDataMapper;
+import org.jeecg.modules.demo.ipqcmadata.service.ITtIpqcMaDataService;
+import org.jeecg.modules.demo.kanbanpsrate.mapper.TtKanbanPsRateMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: tt_ipqc_ma_data
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtIpqcMaDataServiceImpl extends ServiceImpl implements ITtIpqcMaDataService {
+ @Autowired
+ private TtIpqcMaDataMapper ttIpqcMaDataMapper;
+ @Override
+ public IPage> queryPage(Page page, TtIpqcMaData ttIpqcMaData) {
+ return ttIpqcMaDataMapper.queryPage(page, ttIpqcMaData);
+ }
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/TtIpqcMaDataList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/TtIpqcMaDataList.vue
new file mode 100644
index 0000000..a7dfb95
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/TtIpqcMaDataList.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/TtIpqcMaData_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/TtIpqcMaData_menu_insert.sql
new file mode 100644
index 0000000..ffa38ac
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/TtIpqcMaData_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/ipqcmadata文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509154700580', NULL, 'tt_ipqc_ma_data', '/ipqcmadata/ttIpqcMaDataList', 'ipqcmadata/TtIpqcMaDataList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154700581', '2023020509154700580', '添加tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710582', '2023020509154700580', '编辑tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710583', '2023020509154700580', '删除tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710584', '2023020509154700580', '批量删除tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710585', '2023020509154700580', '导出excel_tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509154710586', '2023020509154700580', '导入excel_tt_ipqc_ma_data', NULL, NULL, 0, NULL, NULL, 2, 'ipqcmadata:tt_ipqc_ma_data:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:15:58', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataForm.vue
new file mode 100644
index 0000000..40b8eb8
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataForm.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataModal.Style#Drawer.vue
new file mode 100644
index 0000000..de2ea61
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataModal.vue
new file mode 100644
index 0000000..6b52a79
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/ipqcmadata/vue/modules/TtIpqcMaDataModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/controller/TtKanbanEquipRateController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/controller/TtKanbanEquipRateController.java
new file mode 100644
index 0000000..17baacf
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/controller/TtKanbanEquipRateController.java
@@ -0,0 +1,195 @@
+package org.jeecg.modules.demo.kanbanequiprate.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.kanbanequiprate.entity.TtKanbanEquipRate;
+import org.jeecg.modules.demo.kanbanequiprate.service.ITtKanbanEquipRateService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.modules.demo.kanbanpassrate.entity.TtKanbanPassRate;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_kanban_equip_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_kanban_equip_rate")
+@RestController
+@RequestMapping("/kanbanequiprate/ttKanbanEquipRate")
+@Slf4j
+public class TtKanbanEquipRateController extends JeecgController {
+ @Autowired
+ private ITtKanbanEquipRateService ttKanbanEquipRateService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttKanbanEquipRate
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_equip_rate-分页列表查询")
+ @ApiOperation(value="tt_kanban_equip_rate-分页列表查询", notes="tt_kanban_equip_rate-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtKanbanEquipRate ttKanbanEquipRate,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttKanbanEquipRate, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttKanbanEquipRateService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 看板6列表查询
+ *
+ * @param ttKanbanEquipRate
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_equip_rate-分页列表查询")
+ @ApiOperation(value="tt_kanban_equip_rate-看板6列表查询", notes="tt_kanban_equip_rate-看板6列表查询")
+ @GetMapping(value = "/queryList")
+ public Result> queryList(TtKanbanEquipRate ttKanbanEquipRate) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("company_id", 1);
+ List kanbanEquipRateList = ttKanbanEquipRateService.list(queryWrapper);
+ return Result.OK(kanbanEquipRateList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttKanbanEquipRate
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_equip_rate-添加")
+ @ApiOperation(value="tt_kanban_equip_rate-添加", notes="tt_kanban_equip_rate-添加")
+ //@RequiresPermissions("kanbanequiprate:tt_kanban_equip_rate:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtKanbanEquipRate ttKanbanEquipRate) {
+ ttKanbanEquipRateService.save(ttKanbanEquipRate);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttKanbanEquipRate
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_equip_rate-编辑")
+ @ApiOperation(value="tt_kanban_equip_rate-编辑", notes="tt_kanban_equip_rate-编辑")
+ //@RequiresPermissions("kanbanequiprate:tt_kanban_equip_rate:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtKanbanEquipRate ttKanbanEquipRate) {
+ ttKanbanEquipRateService.updateById(ttKanbanEquipRate);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_equip_rate-通过id删除")
+ @ApiOperation(value="tt_kanban_equip_rate-通过id删除", notes="tt_kanban_equip_rate-通过id删除")
+ //@RequiresPermissions("kanbanequiprate:tt_kanban_equip_rate:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttKanbanEquipRateService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_equip_rate-批量删除")
+ @ApiOperation(value="tt_kanban_equip_rate-批量删除", notes="tt_kanban_equip_rate-批量删除")
+ //@RequiresPermissions("kanbanequiprate:tt_kanban_equip_rate:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttKanbanEquipRateService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_equip_rate-通过id查询")
+ @ApiOperation(value="tt_kanban_equip_rate-通过id查询", notes="tt_kanban_equip_rate-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtKanbanEquipRate ttKanbanEquipRate = ttKanbanEquipRateService.getById(id);
+ if(ttKanbanEquipRate==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttKanbanEquipRate);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttKanbanEquipRate
+ */
+ //@RequiresPermissions("kanbanequiprate:tt_kanban_equip_rate:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtKanbanEquipRate ttKanbanEquipRate) {
+ return super.exportXls(request, ttKanbanEquipRate, TtKanbanEquipRate.class, "tt_kanban_equip_rate");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("kanbanequiprate:tt_kanban_equip_rate:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtKanbanEquipRate.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/entity/TtKanbanEquipRate.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/entity/TtKanbanEquipRate.java
new file mode 100644
index 0000000..72e5d35
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/entity/TtKanbanEquipRate.java
@@ -0,0 +1,55 @@
+package org.jeecg.modules.demo.kanbanequiprate.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_kanban_equip_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_kanban_equip_rate")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_kanban_equip_rate对象", description="tt_kanban_equip_rate")
+public class TtKanbanEquipRate implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**月份名称*/
+ @Excel(name = "月份名称", width = 15)
+ @ApiModelProperty(value = "月份名称")
+ private String monthName;
+ /**设备名称*/
+ @Excel(name = "设备名称", width = 15)
+ @ApiModelProperty(value = "设备名称")
+ private String equipName;
+ /**设备利用率*/
+ @Excel(name = "设备利用率", width = 15)
+ @ApiModelProperty(value = "设备利用率")
+ private BigDecimal utiliRate;
+ /**公司id, 1表示电气元器件,2表示轨道扣件*/
+ @Excel(name = "公司id, 1表示电气元器件,2表示轨道扣件", width = 15)
+ @ApiModelProperty(value = "公司id, 1表示电气元器件,2表示轨道扣件")
+ private Integer companyId;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/mapper/TtKanbanEquipRateMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/mapper/TtKanbanEquipRateMapper.java
new file mode 100644
index 0000000..9931234
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/mapper/TtKanbanEquipRateMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.kanbanequiprate.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.kanbanequiprate.entity.TtKanbanEquipRate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_kanban_equip_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtKanbanEquipRateMapper extends BaseMapper {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/mapper/xml/TtKanbanEquipRateMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/mapper/xml/TtKanbanEquipRateMapper.xml
new file mode 100644
index 0000000..29759e4
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/mapper/xml/TtKanbanEquipRateMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/service/ITtKanbanEquipRateService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/service/ITtKanbanEquipRateService.java
new file mode 100644
index 0000000..894a7e7
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/service/ITtKanbanEquipRateService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.demo.kanbanequiprate.service;
+
+import org.jeecg.modules.demo.kanbanequiprate.entity.TtKanbanEquipRate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: tt_kanban_equip_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtKanbanEquipRateService extends IService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/service/impl/TtKanbanEquipRateServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/service/impl/TtKanbanEquipRateServiceImpl.java
new file mode 100644
index 0000000..bdb2499
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/service/impl/TtKanbanEquipRateServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.demo.kanbanequiprate.service.impl;
+
+import org.jeecg.modules.demo.kanbanequiprate.entity.TtKanbanEquipRate;
+import org.jeecg.modules.demo.kanbanequiprate.mapper.TtKanbanEquipRateMapper;
+import org.jeecg.modules.demo.kanbanequiprate.service.ITtKanbanEquipRateService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: tt_kanban_equip_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtKanbanEquipRateServiceImpl extends ServiceImpl implements ITtKanbanEquipRateService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/TtKanbanEquipRateList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/TtKanbanEquipRateList.vue
new file mode 100644
index 0000000..22940e7
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/TtKanbanEquipRateList.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/TtKanbanEquipRate_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/TtKanbanEquipRate_menu_insert.sql
new file mode 100644
index 0000000..8581cf1
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/TtKanbanEquipRate_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/kanbanequiprate文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509133980400', NULL, 'tt_kanban_equip_rate', '/kanbanequiprate/ttKanbanEquipRateList', 'kanbanequiprate/TtKanbanEquipRateList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509133980401', '2023020509133980400', '添加tt_kanban_equip_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanequiprate:tt_kanban_equip_rate:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509133980402', '2023020509133980400', '编辑tt_kanban_equip_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanequiprate:tt_kanban_equip_rate:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509133980403', '2023020509133980400', '删除tt_kanban_equip_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanequiprate:tt_kanban_equip_rate:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509133980404', '2023020509133980400', '批量删除tt_kanban_equip_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanequiprate:tt_kanban_equip_rate:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509133980405', '2023020509133980400', '导出excel_tt_kanban_equip_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanequiprate:tt_kanban_equip_rate:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509133980406', '2023020509133980400', '导入excel_tt_kanban_equip_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanequiprate:tt_kanban_equip_rate:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:40', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateForm.vue
new file mode 100644
index 0000000..659b334
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateForm.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateModal.Style#Drawer.vue
new file mode 100644
index 0000000..1c7f11e
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateModal.vue
new file mode 100644
index 0000000..7325dc1
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanequiprate/vue/modules/TtKanbanEquipRateModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/controller/TtKanbanInWhController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/controller/TtKanbanInWhController.java
new file mode 100644
index 0000000..7fbff77
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/controller/TtKanbanInWhController.java
@@ -0,0 +1,194 @@
+package org.jeecg.modules.demo.kanbaninwh.controller;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.kanbaninwh.entity.TtKanbanInWh;
+import org.jeecg.modules.demo.kanbaninwh.service.ITtKanbanInWhService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_kanban_in_wh
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_kanban_in_wh")
+@RestController
+@RequestMapping("/kanbaninwh/ttKanbanInWh")
+@Slf4j
+public class TtKanbanInWhController extends JeecgController {
+ @Autowired
+ private ITtKanbanInWhService ttKanbanInWhService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttKanbanInWh
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_in_wh-分页列表查询")
+ @ApiOperation(value="tt_kanban_in_wh-分页列表查询", notes="tt_kanban_in_wh-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtKanbanInWh ttKanbanInWh,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttKanbanInWh, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttKanbanInWhService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 看板2列表查询
+ *
+ * @param ttKanbanInWh
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_in_wh-分页列表查询")
+ @ApiOperation(value="tt_kanban_in_wh-看板2列表查询", notes="tt_kanban_in_wh-看板2列表查询")
+ @GetMapping(value = "/queryList")
+ public Result> queryList(TtKanbanInWh ttKanbanInWh) {
+ List kanbanInWhList = ttKanbanInWhService.kanbanInWhList();
+ return Result.OK(kanbanInWhList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttKanbanInWh
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_in_wh-添加")
+ @ApiOperation(value="tt_kanban_in_wh-添加", notes="tt_kanban_in_wh-添加")
+ //@RequiresPermissions("kanbaninwh:tt_kanban_in_wh:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtKanbanInWh ttKanbanInWh) {
+ ttKanbanInWhService.save(ttKanbanInWh);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttKanbanInWh
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_in_wh-编辑")
+ @ApiOperation(value="tt_kanban_in_wh-编辑", notes="tt_kanban_in_wh-编辑")
+ //@RequiresPermissions("kanbaninwh:tt_kanban_in_wh:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtKanbanInWh ttKanbanInWh) {
+ ttKanbanInWhService.updateById(ttKanbanInWh);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_in_wh-通过id删除")
+ @ApiOperation(value="tt_kanban_in_wh-通过id删除", notes="tt_kanban_in_wh-通过id删除")
+ //@RequiresPermissions("kanbaninwh:tt_kanban_in_wh:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttKanbanInWhService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_in_wh-批量删除")
+ @ApiOperation(value="tt_kanban_in_wh-批量删除", notes="tt_kanban_in_wh-批量删除")
+ //@RequiresPermissions("kanbaninwh:tt_kanban_in_wh:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttKanbanInWhService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_in_wh-通过id查询")
+ @ApiOperation(value="tt_kanban_in_wh-通过id查询", notes="tt_kanban_in_wh-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtKanbanInWh ttKanbanInWh = ttKanbanInWhService.getById(id);
+ if(ttKanbanInWh==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttKanbanInWh);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttKanbanInWh
+ */
+ //@RequiresPermissions("kanbaninwh:tt_kanban_in_wh:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtKanbanInWh ttKanbanInWh) {
+ return super.exportXls(request, ttKanbanInWh, TtKanbanInWh.class, "tt_kanban_in_wh");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("kanbaninwh:tt_kanban_in_wh:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtKanbanInWh.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/entity/TtKanbanInWh.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/entity/TtKanbanInWh.java
new file mode 100644
index 0000000..0f0de2e
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/entity/TtKanbanInWh.java
@@ -0,0 +1,61 @@
+package org.jeecg.modules.demo.kanbaninwh.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_kanban_in_wh
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_kanban_in_wh")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_kanban_in_wh对象", description="tt_kanban_in_wh")
+public class TtKanbanInWh implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**日期*/
+ @Excel(name = "日期", width = 15, format = "yyyy-MM-dd")
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "日期")
+ private Date dayName;
+ /**日期名称*/
+ @Excel(name = "日期名称", width = 15)
+ @ApiModelProperty(value = "日期名称")
+ private String dayDesc;
+ /**产品类型id,1表示底座,2表示胶塞*/
+ @Excel(name = "产品类型id,1表示底座,2表示胶塞", width = 15)
+ @ApiModelProperty(value = "产品类型id,1表示底座,2表示胶塞")
+ private Integer typeId;
+ /**入库数量*/
+ @Excel(name = "入库数量", width = 15)
+ @ApiModelProperty(value = "入库数量")
+ private BigDecimal inQty;
+ /**公司id, 1表示电气元器件,2表示轨道扣件*/
+ @Excel(name = "公司id, 1表示电气元器件,2表示轨道扣件", width = 15)
+ @ApiModelProperty(value = "公司id, 1表示电气元器件,2表示轨道扣件")
+ private Integer companyId;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/mapper/TtKanbanInWhMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/mapper/TtKanbanInWhMapper.java
new file mode 100644
index 0000000..a3e1959
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/mapper/TtKanbanInWhMapper.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.demo.kanbaninwh.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.kanbaninwh.entity.TtKanbanInWh;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_kanban_in_wh
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtKanbanInWhMapper extends BaseMapper {
+
+ List kanbanInWhList();
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/mapper/xml/TtKanbanInWhMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/mapper/xml/TtKanbanInWhMapper.xml
new file mode 100644
index 0000000..0716f3c
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/mapper/xml/TtKanbanInWhMapper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/service/ITtKanbanInWhService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/service/ITtKanbanInWhService.java
new file mode 100644
index 0000000..b864566
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/service/ITtKanbanInWhService.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.kanbaninwh.service;
+
+import org.jeecg.modules.demo.kanbaninwh.entity.TtKanbanInWh;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: tt_kanban_in_wh
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtKanbanInWhService extends IService {
+
+ List kanbanInWhList();
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/service/impl/TtKanbanInWhServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/service/impl/TtKanbanInWhServiceImpl.java
new file mode 100644
index 0000000..ea97fb3
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/service/impl/TtKanbanInWhServiceImpl.java
@@ -0,0 +1,28 @@
+package org.jeecg.modules.demo.kanbaninwh.service.impl;
+
+import org.jeecg.modules.demo.kanbaninwh.entity.TtKanbanInWh;
+import org.jeecg.modules.demo.kanbaninwh.mapper.TtKanbanInWhMapper;
+import org.jeecg.modules.demo.kanbaninwh.service.ITtKanbanInWhService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: tt_kanban_in_wh
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtKanbanInWhServiceImpl extends ServiceImpl implements ITtKanbanInWhService {
+ @Autowired
+ private TtKanbanInWhMapper TtKanbanInWhMapper;
+
+ @Override
+ public List kanbanInWhList() {
+ return TtKanbanInWhMapper.kanbanInWhList();
+ }
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/TtKanbanInWhList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/TtKanbanInWhList.vue
new file mode 100644
index 0000000..42ec72d
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/TtKanbanInWhList.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/TtKanbanInWh_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/TtKanbanInWh_menu_insert.sql
new file mode 100644
index 0000000..ad65052
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/TtKanbanInWh_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/kanbaninwh文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509134860030', NULL, 'tt_kanban_in_wh', '/kanbaninwh/ttKanbanInWhList', 'kanbaninwh/TtKanbanInWhList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509134860031', '2023020509134860030', '添加tt_kanban_in_wh', NULL, NULL, 0, NULL, NULL, 2, 'kanbaninwh:tt_kanban_in_wh:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509134860032', '2023020509134860030', '编辑tt_kanban_in_wh', NULL, NULL, 0, NULL, NULL, 2, 'kanbaninwh:tt_kanban_in_wh:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509134860033', '2023020509134860030', '删除tt_kanban_in_wh', NULL, NULL, 0, NULL, NULL, 2, 'kanbaninwh:tt_kanban_in_wh:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509134870034', '2023020509134860030', '批量删除tt_kanban_in_wh', NULL, NULL, 0, NULL, NULL, 2, 'kanbaninwh:tt_kanban_in_wh:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509134870035', '2023020509134860030', '导出excel_tt_kanban_in_wh', NULL, NULL, 0, NULL, NULL, 2, 'kanbaninwh:tt_kanban_in_wh:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509134870036', '2023020509134860030', '导入excel_tt_kanban_in_wh', NULL, NULL, 0, NULL, NULL, 2, 'kanbaninwh:tt_kanban_in_wh:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:03', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhForm.vue
new file mode 100644
index 0000000..e55d905
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhForm.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhModal.Style#Drawer.vue
new file mode 100644
index 0000000..0126c87
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhModal.vue
new file mode 100644
index 0000000..6d15308
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbaninwh/vue/modules/TtKanbanInWhModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/controller/TtKanbanPassRateController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/controller/TtKanbanPassRateController.java
new file mode 100644
index 0000000..78616d6
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/controller/TtKanbanPassRateController.java
@@ -0,0 +1,196 @@
+package org.jeecg.modules.demo.kanbanpassrate.controller;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.kanbanpassrate.entity.TtKanbanPassRate;
+import org.jeecg.modules.demo.kanbanpassrate.service.ITtKanbanPassRateService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_kanban_pass_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_kanban_pass_rate")
+@RestController
+@RequestMapping("/kanbanpassrate/ttKanbanPassRate")
+@Slf4j
+public class TtKanbanPassRateController extends JeecgController {
+ @Autowired
+ private ITtKanbanPassRateService ttKanbanPassRateService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttKanbanPassRate
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_pass_rate-分页列表查询")
+ @ApiOperation(value="tt_kanban_pass_rate-分页列表查询", notes="tt_kanban_pass_rate-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtKanbanPassRate ttKanbanPassRate,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttKanbanPassRate, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttKanbanPassRateService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 看板3列表查询
+ *
+ * @param ttKanbanPassRate
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_pass_rate-分页列表查询")
+ @ApiOperation(value="tt_kanban_pass_rate-看板3列表查询", notes="tt_kanban_plan-看板3列表查询")
+ @GetMapping(value = "/queryList")
+ public Result> queryList(TtKanbanPassRate ttKanbanPassRate) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("company_id", 1);
+ List kanbanPassRateList = ttKanbanPassRateService.list(queryWrapper);
+ return Result.OK(kanbanPassRateList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttKanbanPassRate
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_pass_rate-添加")
+ @ApiOperation(value="tt_kanban_pass_rate-添加", notes="tt_kanban_pass_rate-添加")
+ //@RequiresPermissions("kanbanpassrate:tt_kanban_pass_rate:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtKanbanPassRate ttKanbanPassRate) {
+ ttKanbanPassRateService.save(ttKanbanPassRate);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttKanbanPassRate
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_pass_rate-编辑")
+ @ApiOperation(value="tt_kanban_pass_rate-编辑", notes="tt_kanban_pass_rate-编辑")
+ //@RequiresPermissions("kanbanpassrate:tt_kanban_pass_rate:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtKanbanPassRate ttKanbanPassRate) {
+ ttKanbanPassRateService.updateById(ttKanbanPassRate);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_pass_rate-通过id删除")
+ @ApiOperation(value="tt_kanban_pass_rate-通过id删除", notes="tt_kanban_pass_rate-通过id删除")
+ //@RequiresPermissions("kanbanpassrate:tt_kanban_pass_rate:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttKanbanPassRateService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_pass_rate-批量删除")
+ @ApiOperation(value="tt_kanban_pass_rate-批量删除", notes="tt_kanban_pass_rate-批量删除")
+ //@RequiresPermissions("kanbanpassrate:tt_kanban_pass_rate:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttKanbanPassRateService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_pass_rate-通过id查询")
+ @ApiOperation(value="tt_kanban_pass_rate-通过id查询", notes="tt_kanban_pass_rate-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtKanbanPassRate ttKanbanPassRate = ttKanbanPassRateService.getById(id);
+ if(ttKanbanPassRate==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttKanbanPassRate);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttKanbanPassRate
+ */
+ //@RequiresPermissions("kanbanpassrate:tt_kanban_pass_rate:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtKanbanPassRate ttKanbanPassRate) {
+ return super.exportXls(request, ttKanbanPassRate, TtKanbanPassRate.class, "tt_kanban_pass_rate");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("kanbanpassrate:tt_kanban_pass_rate:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtKanbanPassRate.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/entity/TtKanbanPassRate.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/entity/TtKanbanPassRate.java
new file mode 100644
index 0000000..108723c
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/entity/TtKanbanPassRate.java
@@ -0,0 +1,51 @@
+package org.jeecg.modules.demo.kanbanpassrate.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_kanban_pass_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_kanban_pass_rate")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_kanban_pass_rate对象", description="tt_kanban_pass_rate")
+public class TtKanbanPassRate implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**月份名称*/
+ @Excel(name = "月份名称", width = 15)
+ @ApiModelProperty(value = "月份名称")
+ private String monthName;
+ /**产品合格率*/
+ @Excel(name = "产品合格率", width = 15)
+ @ApiModelProperty(value = "产品合格率")
+ private BigDecimal passRate;
+ /**公司id, 1表示老厂,2表示新厂*/
+ @Excel(name = "公司id, 1表示老厂,2表示新厂", width = 15)
+ @ApiModelProperty(value = "公司id, 1表示老厂,2表示新厂")
+ private Integer companyId;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/mapper/TtKanbanPassRateMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/mapper/TtKanbanPassRateMapper.java
new file mode 100644
index 0000000..a55965d
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/mapper/TtKanbanPassRateMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.kanbanpassrate.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.kanbanpassrate.entity.TtKanbanPassRate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_kanban_pass_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtKanbanPassRateMapper extends BaseMapper {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/mapper/xml/TtKanbanPassRateMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/mapper/xml/TtKanbanPassRateMapper.xml
new file mode 100644
index 0000000..fb361cc
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/mapper/xml/TtKanbanPassRateMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/service/ITtKanbanPassRateService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/service/ITtKanbanPassRateService.java
new file mode 100644
index 0000000..4fa366f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/service/ITtKanbanPassRateService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.demo.kanbanpassrate.service;
+
+import org.jeecg.modules.demo.kanbanpassrate.entity.TtKanbanPassRate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: tt_kanban_pass_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtKanbanPassRateService extends IService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/service/impl/TtKanbanPassRateServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/service/impl/TtKanbanPassRateServiceImpl.java
new file mode 100644
index 0000000..f5a6d35
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/service/impl/TtKanbanPassRateServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.demo.kanbanpassrate.service.impl;
+
+import org.jeecg.modules.demo.kanbanpassrate.entity.TtKanbanPassRate;
+import org.jeecg.modules.demo.kanbanpassrate.mapper.TtKanbanPassRateMapper;
+import org.jeecg.modules.demo.kanbanpassrate.service.ITtKanbanPassRateService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: tt_kanban_pass_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtKanbanPassRateServiceImpl extends ServiceImpl implements ITtKanbanPassRateService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/TtKanbanPassRateList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/TtKanbanPassRateList.vue
new file mode 100644
index 0000000..89de0cb
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/TtKanbanPassRateList.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/TtKanbanPassRate_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/TtKanbanPassRate_menu_insert.sql
new file mode 100644
index 0000000..d76f1cc
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/TtKanbanPassRate_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/kanbanpassrate文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509138920180', NULL, 'tt_kanban_pass_rate', '/kanbanpassrate/ttKanbanPassRateList', 'kanbanpassrate/TtKanbanPassRateList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509138920181', '2023020509138920180', '添加tt_kanban_pass_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpassrate:tt_kanban_pass_rate:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509138920182', '2023020509138920180', '编辑tt_kanban_pass_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpassrate:tt_kanban_pass_rate:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509138920183', '2023020509138920180', '删除tt_kanban_pass_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpassrate:tt_kanban_pass_rate:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509138920184', '2023020509138920180', '批量删除tt_kanban_pass_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpassrate:tt_kanban_pass_rate:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509138920185', '2023020509138920180', '导出excel_tt_kanban_pass_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpassrate:tt_kanban_pass_rate:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509138920186', '2023020509138920180', '导入excel_tt_kanban_pass_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpassrate:tt_kanban_pass_rate:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:13:18', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateForm.vue
new file mode 100644
index 0000000..ef473fb
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateForm.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateModal.Style#Drawer.vue
new file mode 100644
index 0000000..1fa1733
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateModal.vue
new file mode 100644
index 0000000..111f739
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpassrate/vue/modules/TtKanbanPassRateModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/controller/TtKanbanPlanController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/controller/TtKanbanPlanController.java
new file mode 100644
index 0000000..07cca0f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/controller/TtKanbanPlanController.java
@@ -0,0 +1,199 @@
+package org.jeecg.modules.demo.kanbanplan.controller;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import org.jeecg.modules.demo.kanbanplan.service.ITtKanbanPlanService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_kanban_plan
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_kanban_plan")
+@RestController
+@RequestMapping("/kanbanplan/ttKanbanPlan")
+@Slf4j
+public class TtKanbanPlanController extends JeecgController {
+ @Autowired
+ private ITtKanbanPlanService ttKanbanPlanService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttKanbanPlan
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_plan-分页列表查询")
+ @ApiOperation(value="tt_kanban_plan-分页列表查询", notes="tt_kanban_plan-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtKanbanPlan ttKanbanPlan,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttKanbanPlan, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttKanbanPlanService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 看板1列表查询
+ *
+ * @param ttKanbanPlan
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_plan-分页列表查询")
+ @ApiOperation(value="tt_kanban_plan-看板1列表查询", notes="tt_kanban_plan-看板1列表查询")
+ @GetMapping(value = "/queryList")
+ public Result> queryList(TtKanbanPlan ttKanbanPlan) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("company_id", 1);
+ List list = new ArrayList<>();
+ list.add("type_id");
+ list.add("month_name");
+ queryWrapper.orderByAsc(list);
+ List kanbanPlanList = ttKanbanPlanService.list(queryWrapper);
+ return Result.OK(kanbanPlanList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttKanbanPlan
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_plan-添加")
+ @ApiOperation(value="tt_kanban_plan-添加", notes="tt_kanban_plan-添加")
+ //@RequiresPermissions("kanbanplan:tt_kanban_plan:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtKanbanPlan ttKanbanPlan) {
+ ttKanbanPlanService.save(ttKanbanPlan);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttKanbanPlan
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_plan-编辑")
+ @ApiOperation(value="tt_kanban_plan-编辑", notes="tt_kanban_plan-编辑")
+ //@RequiresPermissions("kanbanplan:tt_kanban_plan:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtKanbanPlan ttKanbanPlan) {
+ ttKanbanPlanService.updateById(ttKanbanPlan);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_plan-通过id删除")
+ @ApiOperation(value="tt_kanban_plan-通过id删除", notes="tt_kanban_plan-通过id删除")
+ //@RequiresPermissions("kanbanplan:tt_kanban_plan:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttKanbanPlanService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_plan-批量删除")
+ @ApiOperation(value="tt_kanban_plan-批量删除", notes="tt_kanban_plan-批量删除")
+ //@RequiresPermissions("kanbanplan:tt_kanban_plan:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttKanbanPlanService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_plan-通过id查询")
+ @ApiOperation(value="tt_kanban_plan-通过id查询", notes="tt_kanban_plan-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtKanbanPlan ttKanbanPlan = ttKanbanPlanService.getById(id);
+ if(ttKanbanPlan==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttKanbanPlan);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttKanbanPlan
+ */
+ //@RequiresPermissions("kanbanplan:tt_kanban_plan:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtKanbanPlan ttKanbanPlan) {
+ return super.exportXls(request, ttKanbanPlan, TtKanbanPlan.class, "tt_kanban_plan");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("kanbanplan:tt_kanban_plan:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtKanbanPlan.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/entity/TtKanbanPlan.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/entity/TtKanbanPlan.java
new file mode 100644
index 0000000..26bf616
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/entity/TtKanbanPlan.java
@@ -0,0 +1,59 @@
+package org.jeecg.modules.demo.kanbanplan.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_kanban_plan
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_kanban_plan")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_kanban_plan对象", description="tt_kanban_plan")
+public class TtKanbanPlan implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**月份名称*/
+ @Excel(name = "月份名称", width = 15)
+ @ApiModelProperty(value = "月份名称")
+ private String monthName;
+ /**产品类型id,1表示底座,2表示胶塞*/
+ @Excel(name = "产品类型id,1表示底座,2表示胶塞", width = 15)
+ @ApiModelProperty(value = "产品类型id,1表示底座,2表示胶塞")
+ private Integer typeId;
+ /**计划数量*/
+ @Excel(name = "计划数量", width = 15)
+ @ApiModelProperty(value = "计划数量")
+ private BigDecimal planQty;
+ /**公司id, 1表示电气元器件,2表示轨道扣件*/
+ @Excel(name = "公司id, 1表示电气元器件,2表示轨道扣件", width = 15)
+ @ApiModelProperty(value = "公司id, 1表示电气元器件,2表示轨道扣件")
+ private Integer companyId;
+ /**年份名称*/
+ @Excel(name = "年份名称", width = 15)
+ @ApiModelProperty(value = "年份名称")
+ private String yearName;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/mapper/TtKanbanPlanMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/mapper/TtKanbanPlanMapper.java
new file mode 100644
index 0000000..7481510
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/mapper/TtKanbanPlanMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.kanbanplan.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_kanban_plan
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtKanbanPlanMapper extends BaseMapper {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/mapper/xml/TtKanbanPlanMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/mapper/xml/TtKanbanPlanMapper.xml
new file mode 100644
index 0000000..0244e7c
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/mapper/xml/TtKanbanPlanMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/service/ITtKanbanPlanService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/service/ITtKanbanPlanService.java
new file mode 100644
index 0000000..5380fff
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/service/ITtKanbanPlanService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.demo.kanbanplan.service;
+
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: tt_kanban_plan
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtKanbanPlanService extends IService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/service/impl/TtKanbanPlanServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/service/impl/TtKanbanPlanServiceImpl.java
new file mode 100644
index 0000000..d6081be
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/service/impl/TtKanbanPlanServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.demo.kanbanplan.service.impl;
+
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import org.jeecg.modules.demo.kanbanplan.mapper.TtKanbanPlanMapper;
+import org.jeecg.modules.demo.kanbanplan.service.ITtKanbanPlanService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: tt_kanban_plan
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtKanbanPlanServiceImpl extends ServiceImpl implements ITtKanbanPlanService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/TtKanbanPlanList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/TtKanbanPlanList.vue
new file mode 100644
index 0000000..3cde841
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/TtKanbanPlanList.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/TtKanbanPlan_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/TtKanbanPlan_menu_insert.sql
new file mode 100644
index 0000000..034e10b
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/TtKanbanPlan_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/kanbanplan文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509128490290', NULL, 'tt_kanban_plan', '/kanbanplan/ttKanbanPlanList', 'kanbanplan/TtKanbanPlanList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509128490291', '2023020509128490290', '添加tt_kanban_plan', NULL, NULL, 0, NULL, NULL, 2, 'kanbanplan:tt_kanban_plan:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509128490292', '2023020509128490290', '编辑tt_kanban_plan', NULL, NULL, 0, NULL, NULL, 2, 'kanbanplan:tt_kanban_plan:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509128490293', '2023020509128490290', '删除tt_kanban_plan', NULL, NULL, 0, NULL, NULL, 2, 'kanbanplan:tt_kanban_plan:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509128490294', '2023020509128490290', '批量删除tt_kanban_plan', NULL, NULL, 0, NULL, NULL, 2, 'kanbanplan:tt_kanban_plan:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509128490295', '2023020509128490290', '导出excel_tt_kanban_plan', NULL, NULL, 0, NULL, NULL, 2, 'kanbanplan:tt_kanban_plan:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509128490296', '2023020509128490290', '导入excel_tt_kanban_plan', NULL, NULL, 0, NULL, NULL, 2, 'kanbanplan:tt_kanban_plan:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:29', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanForm.vue
new file mode 100644
index 0000000..fe0372f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanForm.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanModal.Style#Drawer.vue
new file mode 100644
index 0000000..bea674d
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanModal.vue
new file mode 100644
index 0000000..46ed313
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanplan/vue/modules/TtKanbanPlanModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/controller/TtKanbanPsRateController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/controller/TtKanbanPsRateController.java
new file mode 100644
index 0000000..69ea02e
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/controller/TtKanbanPsRateController.java
@@ -0,0 +1,193 @@
+package org.jeecg.modules.demo.kanbanpsrate.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.kanbaninwh.entity.TtKanbanInWh;
+import org.jeecg.modules.demo.kanbanpsrate.entity.TtKanbanPsRate;
+import org.jeecg.modules.demo.kanbanpsrate.service.ITtKanbanPsRateService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_kanban_ps_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_kanban_ps_rate")
+@RestController
+@RequestMapping("/kanbanpsrate/ttKanbanPsRate")
+@Slf4j
+public class TtKanbanPsRateController extends JeecgController {
+ @Autowired
+ private ITtKanbanPsRateService ttKanbanPsRateService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttKanbanPsRate
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_ps_rate-分页列表查询")
+ @ApiOperation(value="tt_kanban_ps_rate-分页列表查询", notes="tt_kanban_ps_rate-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtKanbanPsRate ttKanbanPsRate,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttKanbanPsRate, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttKanbanPsRateService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 看板5列表查询
+ *
+ * @param ttKanbanPsRate
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_ps_rate-分页列表查询")
+ @ApiOperation(value="tt_kanban_ps_rate-看板5列表查询", notes="tt_kanban_ps_rate-看板5列表查询")
+ @GetMapping(value = "/queryList")
+ public Result> queryList(TtKanbanPsRate ttKanbanPsRate) {
+ List kanbanPsRateList = ttKanbanPsRateService.kanbanPsRateList();
+ return Result.OK(kanbanPsRateList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttKanbanPsRate
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_ps_rate-添加")
+ @ApiOperation(value="tt_kanban_ps_rate-添加", notes="tt_kanban_ps_rate-添加")
+ //@RequiresPermissions("kanbanpsrate:tt_kanban_ps_rate:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtKanbanPsRate ttKanbanPsRate) {
+ ttKanbanPsRateService.save(ttKanbanPsRate);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttKanbanPsRate
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_ps_rate-编辑")
+ @ApiOperation(value="tt_kanban_ps_rate-编辑", notes="tt_kanban_ps_rate-编辑")
+ //@RequiresPermissions("kanbanpsrate:tt_kanban_ps_rate:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtKanbanPsRate ttKanbanPsRate) {
+ ttKanbanPsRateService.updateById(ttKanbanPsRate);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_ps_rate-通过id删除")
+ @ApiOperation(value="tt_kanban_ps_rate-通过id删除", notes="tt_kanban_ps_rate-通过id删除")
+ //@RequiresPermissions("kanbanpsrate:tt_kanban_ps_rate:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttKanbanPsRateService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_ps_rate-批量删除")
+ @ApiOperation(value="tt_kanban_ps_rate-批量删除", notes="tt_kanban_ps_rate-批量删除")
+ //@RequiresPermissions("kanbanpsrate:tt_kanban_ps_rate:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttKanbanPsRateService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_ps_rate-通过id查询")
+ @ApiOperation(value="tt_kanban_ps_rate-通过id查询", notes="tt_kanban_ps_rate-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtKanbanPsRate ttKanbanPsRate = ttKanbanPsRateService.getById(id);
+ if(ttKanbanPsRate==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttKanbanPsRate);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttKanbanPsRate
+ */
+ //@RequiresPermissions("kanbanpsrate:tt_kanban_ps_rate:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtKanbanPsRate ttKanbanPsRate) {
+ return super.exportXls(request, ttKanbanPsRate, TtKanbanPsRate.class, "tt_kanban_ps_rate");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("kanbanpsrate:tt_kanban_ps_rate:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtKanbanPsRate.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/entity/TtKanbanPsRate.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/entity/TtKanbanPsRate.java
new file mode 100644
index 0000000..ced439c
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/entity/TtKanbanPsRate.java
@@ -0,0 +1,61 @@
+package org.jeecg.modules.demo.kanbanpsrate.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_kanban_ps_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_kanban_ps_rate")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_kanban_ps_rate对象", description="tt_kanban_ps_rate")
+public class TtKanbanPsRate implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**日期*/
+ @Excel(name = "日期", width = 15, format = "yyyy-MM-dd")
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @ApiModelProperty(value = "日期")
+ private Date dayName;
+ /**日期名称*/
+ @Excel(name = "日期名称", width = 15)
+ @ApiModelProperty(value = "日期名称")
+ private String dayDesc;
+ /**工序名称*/
+ @Excel(name = "工序名称", width = 15)
+ @ApiModelProperty(value = "工序名称")
+ private String psName;
+ /**工序达成率*/
+ @Excel(name = "工序达成率", width = 15)
+ @ApiModelProperty(value = "工序达成率")
+ private BigDecimal psRate;
+ /**公司id, 1表示电气元器件,2表示轨道扣件*/
+ @Excel(name = "公司id, 1表示电气元器件,2表示轨道扣件", width = 15)
+ @ApiModelProperty(value = "公司id, 1表示电气元器件,2表示轨道扣件")
+ private Integer companyId;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/mapper/TtKanbanPsRateMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/mapper/TtKanbanPsRateMapper.java
new file mode 100644
index 0000000..ebbec1f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/mapper/TtKanbanPsRateMapper.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.demo.kanbanpsrate.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.kanbanpsrate.entity.TtKanbanPsRate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_kanban_ps_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtKanbanPsRateMapper extends BaseMapper {
+
+ List kanbanPsRateList();
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/mapper/xml/TtKanbanPsRateMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/mapper/xml/TtKanbanPsRateMapper.xml
new file mode 100644
index 0000000..5dfb860
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/mapper/xml/TtKanbanPsRateMapper.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/service/ITtKanbanPsRateService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/service/ITtKanbanPsRateService.java
new file mode 100644
index 0000000..eba5ab0
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/service/ITtKanbanPsRateService.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.kanbanpsrate.service;
+
+import org.jeecg.modules.demo.kanbanpsrate.entity.TtKanbanPsRate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: tt_kanban_ps_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtKanbanPsRateService extends IService {
+
+ List kanbanPsRateList();
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/service/impl/TtKanbanPsRateServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/service/impl/TtKanbanPsRateServiceImpl.java
new file mode 100644
index 0000000..07dcdb1
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/service/impl/TtKanbanPsRateServiceImpl.java
@@ -0,0 +1,29 @@
+package org.jeecg.modules.demo.kanbanpsrate.service.impl;
+
+import org.jeecg.modules.demo.kanbaninwh.mapper.TtKanbanInWhMapper;
+import org.jeecg.modules.demo.kanbanpsrate.entity.TtKanbanPsRate;
+import org.jeecg.modules.demo.kanbanpsrate.mapper.TtKanbanPsRateMapper;
+import org.jeecg.modules.demo.kanbanpsrate.service.ITtKanbanPsRateService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * @Description: tt_kanban_ps_rate
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtKanbanPsRateServiceImpl extends ServiceImpl implements ITtKanbanPsRateService {
+ @Autowired
+ private TtKanbanPsRateMapper TtKanbanInWhMapper;
+
+ @Override
+ public List kanbanPsRateList() {
+ return TtKanbanInWhMapper.kanbanPsRateList();
+ }
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/TtKanbanPsRateList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/TtKanbanPsRateList.vue
new file mode 100644
index 0000000..41a251a
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/TtKanbanPsRateList.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/TtKanbanPsRate_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/TtKanbanPsRate_menu_insert.sql
new file mode 100644
index 0000000..f80cb66
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/TtKanbanPsRate_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/kanbanpsrate文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('202302050912550470', NULL, 'tt_kanban_ps_rate', '/kanbanpsrate/ttKanbanPsRateList', 'kanbanpsrate/TtKanbanPsRateList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202302050912550471', '202302050912550470', '添加tt_kanban_ps_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpsrate:tt_kanban_ps_rate:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202302050912550472', '202302050912550470', '编辑tt_kanban_ps_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpsrate:tt_kanban_ps_rate:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202302050912550473', '202302050912550470', '删除tt_kanban_ps_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpsrate:tt_kanban_ps_rate:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202302050912550474', '202302050912550470', '批量删除tt_kanban_ps_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpsrate:tt_kanban_ps_rate:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202302050912550475', '202302050912550470', '导出excel_tt_kanban_ps_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpsrate:tt_kanban_ps_rate:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('202302050912550476', '202302050912550470', '导入excel_tt_kanban_ps_rate', NULL, NULL, 0, NULL, NULL, 2, 'kanbanpsrate:tt_kanban_ps_rate:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:47', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateForm.vue
new file mode 100644
index 0000000..7ad9d3b
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateForm.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateModal.Style#Drawer.vue
new file mode 100644
index 0000000..4b78a47
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateModal.vue
new file mode 100644
index 0000000..656e763
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbanpsrate/vue/modules/TtKanbanPsRateModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/controller/TtKanbanSalesController.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/controller/TtKanbanSalesController.java
new file mode 100644
index 0000000..caf9c97
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/controller/TtKanbanSalesController.java
@@ -0,0 +1,201 @@
+package org.jeecg.modules.demo.kanbansales.controller;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.demo.kanbanplan.entity.TtKanbanPlan;
+import org.jeecg.modules.demo.kanbansales.entity.TtKanbanSales;
+import org.jeecg.modules.demo.kanbansales.service.ITtKanbanSalesService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: tt_kanban_sales
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Api(tags="tt_kanban_sales")
+@RestController
+@RequestMapping("/kanbansales/ttKanbanSales")
+@Slf4j
+public class TtKanbanSalesController extends JeecgController {
+ @Autowired
+ private ITtKanbanSalesService ttKanbanSalesService;
+
+ /**
+ * 分页列表查询
+ *
+ * @param ttKanbanSales
+ * @param pageNo
+ * @param pageSize
+ * @param req
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_sales-分页列表查询")
+ @ApiOperation(value="tt_kanban_sales-分页列表查询", notes="tt_kanban_sales-分页列表查询")
+ @GetMapping(value = "/list")
+ public Result> queryPageList(TtKanbanSales ttKanbanSales,
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+ HttpServletRequest req) {
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(ttKanbanSales, req.getParameterMap());
+ Page page = new Page(pageNo, pageSize);
+ IPage pageList = ttKanbanSalesService.page(page, queryWrapper);
+ return Result.OK(pageList);
+ }
+
+ /**
+ * 看板4列表查询
+ *
+ * @param ttKanbanSales
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_sales-分页列表查询")
+ @ApiOperation(value="tt_kanban_sales-看板4列表查询", notes="tt_kanban_sales-看板4列表查询")
+ @GetMapping(value = "/queryList")
+ public Result> queryList(TtKanbanSales ttKanbanSales) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("company_id", 1);
+ List list = new ArrayList<>();
+ list.add("type_id");
+ list.add("year_name");
+ list.add("month_name");
+ queryWrapper.orderByAsc(list);
+ List kanbanSalesList = ttKanbanSalesService.list(queryWrapper);
+ return Result.OK(kanbanSalesList);
+ }
+
+ /**
+ * 添加
+ *
+ * @param ttKanbanSales
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_sales-添加")
+ @ApiOperation(value="tt_kanban_sales-添加", notes="tt_kanban_sales-添加")
+ //@RequiresPermissions("kanbansales:tt_kanban_sales:add")
+ @PostMapping(value = "/add")
+ public Result add(@RequestBody TtKanbanSales ttKanbanSales) {
+ ttKanbanSalesService.save(ttKanbanSales);
+ return Result.OK("添加成功!");
+ }
+
+ /**
+ * 编辑
+ *
+ * @param ttKanbanSales
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_sales-编辑")
+ @ApiOperation(value="tt_kanban_sales-编辑", notes="tt_kanban_sales-编辑")
+ //@RequiresPermissions("kanbansales:tt_kanban_sales:edit")
+ @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+ public Result edit(@RequestBody TtKanbanSales ttKanbanSales) {
+ ttKanbanSalesService.updateById(ttKanbanSales);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 通过id删除
+ *
+ * @param id
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_sales-通过id删除")
+ @ApiOperation(value="tt_kanban_sales-通过id删除", notes="tt_kanban_sales-通过id删除")
+ //@RequiresPermissions("kanbansales:tt_kanban_sales:delete")
+ @DeleteMapping(value = "/delete")
+ public Result delete(@RequestParam(name="id",required=true) String id) {
+ ttKanbanSalesService.removeById(id);
+ return Result.OK("删除成功!");
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param ids
+ * @return
+ */
+ @AutoLog(value = "tt_kanban_sales-批量删除")
+ @ApiOperation(value="tt_kanban_sales-批量删除", notes="tt_kanban_sales-批量删除")
+ //@RequiresPermissions("kanbansales:tt_kanban_sales:deleteBatch")
+ @DeleteMapping(value = "/deleteBatch")
+ public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+ this.ttKanbanSalesService.removeByIds(Arrays.asList(ids.split(",")));
+ return Result.OK("批量删除成功!");
+ }
+
+ /**
+ * 通过id查询
+ *
+ * @param id
+ * @return
+ */
+ //@AutoLog(value = "tt_kanban_sales-通过id查询")
+ @ApiOperation(value="tt_kanban_sales-通过id查询", notes="tt_kanban_sales-通过id查询")
+ @GetMapping(value = "/queryById")
+ public Result queryById(@RequestParam(name="id",required=true) String id) {
+ TtKanbanSales ttKanbanSales = ttKanbanSalesService.getById(id);
+ if(ttKanbanSales==null) {
+ return Result.error("未找到对应数据");
+ }
+ return Result.OK(ttKanbanSales);
+ }
+
+ /**
+ * 导出excel
+ *
+ * @param request
+ * @param ttKanbanSales
+ */
+ //@RequiresPermissions("kanbansales:tt_kanban_sales:exportXls")
+ @RequestMapping(value = "/exportXls")
+ public ModelAndView exportXls(HttpServletRequest request, TtKanbanSales ttKanbanSales) {
+ return super.exportXls(request, ttKanbanSales, TtKanbanSales.class, "tt_kanban_sales");
+ }
+
+ /**
+ * 通过excel导入数据
+ *
+ * @param request
+ * @param response
+ * @return
+ */
+ //@RequiresPermissions("kanbansales:tt_kanban_sales:importExcel")
+ @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+ public Result> importExcel(HttpServletRequest request, HttpServletResponse response) {
+ return super.importExcel(request, response, TtKanbanSales.class);
+ }
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/entity/TtKanbanSales.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/entity/TtKanbanSales.java
new file mode 100644
index 0000000..27f9117
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/entity/TtKanbanSales.java
@@ -0,0 +1,59 @@
+package org.jeecg.modules.demo.kanbansales.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: tt_kanban_sales
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Data
+@TableName("tt_kanban_sales")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="tt_kanban_sales对象", description="tt_kanban_sales")
+public class TtKanbanSales implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value = "id")
+ private Integer id;
+ /**月份名称*/
+ @Excel(name = "月份名称", width = 15)
+ @ApiModelProperty(value = "月份名称")
+ private String monthName;
+ /**产品类型id,1表示底座,2表示胶塞*/
+ @Excel(name = "产品类型id,1表示底座,2表示胶塞", width = 15)
+ @ApiModelProperty(value = "产品类型id,1表示底座,2表示胶塞")
+ private Integer typeId;
+ /**销售数量*/
+ @Excel(name = "销售数量", width = 15)
+ @ApiModelProperty(value = "销售数量")
+ private BigDecimal salesQty;
+ /**公司id, 1表示电气元器件,2表示轨道扣件*/
+ @Excel(name = "公司id, 1表示电气元器件,2表示轨道扣件", width = 15)
+ @ApiModelProperty(value = "公司id, 1表示电气元器件,2表示轨道扣件")
+ private Integer companyId;
+ /**年份名称*/
+ @Excel(name = "年份名称", width = 15)
+ @ApiModelProperty(value = "年份名称")
+ private String yearName;
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/mapper/TtKanbanSalesMapper.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/mapper/TtKanbanSalesMapper.java
new file mode 100644
index 0000000..cb1bd70
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/mapper/TtKanbanSalesMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.demo.kanbansales.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.demo.kanbansales.entity.TtKanbanSales;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: tt_kanban_sales
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface TtKanbanSalesMapper extends BaseMapper {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/mapper/xml/TtKanbanSalesMapper.xml b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/mapper/xml/TtKanbanSalesMapper.xml
new file mode 100644
index 0000000..fe9b828
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/mapper/xml/TtKanbanSalesMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/service/ITtKanbanSalesService.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/service/ITtKanbanSalesService.java
new file mode 100644
index 0000000..c4c5b99
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/service/ITtKanbanSalesService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.demo.kanbansales.service;
+
+import org.jeecg.modules.demo.kanbansales.entity.TtKanbanSales;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: tt_kanban_sales
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+public interface ITtKanbanSalesService extends IService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/service/impl/TtKanbanSalesServiceImpl.java b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/service/impl/TtKanbanSalesServiceImpl.java
new file mode 100644
index 0000000..42a5848
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/service/impl/TtKanbanSalesServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.demo.kanbansales.service.impl;
+
+import org.jeecg.modules.demo.kanbansales.entity.TtKanbanSales;
+import org.jeecg.modules.demo.kanbansales.mapper.TtKanbanSalesMapper;
+import org.jeecg.modules.demo.kanbansales.service.ITtKanbanSalesService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: tt_kanban_sales
+ * @Author: jeecg-boot
+ * @Date: 2023-02-05
+ * @Version: V1.0
+ */
+@Service
+public class TtKanbanSalesServiceImpl extends ServiceImpl implements ITtKanbanSalesService {
+
+}
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/TtKanbanSalesList.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/TtKanbanSalesList.vue
new file mode 100644
index 0000000..9626a0c
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/TtKanbanSalesList.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
新增
+
导出
+
+ 导入
+
+
+
+
+
+ 删除
+
+ 批量操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无图片
+
+
+
+ 无文件
+
+ 下载
+
+
+
+
+ 编辑
+
+
+
+ 更多
+
+
+ 详情
+
+
+ handleDelete(record.id)">
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/TtKanbanSales_menu_insert.sql b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/TtKanbanSales_menu_insert.sql
new file mode 100644
index 0000000..369758f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/TtKanbanSales_menu_insert.sql
@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/kanbansales文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
+VALUES ('2023020509127590130', NULL, 'tt_kanban_sales', '/kanbansales/ttKanbanSalesList', 'kanbansales/TtKanbanSalesList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509127590131', '2023020509127590130', '添加tt_kanban_sales', NULL, NULL, 0, NULL, NULL, 2, 'kanbansales:tt_kanban_sales:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509127590132', '2023020509127590130', '编辑tt_kanban_sales', NULL, NULL, 0, NULL, NULL, 2, 'kanbansales:tt_kanban_sales:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509127590133', '2023020509127590130', '删除tt_kanban_sales', NULL, NULL, 0, NULL, NULL, 2, 'kanbansales:tt_kanban_sales:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509127590134', '2023020509127590130', '批量删除tt_kanban_sales', NULL, NULL, 0, NULL, NULL, 2, 'kanbansales:tt_kanban_sales:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509127590135', '2023020509127590130', '导出excel_tt_kanban_sales', NULL, NULL, 0, NULL, NULL, 2, 'kanbansales:tt_kanban_sales:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2023020509127590136', '2023020509127590130', '导入excel_tt_kanban_sales', NULL, NULL, 0, NULL, NULL, 2, 'kanbansales:tt_kanban_sales:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2023-02-05 09:12:13', NULL, NULL, 0, 0, '1', 0);
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesForm.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesForm.vue
new file mode 100644
index 0000000..d3de9ca
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesForm.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesModal.Style#Drawer.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesModal.Style#Drawer.vue
new file mode 100644
index 0000000..ff9094f
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesModal.Style#Drawer.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesModal.vue b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesModal.vue
new file mode 100644
index 0000000..23d30df
--- /dev/null
+++ b/linkage-boot/linkage-module-demo/src/main/java/org/jeecg/modules/demo/kanbansales/vue/modules/TtKanbanSalesModal.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
\ No newline at end of file