From d1d61274b1cf0ad67f1b57d940a4aec202c34a52 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 01 七月 2025 11:55:05 +0800
Subject: [PATCH] 添加工厂建模与用户关系

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryUserController.java             |  198 ++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/WorkShopIdModel.java                            |   71 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java    |  108 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactory.java                               |   98 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java |    4 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java              |  222 +++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactoryUser.java                           |   47 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java            |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryService.java                      |   59 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryUserMapper.xml                  |    5 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryController.java                 |  226 +++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryUserMapper.java                     |   14 
 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java                              |    4 
 db/设备管理数据库设计.pdma.json                                                                                         |   42 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryUserServiceImpl.java          |   19 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java         |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryMapper.xml                      |    5 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseFactoryTreeModel.java                    |  126 +++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryMapper.java                         |   14 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java           |   98 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryUserService.java                  |   14 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml         |    3 
 22 files changed, 1,374 insertions(+), 7 deletions(-)

diff --git "a/db/\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
index bc35746..0fc3808 100644
--- "a/db/\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
+++ "b/db/\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
@@ -2,9 +2,9 @@
   "name": "鏁版嵁搴撲骇鍝佸寲璁捐",
   "describe": "鎻忚堪璁惧绠$悊鏁版嵁搴撹璁℃枃妗�",
   "avatar": "",
-  "version": "4.9.2",
+  "version": "4.9.4",
   "createdTime": "2025-3-10 16:38:19",
-  "updatedTime": "2025-7-1 10:45:42",
+  "updatedTime": "2025-7-1 11:43:12",
   "dbConns": [],
   "profile": {
     "default": {
@@ -632,7 +632,7 @@
       "#DDE5FF"
     ],
     "DDLToggleCase": "L",
-    "menuWidth": "389px"
+    "menuWidth": "246px"
   },
   "entities": [
     {
@@ -20685,6 +20685,42 @@
           "extProps": {},
           "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
           "id": "C1CE4BAB-DB43-4D6F-A0FA-24275F01F7B2"
+        },
+        {
+          "defKey": "org_type",
+          "defName": "鏈烘瀯绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "B5B65363-D1D6-497E-ACE7-8DA9CDA8AA75"
+        },
+        {
+          "defKey": "org_code",
+          "defName": "鏈烘瀯缂栫爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "7ECD6490-CFCE-4613-BC8C-A51FD324FF44"
         }
       ],
       "correlations": [],
diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
index 741dd03..2321cfa 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
@@ -23,6 +23,10 @@
     public static final String PRODUCTION = "org_num_rule";
 
     /**
+     * 璁惧杞﹂棿缂栫爜
+     */
+    public static final String WORKSHOP = "work_shop_code_rule";
+    /**
      * 鍒嗙被瀛楀吀缂栫爜
      */
     public static final String CATEGORY = "category_code_rule";
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryController.java
new file mode 100644
index 0000000..4087258
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryController.java
@@ -0,0 +1,226 @@
+package org.jeecg.modules.eam.base.controller;
+
+import java.util.Arrays;
+import java.util.List;
+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.eam.base.entity.BaseFactory;
+import org.jeecg.modules.eam.base.model.EamBaseFactoryTreeModel;
+import org.jeecg.modules.eam.base.model.WorkShopIdModel;
+import org.jeecg.modules.eam.base.service.IBaseFactoryService;
+
+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.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 璁惧杞﹂棿绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Api(tags="璁惧杞﹂棿绠$悊")
+@RestController
+@RequestMapping("/eam/BaseFactory")
+@Slf4j
+public class BaseFactoryController extends JeecgController<BaseFactory, IBaseFactoryService> {
+	@Autowired
+	private IBaseFactoryService BaseFactoryService;
+
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param BaseFactory
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "璁惧杞﹂棿绠$悊-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊-鍒嗛〉鍒楄〃鏌ヨ", notes="璁惧杞﹂棿绠$悊-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<BaseFactory>> queryPageList(BaseFactory BaseFactory,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BaseFactory> queryWrapper = QueryGenerator.initQueryWrapper(BaseFactory, req.getParameterMap());
+		Page<BaseFactory> page = new Page<BaseFactory>(pageNo, pageSize);
+		IPage<BaseFactory> pageList = BaseFactoryService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 @AutoLog(value = "璁惧杞﹂棿绠$悊-鏍戝舰鍒楄〃")
+	 @ApiOperation(value = "璁惧杞﹂棿绠$悊-鏍戝舰鍒楄〃", notes = "璁惧杞﹂棿绠$悊-鏍戝舰鍒楄〃")
+	 @GetMapping(value = "/queryTreeList")
+	 public Result<List<EamBaseFactoryTreeModel>> queryTreeList(@RequestParam(name = "ids", required = false) String ids) {
+		 Result<List<EamBaseFactoryTreeModel>> result = new Result<>();
+		 try {
+			 if (oConvertUtils.isNotEmpty(ids)) {
+				 List<EamBaseFactoryTreeModel> productionList = BaseFactoryService.queryTreeList(ids);
+				 result.setResult(productionList);
+			 } else {
+				 List<EamBaseFactoryTreeModel> list = BaseFactoryService.queryTreeList();
+				 result.setResult(list);
+			 }
+			 result.setSuccess(true);
+		 } catch (Exception e) {
+			 log.error(e.getMessage(), e);
+		 }
+		 return result;
+	 }
+
+	 @AutoLog(value = "浜х嚎琛�-鏌ヨ鏍戝舰缁撴瀯鎵�鏈変骇绾垮悕绉�")
+	 @ApiOperation(value = "浜х嚎琛�-鏌ヨ鏍戝舰缁撴瀯鎵�鏈変骇绾垮悕绉�", notes = "浜х嚎琛�-鏌ヨ鏍戝舰缁撴瀯鎵�鏈変骇绾垮悕绉�")
+	 @GetMapping(value = "/queryIdTree")
+	 public Result<List<WorkShopIdModel>> queryIdTree() {
+		 Result<List<WorkShopIdModel>> result = new Result<>();
+		 try {
+			 List<WorkShopIdModel> list = BaseFactoryService.queryProductionIdTreeList();
+			 result.setResult(list);
+			 result.setSuccess(true);
+		 } catch (Exception e) {
+			 log.error(e.getMessage(), e);
+		 }
+		 return result;
+	 }
+
+	 /**
+	  * 娣诲姞
+	  *
+	  * @param BaseFactory
+	  * @return
+	  */
+	 @AutoLog(value = "璁惧杞﹂棿绠$悊-娣诲姞")
+	 @ApiOperation(value = "璁惧杞﹂棿绠$悊-娣诲姞", notes = "璁惧杞﹂棿绠$悊-娣诲姞")
+	 @PostMapping(value = "/add")
+	 public Result<BaseFactory> add(@RequestBody BaseFactory BaseFactory) {
+		 Result<BaseFactory> result = new Result<>();
+		 try {
+			 BaseFactoryService.saveBaseFactoryData(BaseFactory);
+			 result.success("娣诲姞鎴愬姛锛�");
+		 } catch (Exception e) {
+			 log.error(e.getMessage(), e);
+			 result.error500("鎿嶄綔澶辫触");
+		 }
+		 return result;
+	 }
+
+	 /**
+	  * 缂栬緫
+	  *
+	  * @param BaseFactory
+	  * @return
+	  */
+	 @AutoLog(value = "璁惧杞﹂棿绠$悊-缂栬緫")
+	 @ApiOperation(value = "璁惧杞﹂棿绠$悊-缂栬緫", notes = "璁惧杞﹂棿绠$悊-缂栬緫")
+	 @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+	 public Result<BaseFactory> edit(@RequestBody BaseFactory BaseFactory) {
+		 Result<BaseFactory> result = new Result<>();
+		 BaseFactory eamProductionEntity = BaseFactoryService.getById(BaseFactory.getId());
+		 if (eamProductionEntity == null) {
+			 result.error500("鏈壘鍒板搴斿疄浣�");
+		 } else {
+			 boolean ok = BaseFactoryService.updateBaseFactoryDataById(BaseFactory);
+			 if (ok) {
+				 result.success("淇敼鎴愬姛!");
+			 }
+		 }
+		 return result;
+	 }
+
+	 /**
+	  * 閫氳繃id鍒犻櫎
+	  *
+	  * @param id
+	  * @return
+	  */
+	 @AutoLog(value = "璁惧杞﹂棿绠$悊-閫氳繃id鍒犻櫎")
+	 @ApiOperation(value = "璁惧杞﹂棿绠$悊-閫氳繃id鍒犻櫎", notes = "璁惧杞﹂棿绠$悊-閫氳繃id鍒犻櫎")
+	 @DeleteMapping(value = "/delete")
+	 public Result<BaseFactory> delete(@RequestParam(name = "id", required = true) String id) {
+		 Result<BaseFactory> result = new Result<>();
+		 BaseFactory BaseFactory = BaseFactoryService.getById(id);
+		 if (BaseFactory == null) {
+			 result.error500("鏈壘鍒板搴斿疄浣�");
+		 } else {
+			 boolean ok = BaseFactoryService.delete(id);
+			 if (ok) {
+				 result.success("鍒犻櫎鎴愬姛!");
+			 }
+		 }
+		 return result;
+	 }
+
+	 /**
+	  * 鎵归噺鍒犻櫎
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "璁惧杞﹂棿绠$悊-鎵归噺鍒犻櫎")
+	 @ApiOperation(value = "璁惧杞﹂棿绠$悊-鎵归噺鍒犻櫎", notes = "璁惧杞﹂棿绠$悊-鎵归噺鍒犻櫎")
+	 @DeleteMapping(value = "/deleteBatch")
+	 public Result<BaseFactory> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+		 Result<BaseFactory> result = new Result<>();
+		 if (ids == null || "".equals(ids.trim())) {
+			 result.error500("鍙傛暟涓嶈瘑鍒紒");
+		 } else {
+			 this.BaseFactoryService.deleteBatchWithChildren(Arrays.asList(ids.split(",")));
+			 result.success("鍒犻櫎鎴愬姛!");
+		 }
+		 return result;
+	 }
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "璁惧杞﹂棿绠$悊-閫氳繃id鏌ヨ")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊-閫氳繃id鏌ヨ", notes="璁惧杞﹂棿绠$悊-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<BaseFactory> queryById(@RequestParam(name="id",required=true) String id) {
+		BaseFactory BaseFactory = BaseFactoryService.getById(id);
+		if(BaseFactory==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(BaseFactory);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param BaseFactory
+    */
+    //@RequiresPermissions("org.jeecg.modules.eam:sys_work_shop_depart:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BaseFactory BaseFactory) {
+        return super.exportXls(request, BaseFactory, BaseFactory.class, "璁惧杞﹂棿绠$悊");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("sys_work_shop_depart:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BaseFactory.class);
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryUserController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryUserController.java
new file mode 100644
index 0000000..6ea1d2b
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/BaseFactoryUserController.java
@@ -0,0 +1,198 @@
+package org.jeecg.modules.eam.base.controller;
+
+import java.util.Arrays;
+import java.util.List;
+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.modules.eam.base.entity.BaseFactoryUser;
+import org.jeecg.modules.eam.base.service.IBaseFactoryUserService;
+
+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.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+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.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 璁惧杞﹂棿绠$悊涓庣敤鎴�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Api(tags="璁惧杞﹂棿绠$悊涓庣敤鎴�")
+@RestController
+@RequestMapping("/eam/BaseFactoryUser")
+@Slf4j
+public class BaseFactoryUserController extends JeecgController<BaseFactoryUser, IBaseFactoryUserService> {
+	@Autowired
+	private IBaseFactoryUserService BaseFactoryUserService;
+
+	@Autowired
+	private ISysUserService sysUserService;
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param BaseFactoryUser
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "璁惧杞﹂棿绠$悊涓庣敤鎴�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊涓庣敤鎴�-鍒嗛〉鍒楄〃鏌ヨ", notes="璁惧杞﹂棿绠$悊涓庣敤鎴�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<BaseFactoryUser>> queryPageList(BaseFactoryUser BaseFactoryUser,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BaseFactoryUser> queryWrapper = QueryGenerator.initQueryWrapper(BaseFactoryUser, req.getParameterMap());
+		Page<BaseFactoryUser> page = new Page<BaseFactoryUser>(pageNo, pageSize);
+		IPage<BaseFactoryUser> pageList = BaseFactoryUserService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 @RequestMapping(value = "/BaseFactoryUserList", method = RequestMethod.GET)
+	 public Result<IPage<SysUser>> userRoleList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+												@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
+		 Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
+		 Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
+		 String BaseFactoryId = req.getParameter("BaseFactoryId");
+		 String username=req.getParameter("username");
+		 IPage<SysUser> pageList = sysUserService.getUserByworkShopDepartId(page, BaseFactoryId,username);
+		 result.setSuccess(true);
+		 result.setResult(pageList);
+		 return result;
+	 }
+
+	/**
+	 *   娣诲姞
+	 *
+	 * @param BaseFactoryUser
+	 * @return
+	 */
+	@AutoLog(value = "璁惧杞﹂棿绠$悊涓庣敤鎴�-娣诲姞")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊涓庣敤鎴�-娣诲姞", notes="璁惧杞﹂棿绠$悊涓庣敤鎴�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules.mdc:sys_work_shop_depart_user:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BaseFactoryUser BaseFactoryUser) {
+		if (BaseFactoryUser.getUserId().contains(",")){
+			String[] userIds = BaseFactoryUser.getUserId().split(",");
+			List<String> userIdList = Arrays.asList(userIds);
+			userIdList.forEach(userId -> {
+				BaseFactoryUser BaseFactoryUser1 = new BaseFactoryUser();
+				BaseFactoryUser1.setUserId(userId);
+				BaseFactoryUser1.setFactoryId(BaseFactoryUser.getFactoryId());
+				BaseFactoryUserService.save(BaseFactoryUser1);
+			});
+		}else {
+			BaseFactoryUserService.save(BaseFactoryUser);
+		}
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+
+	/**
+	 *  缂栬緫
+	 *
+	 * @param BaseFactoryUser
+	 * @return
+	 */
+	@AutoLog(value = "璁惧杞﹂棿绠$悊涓庣敤鎴�-缂栬緫")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊涓庣敤鎴�-缂栬緫", notes="璁惧杞﹂棿绠$悊涓庣敤鎴�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules.mdc:sys_work_shop_depart_user:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BaseFactoryUser BaseFactoryUser) {
+		BaseFactoryUserService.updateById(BaseFactoryUser);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "璁惧杞﹂棿绠$悊涓庣敤鎴�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊涓庣敤鎴�-閫氳繃id鍒犻櫎", notes="璁惧杞﹂棿绠$悊涓庣敤鎴�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules.mdc:sys_work_shop_depart_user:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(String id, String BaseFactoryId) {
+		QueryWrapper<BaseFactoryUser> queryWrapper = new QueryWrapper<BaseFactoryUser>();
+		queryWrapper.eq("work_shop_depart_id", BaseFactoryId)
+				.eq("user_id", id);
+		BaseFactoryUserService.remove(queryWrapper);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "璁惧杞﹂棿绠$悊涓庣敤鎴�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊涓庣敤鎴�-鎵归噺鍒犻櫎", notes="璁惧杞﹂棿绠$悊涓庣敤鎴�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules.mdc:sys_work_shop_depart_user:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(String ids,String BaseFactoryId) {
+		QueryWrapper<BaseFactoryUser> queryWrapper = new QueryWrapper<BaseFactoryUser>();
+		queryWrapper.eq("work_shop_depart_id", BaseFactoryId)
+				.in("user_id", Arrays.asList(ids.split(",")));
+		BaseFactoryUserService.remove(queryWrapper);
+		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+	}
+
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "璁惧杞﹂棿绠$悊涓庣敤鎴�-閫氳繃id鏌ヨ")
+	@ApiOperation(value="璁惧杞﹂棿绠$悊涓庣敤鎴�-閫氳繃id鏌ヨ", notes="璁惧杞﹂棿绠$悊涓庣敤鎴�-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<BaseFactoryUser> queryById(@RequestParam(name="id",required=true) String id) {
+		BaseFactoryUser BaseFactoryUser = BaseFactoryUserService.getById(id);
+		if(BaseFactoryUser==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(BaseFactoryUser);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param BaseFactoryUser
+    */
+    //@RequiresPermissions("org.jeecg.modules.mdc:sys_work_shop_depart_user:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BaseFactoryUser BaseFactoryUser) {
+        return super.exportXls(request, BaseFactoryUser, BaseFactoryUser.class, "璁惧杞﹂棿绠$悊涓庣敤鎴�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("sys_work_shop_depart_user:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BaseFactoryUser.class);
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java
new file mode 100644
index 0000000..a0d7778
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java
@@ -0,0 +1,108 @@
+package org.jeecg.modules.eam.base.controller.util;
+
+import cn.hutool.core.util.StrUtil;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import org.jeecg.modules.eam.base.model.EamBaseFactoryTreeModel;
+import org.jeecg.modules.eam.base.model.WorkShopIdModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 瀵瑰簲浜х嚎鐨勮〃锛屽鐞嗗苟鏌ユ壘鏍戠粨鏋勬暟鎹�
+ *
+ * @author: LiuS
+ * @create: 2023-03-23 14:46
+ */
+public class FindsBaseFactorysChildrenUtil {
+
+    /**
+     * queryTreeList鐨勫瓙鏂规硶 ====1=====
+     * 璇ユ柟娉曟槸s灏咮aseFactory绫诲瀷鐨刲ist闆嗗悎杞崲鎴怑amBaseFactoryTreeModel绫诲瀷鐨勯泦鍚�
+     */
+    public static List<EamBaseFactoryTreeModel> wrapTreeDataToTreeList(List<BaseFactory> recordList) {
+        List<WorkShopIdModel> idList = new ArrayList<>();
+        List<EamBaseFactoryTreeModel> records = new ArrayList<>();
+        for (int i = 0; i < recordList.size(); i++) {
+            BaseFactory BaseFactory = recordList.get(i);
+            if (StrUtil.isEmpty(BaseFactory.getRemark())){
+                BaseFactory.setRemark("");
+            }
+            records.add(new EamBaseFactoryTreeModel(BaseFactory));
+        }
+        List<EamBaseFactoryTreeModel> tree = findChildren(records, idList);
+        setEmptyChildrenAsNull(tree);
+        return tree;
+    }
+
+    /**
+     * queryTreeList鐨勫瓙鏂规硶 ====1=====
+     * 璇ユ柟娉曟槸鎵惧埌骞跺皝瑁呴《绾х埗绫荤殑鑺傜偣鍒癟reeList闆嗗悎
+     */
+    public static List<EamBaseFactoryTreeModel> findChildren(List<EamBaseFactoryTreeModel> recordList, List<WorkShopIdModel> workShopIdModelList) {
+        List<EamBaseFactoryTreeModel> treeList = new ArrayList<>();
+        for (int i = 0; i < recordList.size(); i++) {
+            EamBaseFactoryTreeModel branch = recordList.get(i);
+            if (oConvertUtils.isEmpty(branch.getParentId())) {
+                treeList.add(branch);
+                WorkShopIdModel WorkShopIdModel = new WorkShopIdModel().convert(branch);
+                workShopIdModelList.add(WorkShopIdModel);
+            }
+        }
+        getGrandChildren(treeList, recordList, workShopIdModelList);
+        return treeList;
+    }
+
+    /**
+     * queryTreeList鐨勫瓙鏂规硶====3====
+     *璇ユ柟娉曟槸鎵惧埌椤剁骇鐖剁被涓嬬殑鎵�鏈夊瓙鑺傜偣闆嗗悎骞跺皝瑁呭埌TreeList闆嗗悎
+     */
+    private static void getGrandChildren(List<EamBaseFactoryTreeModel> treeList, List<EamBaseFactoryTreeModel> recordList, List<WorkShopIdModel> idList) {
+        for (int i = 0; i < treeList.size(); i++) {
+            EamBaseFactoryTreeModel model = treeList.get(i);
+            WorkShopIdModel idModel = idList.get(i);
+            for (int i1 = 0; i1 < recordList.size(); i1++) {
+                EamBaseFactoryTreeModel m = recordList.get(i1);
+                if (m.getParentId() != null && m.getParentId().equals(model.getId())) {
+                    model.getChildren().add(m);
+                    WorkShopIdModel pim = new WorkShopIdModel().convert(m);
+                    idModel.setSelectable(false);
+                    idModel.getChildren().add(pim);
+                }
+            }
+            getGrandChildren(treeList.get(i).getChildren(), recordList, idList.get(i).getChildren());
+        }
+    }
+
+    /**
+     * queryTreeList鐨勫瓙鏂规硶 ====4====
+     * 璇ユ柟娉曟槸灏嗗瓙鑺傜偣涓虹┖鐨凩ist闆嗗悎璁剧疆涓篘ull鍊�
+     */
+    private static void setEmptyChildrenAsNull(List<EamBaseFactoryTreeModel> treeList) {
+        for (int i = 0; i < treeList.size(); i++) {
+            EamBaseFactoryTreeModel model = treeList.get(i);
+            if (model.getChildren().size() == 0) {
+                model.setChildren(null);
+                model.setLeaf(true);
+            } else {
+                setEmptyChildrenAsNull(model.getChildren());
+                model.setLeaf(false);
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇 DepartIdModel
+     */
+    public static List<WorkShopIdModel> wrapTreeDataToProductionIdTreeList(List<BaseFactory> recordList) {
+        List<WorkShopIdModel> idList = new ArrayList<>();
+        List<EamBaseFactoryTreeModel> records = new ArrayList<>();
+        for (int i = 0; i < recordList.size(); i++) {
+            BaseFactory BaseFactory = recordList.get(i);
+            records.add(new EamBaseFactoryTreeModel(BaseFactory));
+        }
+        findChildren(records, idList);
+        return idList;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java
new file mode 100644
index 0000000..07d8ffc
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java
@@ -0,0 +1,98 @@
+package org.jeecg.modules.eam.base.controller.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import io.netty.util.internal.StringUtil;
+import org.jeecg.common.handler.IFillRuleHandler;
+import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.common.util.YouBianCodeUtil;
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import org.jeecg.modules.eam.base.service.IBaseFactoryService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author: LiuS
+ * @create: 2023-07-04 16:15
+ * @Description: 杞﹂棿鏈烘瀯缂栫爜鐢熸垚瑙勫垯
+ */
+public class WorkShopOrgCodeProRule implements IFillRuleHandler {
+
+    @Override
+    public Object execute(JSONObject params, JSONObject formData) {
+        IBaseFactoryService BaseFactoryService = (IBaseFactoryService) SpringContextUtils.getBean("BaseFactoryServiceImpl");
+
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<BaseFactory>();
+        LambdaQueryWrapper<BaseFactory> query1 = new LambdaQueryWrapper<BaseFactory>();
+        // 鍒涘缓涓�涓狶ist闆嗗悎,瀛樺偍鏌ヨ杩斿洖鐨勬墍鏈塀aseFactory瀵硅薄
+        List<BaseFactory> BaseFactoryList = new ArrayList<>();
+        String[] strArray = new String[2];
+        //瀹氫箟杞﹂棿绫诲瀷
+        String orgType = "";
+        // 瀹氫箟鏂扮紪鐮佸瓧绗︿覆
+        String newOrgCode = "";
+        // 瀹氫箟鏃х紪鐮佸瓧绗︿覆
+        String oldOrgCode = "";
+
+        String parentId = null;
+        if (formData != null && formData.size() > 0) {
+            Object obj = formData.get("parentId");
+            if (obj != null) {
+                parentId = obj.toString();
+            }
+        } else {
+            if (params != null) {
+                Object obj = params.get("parentId");
+                if (obj != null) {
+                    parentId = obj.toString();
+                }
+            }
+        }
+
+        //濡傛灉鏄渶楂樼骇,鍒欐煡璇㈠嚭鍚岀骇鐨刼rg_code, 璋冪敤宸ュ叿绫荤敓鎴愮紪鐮佸苟杩斿洖
+        if (StringUtil.isNullOrEmpty(parentId)) {
+            // 绾垮垽鏂暟鎹簱涓殑琛ㄦ槸鍚︿负绌�,绌哄垯鐩存帴杩斿洖鍒濆缂栫爜
+            query1.eq(BaseFactory::getParentId, "").or().isNull(BaseFactory::getParentId);
+            query1.orderByDesc(BaseFactory::getOrgCode);
+            BaseFactoryList = BaseFactoryService.list(query1);
+            if (BaseFactoryList == null || BaseFactoryList.size() == 0) {
+                strArray[0] = YouBianCodeUtil.getNextYouBianCode(null);
+                strArray[1] = "1";
+                return strArray;
+            } else {
+                BaseFactory BaseFactory = BaseFactoryList.get(0);
+                oldOrgCode = BaseFactory.getOrgCode();
+                orgType = BaseFactory.getOrgType();
+                newOrgCode = YouBianCodeUtil.getNextYouBianCode(oldOrgCode);
+            }
+        } else {//鍙嶄箣鍒欐煡璇㈠嚭鎵�鏈夊悓绾х殑杞﹂棿,鑾峰彇缁撴灉鍚庢湁涓ょ鎯呭喌,鏈夊悓绾у拰娌℃湁鍚岀骇
+            // 灏佽鏌ヨ鍚岀骇鐨勬潯浠�
+            query.eq(BaseFactory::getParentId, parentId);
+            // 闄嶅簭鎺掑簭
+            query.orderByDesc(BaseFactory::getOrgCode);
+            // 鏌ヨ鍑哄悓绾т骇绾跨殑闆嗗悎
+            List<BaseFactory> parentList = BaseFactoryService.list(query);
+            // 鏌ヨ鍑虹埗绾т骇绾�
+            BaseFactory production = BaseFactoryService.getById(parentId);
+            // 鑾峰彇鐖剁骇浜х嚎鐨刢ode
+            String parentCode = production.getOrgCode();
+            // 鏍规嵁鐖剁骇浜х嚎绫诲瀷绠楀嚭褰撳墠浜х嚎鐨勭被鍨�
+            orgType = String.valueOf(Integer.valueOf(production.getOrgType()) + 1);
+            // 澶勭悊鍚岀骇浜х嚎涓簄ull鐨勬儏鍐�
+            if (parentList == null || parentList.size() == 0) {
+                // 鐩存帴鐢熸垚褰撳墠鐨勪骇绾跨紪鐮佸苟杩斿洖
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, null);
+            } else { //澶勭悊鏈夊悓绾т骇绾跨殑鎯呭喌
+                // 鑾峰彇鍚岀骇浜х嚎鐨勭紪鐮�,鍒╃敤宸ュ叿绫�
+                String subCode = parentList.get(0).getOrgCode();
+                // 杩斿洖鐢熸垚鐨勫綋鍓嶄骇绾跨紪鐮�
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, subCode);
+            }
+        }
+        // 杩斿洖鏈�缁堝皝瑁呬簡浜х嚎缂栫爜鍜屼骇绾跨被鍨嬬殑鏁扮粍
+        strArray[0] = newOrgCode;
+        strArray[1] = orgType;
+        return strArray;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactory.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactory.java
new file mode 100644
index 0000000..3641e0c
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactory.java
@@ -0,0 +1,98 @@
+package org.jeecg.modules.eam.base.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: 璁惧杞﹂棿绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("eam_base_factory")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="eam_base_factory", description="宸ュ巶寤烘ā")
+public class BaseFactory implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鐖剁骇id*/
+	@Excel(name = "鐖剁骇id", width = 15)
+    @ApiModelProperty(value = "鐖剁骇id")
+    private String parentId;
+	/**鏈烘瀯鍚嶇О*/
+	@Excel(name = "鏈烘瀯鍚嶇О", width = 15)
+    @ApiModelProperty(value = "鏈烘瀯鍚嶇О")
+    private String factoryName;
+    /**绠�绉�*/
+    @Excel(name = "绠�绉�", width = 15)
+    @ApiModelProperty(value = "绠�绉�")
+    private String shortName;
+	/**鍏徃/涓績/宸ュ尯/宸ユ缂栫爜*/
+	@Excel(name = "鍏徃/涓績/宸ュ尯/宸ユ缂栫爜", width = 15)
+    @ApiModelProperty(value = "鍏徃/涓績/宸ュ尯/宸ユ缂栫爜")
+    private String factoryCode;
+    /**鏈烘瀯绫诲瀷 1閮ㄩ棬 2瀛愰儴闂�*/
+    @Excel(name = "鏈烘瀯绫诲瀷 1閮ㄩ棬 2瀛愰儴闂�", width = 15)
+    @ApiModelProperty(value = "鏈烘瀯绫诲瀷 1閮ㄩ棬 2瀛愰儴闂�")
+    private String orgType;
+    /**鏈烘瀯缂栫爜*/
+    @Excel(name = "鏈烘瀯缂栫爜", width = 15)
+    @ApiModelProperty(value = "鏈烘瀯缂栫爜")
+    private String orgCode;
+	/**宸ュ巶鍒嗙被*/
+	@Excel(name = "宸ュ巶鍒嗙被", width = 15)
+    @ApiModelProperty(value = "宸ュ巶鍒嗙被")
+    private String factoryCategory;
+	/**宸ュ巶鍒嗙被*/
+	@Excel(name = "宸ュ巶鐘舵��", width = 15)
+    @ApiModelProperty(value = "宸ュ巶鐘舵��")
+    private String factoryStatus;
+	/**鎺掑簭*/
+	@Excel(name = "鎺掑簭", width = 15)
+    @ApiModelProperty(value = "鎺掑簭")
+    private Integer sorter;
+    /**澶囨敞*/
+    @Excel(name = "澶囨敞", width = 20)
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+	/**鍒犻櫎鐘舵�侊紙0锛屾甯革紝1宸插垹闄わ級*/
+	@Excel(name = "鍒犻櫎鐘舵�侊紙0锛屾甯革紝1宸插垹闄わ級", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鐘舵�侊紙0锛屾甯革紝1宸插垹闄わ級")
+    @TableLogic
+    private String delFlag;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃ユ湡*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒涘缓鏃ユ湡")
+    private Date createTime;
+	/**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+	/**鏇存柊鏃ユ湡*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
+    private Date updateTime;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactoryUser.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactoryUser.java
new file mode 100644
index 0000000..cfe2f91
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/BaseFactoryUser.java
@@ -0,0 +1,47 @@
+package org.jeecg.modules.eam.base.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: 璁惧杞﹂棿绠$悊涓庣敤鎴�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Data
+@TableName("eam_base_factory_user")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="eam_base_factory_user瀵硅薄", description="宸ュ巶寤烘ā涓庣敤鎴�")
+public class BaseFactoryUser implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**璁惧杞﹂棿绠$悊id*/
+	@Excel(name = "宸ュ巶寤烘āid", width = 15)
+    @ApiModelProperty(value = "宸ュ巶寤烘āid")
+    private String factoryId;
+	/**鐢ㄦ埛id*/
+	@Excel(name = "鐢ㄦ埛id", width = 15)
+    @ApiModelProperty(value = "鐢ㄦ埛id")
+    private String userId;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryMapper.java
new file mode 100644
index 0000000..b8b1a56
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryMapper.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.eam.base.mapper;
+
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+public interface BaseFactoryMapper extends BaseMapper<BaseFactory> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryUserMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryUserMapper.java
new file mode 100644
index 0000000..540e1b3
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/BaseFactoryUserMapper.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.eam.base.mapper;
+
+import org.jeecg.modules.eam.base.entity.BaseFactoryUser;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊涓庣敤鎴�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+public interface BaseFactoryUserMapper extends BaseMapper<BaseFactoryUser> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryMapper.xml
new file mode 100644
index 0000000..e488574
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.eam.base.mapper.BaseFactoryMapper">
+
+</mapper>
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryUserMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryUserMapper.xml
new file mode 100644
index 0000000..4362d52
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/BaseFactoryUserMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.eam.base.mapper.BaseFactoryUserMapper">
+
+</mapper>
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseFactoryTreeModel.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseFactoryTreeModel.java
new file mode 100644
index 0000000..6f8f16f
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseFactoryTreeModel.java
@@ -0,0 +1,126 @@
+package org.jeecg.modules.eam.base.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author: LiuS
+ * @create: 2023-03-23 14:16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "璁惧杞﹂棿绠$悊鏍戠粨鏋勬暟鎹疄浣�", description = "璁惧杞﹂棿绠$悊")
+public class EamBaseFactoryTreeModel implements Serializable {
+
+    private static final long serialVersionUID = -1309711609760828658L;
+
+    /**
+     * 瀵瑰簲BaseFactory涓殑id瀛楁,鍓嶇鏁版嵁鏍戜腑鐨刱ey
+     */
+    private String key;
+
+    /**
+     * 瀵瑰簲BaseFactory涓殑id瀛楁,鍓嶇鏁版嵁鏍戜腑鐨剉alue
+     */
+    private String value;
+
+    /**
+     * 瀵瑰簲depart_name瀛楁,鍓嶇鏁版嵁鏍戜腑鐨則itle
+     */
+    private String title;
+
+    private boolean isLeaf;
+
+    /**
+     * 绫诲瀷
+     */
+    private Integer type;
+    //浠ヤ笅鎵�鏈夊瓧娈靛潎涓嶣aseFactory鐩稿悓
+
+    /**涓婚敭*/
+    private String id;
+    /**鐖剁骇id*/
+    private String parentId;
+    /**鏈烘瀯鍚嶇О*/
+    private String factoryName;
+    /**绠�绉�*/
+    private String shortName;
+    /**鍏徃/涓績/宸ュ尯/宸ユ缂栫爜*/
+    private String factoryCode;
+    /**鏈烘瀯绫诲瀷 1閮ㄩ棬 2瀛愰儴闂�*/
+    private String orgType;
+    /**鏈烘瀯缂栫爜*/
+    private String orgCode;
+    /**宸ュ巶鍒嗙被*/
+    private String factoryCategory;
+    /**宸ュ巶鍒嗙被*/
+    private String factoryStatus;
+    /**鎺掑簭*/
+    private Integer sorter;
+    /**澶囨敞*/
+    private String remark;
+    /**鍒犻櫎鐘舵�侊紙0锛屾甯革紝1宸插垹闄わ級*/
+    private String delFlag;
+    /**鍒涘缓浜�*/
+    private String createBy;
+    /**鍒涘缓鏃ユ湡*/
+    private Date createTime;
+    /**鏇存柊浜�*/
+    private String updateBy;
+    /**鏇存柊鏃ユ湡*/
+    private Date updateTime;
+
+    /**
+     * 浜х嚎璐熻矗浜篿ds
+     */
+    private String directorUserIds;
+
+    private List<EamBaseFactoryTreeModel> children = new ArrayList<>();
+
+    public EamBaseFactoryTreeModel() {
+
+    }
+
+    /**
+     * 灏咮aseFactory瀵硅薄杞崲鎴怑amBaseFactoryTreeModel瀵硅薄
+     *
+     * @param BaseFactory
+     */
+    public EamBaseFactoryTreeModel(BaseFactory BaseFactory) {
+        this.key = BaseFactory.getId();
+        this.value = BaseFactory.getId();
+        this.title= BaseFactory.getFactoryName();
+        this.factoryName = BaseFactory.getFactoryName();
+        this.id = BaseFactory.getId();
+        this.parentId = BaseFactory.getParentId();
+        this.shortName = BaseFactory.getShortName();
+        this.orgType = BaseFactory.getOrgType();
+        this.orgCode = BaseFactory.getOrgCode();
+        this.sorter=BaseFactory.getSorter();
+        this.factoryCode=BaseFactory.getFactoryCode();
+        this.factoryStatus=BaseFactory.getFactoryStatus();
+        this.factoryCategory=BaseFactory.getFactoryCategory();
+        this.remark = BaseFactory.getRemark();
+        this.delFlag = BaseFactory.getDelFlag();
+        this.createBy = BaseFactory.getCreateBy();
+        this.createTime = BaseFactory.getCreateTime();
+        this.updateBy = BaseFactory.getUpdateBy();
+        this.updateTime = BaseFactory.getUpdateTime();
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/WorkShopIdModel.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/WorkShopIdModel.java
new file mode 100644
index 0000000..609a4a2
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/WorkShopIdModel.java
@@ -0,0 +1,71 @@
+package org.jeecg.modules.eam.base.model;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 浜х嚎琛� 灏佽鏍戠粨鏋勭殑浜х嚎鐨勫悕绉扮殑瀹炰綋绫�
+ *
+ * @author: LiuS
+ * @create: 2023-03-23 15:15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class WorkShopIdModel implements Serializable {
+
+    private static final long serialVersionUID = 6403075134223338239L;
+
+    /**
+     * 涓婚敭ID
+     */
+    private String key;
+
+    /**
+     * 涓婚敭ID
+     */
+    private String value;
+
+    /**
+     * 浜х嚎鍚嶇О
+     */
+    private String title;
+
+    /**
+     * 鏄惁鍙��
+     */
+    private Boolean selectable = true;
+
+    List<WorkShopIdModel> children = new ArrayList<>();
+
+    /**
+     * 灏咵amBaseFactoryTreeModel鐨勯儴鍒嗘暟鎹斁鍦ㄨ瀵硅薄褰撲腑
+     *
+     * @param treeModel
+     * @return
+     */
+    public WorkShopIdModel convert(EamBaseFactoryTreeModel treeModel) {
+        this.key = treeModel.getId();
+        this.value = treeModel.getId();
+        this.title = treeModel.getFactoryName();
+        return this;
+    }
+
+    /**
+     * 璇ユ柟娉曚负鐢ㄦ埛浜х嚎鐨勫疄鐜扮被鎵�浣跨敤
+     *
+     * @return
+     */
+    public WorkShopIdModel convertByUserProduction(BaseFactory BaseFactory) {
+        this.key = BaseFactory.getId();
+        this.value = BaseFactory.getId();
+        this.title = BaseFactory.getFactoryName();
+        return this;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryService.java
new file mode 100644
index 0000000..396fd16
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryService.java
@@ -0,0 +1,59 @@
+package org.jeecg.modules.eam.base.service;
+
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.eam.base.model.EamBaseFactoryTreeModel;
+import org.jeecg.modules.eam.base.model.WorkShopIdModel;
+
+import java.util.List;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+public interface IBaseFactoryService extends IService<BaseFactory> {
+
+    /**
+     * 鏌ヨ鎵�鏈変骇绾夸俊鎭紝骞跺垎鑺傜偣杩涜鏄剧ず
+     */
+    List<EamBaseFactoryTreeModel> queryTreeList();
+
+
+    /**
+     * 鏌ヨ鎵�鏈変骇绾夸俊鎭紝骞跺垎鑺傜偣杩涜鏄剧ず
+     */
+    List<EamBaseFactoryTreeModel> queryTreeList(String ids);
+
+
+    /**
+     * 鏍规嵁鍏抽敭瀛楁悳绱㈢浉鍏崇殑浜х嚎鏁版嵁
+     */
+    List<EamBaseFactoryTreeModel> searchByKeyWord(String keyWord);
+
+    /**
+     * 淇濆瓨浜х嚎鏁版嵁
+     */
+    void saveBaseFactoryData(BaseFactory BaseFactory);
+
+    /**
+     * 鏌ヨ鎵�鏈夐儴闂―epartId淇℃伅,骞跺垎鑺傜偣杩涜鏄剧ず
+     */
+    List<WorkShopIdModel> queryProductionIdTreeList();
+
+    /**
+     * 鏇存柊浜х嚎鏁版嵁
+     */
+    boolean updateBaseFactoryDataById(BaseFactory BaseFactory);
+
+    /**
+     * 鏍规嵁浜х嚎id鍒犻櫎骞跺垹闄ゅ叾鍙兘瀛樺湪鐨勫瓙绾т骇绾�
+     */
+    boolean delete(String id);
+
+    /**
+     * 鏍规嵁浜х嚎id鎵归噺鍒犻櫎骞跺垹闄ゅ叾鍙兘瀛樺湪鐨勫瓙绾т骇绾�
+     */
+    void deleteBatchWithChildren(List<String> ids);
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryUserService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryUserService.java
new file mode 100644
index 0000000..a280fdc
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IBaseFactoryUserService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.eam.base.service;
+
+import org.jeecg.modules.eam.base.entity.BaseFactoryUser;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊涓庣敤鎴�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+public interface IBaseFactoryUserService extends IService<BaseFactoryUser> {
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java
new file mode 100644
index 0000000..8507439
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java
@@ -0,0 +1,222 @@
+package org.jeecg.modules.eam.base.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.FillRuleConstant;
+import org.jeecg.common.util.FillRuleUtil;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import org.jeecg.modules.eam.base.entity.BaseFactoryUser;
+import org.jeecg.modules.eam.base.mapper.BaseFactoryMapper;
+import org.jeecg.modules.eam.base.mapper.BaseFactoryUserMapper;
+import org.jeecg.modules.eam.base.model.EamBaseFactoryTreeModel;
+import org.jeecg.modules.eam.base.model.WorkShopIdModel;
+import org.jeecg.modules.eam.base.service.IBaseFactoryService;
+import org.jeecg.modules.eam.base.controller.util.FindsBaseFactorysChildrenUtil;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.mapper.SysUserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Service("BaseFactoryServiceImpl")
+public class BaseFactoryServiceImpl extends ServiceImpl<BaseFactoryMapper, BaseFactory> implements IBaseFactoryService {
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private BaseFactoryUserMapper BaseFactoryUserMapper;
+
+    /**
+     * queryTreeList 瀵瑰簲 queryTreeList 鏌ヨ鎵�鏈夌殑璁惧杞﹂棿绠$悊鏁版嵁,浠ユ爲缁撴瀯褰㈠紡鍝嶅簲缁欏墠绔�
+     */
+    @Override
+    public List<EamBaseFactoryTreeModel> queryTreeList() {
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<BaseFactory>();
+        query.eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
+        query.orderByAsc(BaseFactory::getSorter);
+        List<BaseFactory> list = this.list(query);
+        //璁剧疆鐢ㄦ埛id锛岃鍓嶅彴鏄剧ず
+        this.setUserIdsByProList(list);
+        //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁
+        return FindsBaseFactorysChildrenUtil.wrapTreeDataToTreeList(list);
+    }
+
+    /**
+     * queryTreeList 鏍规嵁璁惧杞﹂棿绠$悊id鏌ヨ,鍓嶇鍥炴樉璋冪敤
+     */
+    @Override
+    public List<EamBaseFactoryTreeModel> queryTreeList(String ids) {
+        List<EamBaseFactoryTreeModel> listResult = new ArrayList<>();
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<BaseFactory>();
+        query.eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
+        if (oConvertUtils.isNotEmpty(ids)) {
+            query.in(true, BaseFactory::getId, ids.split(","));
+        }
+        query.orderByAsc(BaseFactory::getSorter);
+        List<BaseFactory> list = this.list(query);
+        for (BaseFactory production : list) {
+            if (production.getRemark().isEmpty()){
+                production.setRemark("");
+            }
+            listResult.add(new EamBaseFactoryTreeModel(production));
+        }
+        return listResult;
+    }
+
+    /**
+     * 鏍规嵁鍏抽敭瀛楁悳绱㈢浉鍏崇殑閮ㄩ棬鏁版嵁
+     */
+    @Override
+    public List<EamBaseFactoryTreeModel> searchByKeyWord(String keyWord) {
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
+        List<EamBaseFactoryTreeModel> newList = new ArrayList<>();
+        query.like(BaseFactory::getFactoryName, keyWord);
+        EamBaseFactoryTreeModel model = new EamBaseFactoryTreeModel();
+        List<BaseFactory> productionList = this.list(query);
+        if (!productionList.isEmpty()) {
+            for (BaseFactory BaseFactory : productionList) {
+                model = new EamBaseFactoryTreeModel(BaseFactory);
+                model.setChildren(null);
+                newList.add(model);
+            }
+            return newList;
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     * saveProductionData 瀵瑰簲 add 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveBaseFactoryData(BaseFactory BaseFactory) {
+        if (BaseFactory != null) {
+            if (BaseFactory.getParentId() == null) {
+                BaseFactory.setParentId("");
+            }
+            BaseFactory.setId(IdWorker.getIdStr(BaseFactory));
+            // 鍏堝垽鏂瀵硅薄鏈夋棤鐖剁骇ID,鏈夊垯鎰忓懗鐫�涓嶆槸鏈�楂樼骇,鍚﹀垯鎰忓懗鐫�鏄渶楂樼骇
+            // 鑾峰彇鐖剁骇ID
+            String parentId = BaseFactory.getParentId();
+            JSONObject formData = new JSONObject();
+            formData.put("parentId",parentId);
+            String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.WORKSHOP,formData);
+            BaseFactory.setOrgCode(codeArray[0]);
+            String orgType = codeArray[1];
+            BaseFactory.setOrgType(String.valueOf(orgType));
+            BaseFactory.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
+            this.save(BaseFactory);
+        }
+    }
+
+    @Override
+    public List<WorkShopIdModel> queryProductionIdTreeList() {
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
+        query.eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
+        query.orderByAsc(BaseFactory::getSorter);
+        List<BaseFactory> list = this.list(query);
+        //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁
+        return FindsBaseFactorysChildrenUtil.wrapTreeDataToProductionIdTreeList(list);
+    }
+
+
+    /**
+     * updateProductionDataById 瀵瑰簲 edit 鏍规嵁璁惧杞﹂棿绠$悊涓婚敭鏉ユ洿鏂板搴旂殑璁惧杞﹂棿绠$悊鏁版嵁
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateBaseFactoryDataById(BaseFactory BaseFactory) {
+        if (BaseFactory != null) {
+            this.updateById(BaseFactory);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 鏍规嵁璁惧杞﹂棿绠$悊id鍒犻櫎骞跺垹闄ゅ叾鍙兘瀛樺湪鐨勫瓙绾ц澶囪溅闂寸鐞�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean delete(String id) {
+        List<String> idList = new ArrayList<>();
+        idList.add(id);
+        this.checkChildrenExists(id, idList);
+        boolean result = this.removeByIds(idList);
+        //鏍规嵁璁惧杞﹂棿绠$悊id鍒犻櫎鐢ㄦ埛涓庤澶囪溅闂寸鐞嗗叧绯�
+        BaseFactoryUserMapper.delete(new LambdaQueryWrapper<BaseFactoryUser>().in(BaseFactoryUser::getFactoryId, idList));
+        return result;
+    }
+
+    /**
+     * 鏍规嵁璁惧杞﹂棿绠$悊id鎵归噺鍒犻櫎骞跺垹闄ゅ叾鍙兘瀛樺湪鐨勫瓙绾ц澶囪溅闂寸鐞�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteBatchWithChildren(List<String> ids) {
+        List<String> idList = new ArrayList<>();
+        for (String id : ids) {
+            idList.add(id);
+            this.checkChildrenExists(id, idList);
+        }
+        this.removeByIds(idList);
+        //鏍规嵁璁惧杞﹂棿绠$悊id鍒犻櫎鐢ㄦ埛涓庤澶囪溅闂寸鐞嗗叧绯�
+        BaseFactoryUserMapper.delete(new LambdaQueryWrapper<BaseFactoryUser>().in(BaseFactoryUser::getFactoryId, idList));
+    }
+
+    /**
+     * 閫氳繃璁惧杞﹂棿绠$悊闆嗗悎涓鸿澶囪溅闂寸鐞嗚缃敤鎴穒d锛岀敤浜庡墠鍙板睍绀�
+     */
+    private void setUserIdsByProList(List<BaseFactory> productionList) {
+        //鏌ヨ璐熻矗閮ㄩ棬涓嶄负绌虹殑鎯呭喌
+        LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>();
+        query.isNotNull(SysUser::getDepartIds);
+        List<SysUser> users = sysUserMapper.selectList(query);
+        Map<String, Object> map = new HashMap(5);
+        //鍏堝惊鐜竴閬嶆壘鍒颁笉鍚岀殑璐熻矗璁惧杞﹂棿绠$悊id
+        for (SysUser user : users) {
+            String productionIds = user.getProductionIds();
+            if (StringUtils.isNotBlank(productionIds)) {
+                String[] productionIdArray = productionIds.split(",");
+                for (String productionId : productionIdArray) {
+                    if (map.containsKey(productionId)) {
+                        String userIds = map.get(productionId) + "," + user.getId();
+                        map.put(productionId, userIds);
+                    } else {
+                        map.put(productionId, user.getId());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * delete 鏂规硶璋冪敤 閫掑綊鏌ユ壘瀛愰泦id
+     */
+    private void checkChildrenExists(String id, List<String> idList) {
+        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
+        query.eq(BaseFactory::getParentId, id);
+        List<BaseFactory> BaseFactoryList = this.list(query);
+        if (BaseFactoryList != null && !BaseFactoryList.isEmpty()) {
+            for (BaseFactory BaseFactory : BaseFactoryList) {
+                idList.add(BaseFactory.getId());
+                this.checkChildrenExists(BaseFactory.getId(), idList);
+            }
+        }
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryUserServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryUserServiceImpl.java
new file mode 100644
index 0000000..9f300b2
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryUserServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.eam.base.service.impl;
+
+import org.jeecg.modules.eam.base.entity.BaseFactoryUser;
+import org.jeecg.modules.eam.base.mapper.BaseFactoryUserMapper;
+import org.jeecg.modules.eam.base.service.IBaseFactoryUserService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊涓庣敤鎴�
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Service
+public class BaseFactoryUserServiceImpl extends ServiceImpl<BaseFactoryUserMapper, BaseFactoryUser> implements IBaseFactoryUserService {
+
+}
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
index e6eba38..1ea2fdb 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
@@ -69,7 +69,7 @@
 	 * @param workShopDepartId 璁惧杞﹂棿绠$悊Id
 	 * @return
 	 */
-	IPage<SysUser> getUserByWorkShopDepartId(Page page, @Param("workShopDepartId") String workShopDepartId);
+	IPage<SysUser> getUserByWorkShopDepartId(Page page, @Param("workShopDepartId") String workShopDepartId, @Param("username") String username);
 
 	/**
 	 * 鏍规嵁鐢ㄦ埛鍚嶈缃儴闂↖D
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
index 4a9892b..9a75b55 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
@@ -232,5 +232,8 @@
 	</select>
 	<select id="getUserByWorkShopDepartId" resultType="org.jeecg.modules.system.entity.SysUser">
 		select * from sys_user where del_flag = 0 and id in (select user_id from mom_eam_work_shop_depart_user where work_shop_depart_id = #{workShopDepartId})
+		<if test="username!=null and username!=''">
+			and username = #{username}
+		</if>
 	</select>
 </mapper>
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
index 0f15266..679245d 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -169,7 +169,7 @@
 	 * @param workShopDepartId 璁惧杞﹂棿绠$悊Id
 	 * @return
 	 */
-	public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String workShopDepartId);
+	public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String workShopDepartId,String username);
 
 
 	/**
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index 96ad5de..71a4e5a 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -363,8 +363,8 @@
 	 * @param workShopDepartId 璁惧杞﹂棿绠$悊Id
 	 * @return
 	 */
-	public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String workShopDepartId){
-		return userMapper.getUserByWorkShopDepartId(page,workShopDepartId);
+	public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String workShopDepartId,String username){
+		return userMapper.getUserByWorkShopDepartId(page,workShopDepartId,username);
 	}
 
 

--
Gitblit v1.9.3