From d465f6537bda4c5b3844a15b73badf704f44c9a1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期一, 07 四月 2025 16:01:16 +0800
Subject: [PATCH] art: 设备管理-用户选择-根据岗位选择用户

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/UserSelector.java                 |   18 ++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamWeekMaintenanceOrderController.java          |   15 ++++-
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java       |   47 +++++++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java         |   10 +++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java |   22 +++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrder.java                        |    3 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java               |    7 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamUserSelectController.java                    |   51 +++++++++++++++++
 8 files changed, 168 insertions(+), 5 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamUserSelectController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamUserSelectController.java
new file mode 100644
index 0000000..4367c5d
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamUserSelectController.java
@@ -0,0 +1,51 @@
+package org.jeecg.modules.eam.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.eam.entity.EamEquipment;
+import org.jeecg.modules.eam.service.IEamEquipmentService;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.system.vo.UserSelector;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @Description: 鐢ㄦ埛閫夋嫨
+ * @Author: jeecg-boot
+ * @Date: 2025-03-19
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "鐢ㄦ埛閫夋嫨")
+@RestController
+@RequestMapping("/eam/user_select")
+public class EamUserSelectController {
+
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private IEamEquipmentService eamEquipmentService;
+
+    @ApiOperation(value = "鐢ㄦ埛閫夋嫨-閫夋嫨鎿嶄綔浜哄垪琛ㄦ煡璇�", notes = "鐢ㄦ埛閫夋嫨-閫夋嫨鎿嶄綔浜哄垪琛ㄦ煡璇�")
+    @GetMapping(value = "/list")
+    public Result<?> selectOperatorList(@RequestParam(required = false, value = "equipmentId") String equipmentId,
+                                        @RequestParam("positionCode") String positionCode) {
+        String productionId = null;
+        if (StringUtils.isNotBlank(equipmentId)) {
+            EamEquipment equipment = eamEquipmentService.getById(equipmentId);
+            if(equipment != null) {
+                productionId = equipment.getOrgId();
+            }
+        }
+        List<UserSelector> list = sysUserService.selectOperatorList(equipmentId, productionId, positionCode);
+        return Result.ok(list);
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamWeekMaintenanceOrderController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamWeekMaintenanceOrderController.java
index da13f7c..51ee76c 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamWeekMaintenanceOrderController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamWeekMaintenanceOrderController.java
@@ -86,14 +86,23 @@
     /**
      * 缂栬緫
      *
-     * @param eamWeekMaintenanceOrder
+     * @param request
      * @return
      */
     @AutoLog(value = "鍛ㄤ繚宸ュ崟-缂栬緫")
     @ApiOperation(value = "鍛ㄤ繚宸ュ崟-缂栬緫", notes = "鍛ㄤ繚宸ュ崟-缂栬緫")
     @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
-    public Result<?> edit(@RequestBody EamWeekMaintenanceOrder eamWeekMaintenanceOrder) {
-        eamWeekMaintenanceOrderService.updateById(eamWeekMaintenanceOrder);
+    public Result<?> edit(@RequestBody EamWeekMaintenanceRequest request) {
+        if (request == null) {
+            return Result.error("娣诲姞鐨勫璞′笉鑳戒负绌猴紒");
+        }
+        if (CollectionUtil.isEmpty(request.getTableDetailList())) {
+            return Result.error("淇濆吇椤逛笉鑳戒负绌猴紒");
+        }
+        boolean b = eamWeekMaintenanceOrderService.editWeekMaintenance(request);
+        if (!b) {
+            return Result.error("缂栬緫澶辫触锛�");
+        }
         return Result.OK("缂栬緫鎴愬姛!");
     }
 
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrder.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrder.java
index 56c964e..2a8b2a6 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrder.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrder.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.eam.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -104,6 +105,8 @@
 
 
 	//鍒楄〃灞曠ず
+	@TableField(exist = false)
 	private String equipmentCode;
+	@TableField(exist = false)
 	private String equipmentName;
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java
index 9210ebc..b2c6d8e 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamWeekMaintenanceOrderService.java
@@ -29,4 +29,11 @@
      * @return
      */
     IPage<EamWeekMaintenanceOrder> queryPageList(Page<EamWeekMaintenanceOrder> page, EamWeekMaintenanceQuery query);
+
+    /**
+     * 鍛ㄤ繚缂栬緫鐘舵��
+     * @param request
+     * @return
+     */
+    boolean editWeekMaintenance(EamWeekMaintenanceRequest request);
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java
index 4cc12f2..b8e533c 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamWeekMaintenanceOrderServiceImpl.java
@@ -9,12 +9,13 @@
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.DataBaseConstant;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.eam.constant.MaintenanceStatusEnum;
 import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
-import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder;
+import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrderDetail;
 import org.jeecg.modules.eam.mapper.EamWeekMaintenanceOrderMapper;
 import org.jeecg.modules.eam.request.EamWeekMaintenanceQuery;
 import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest;
@@ -25,9 +26,10 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 鍛ㄤ繚宸ュ崟
@@ -121,4 +123,45 @@
 
         return eamWeekMaintenanceOrderMapper.queryPageList(page, queryWrapper);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean editWeekMaintenance(EamWeekMaintenanceRequest request) {
+        EamWeekMaintenanceOrder entity = eamWeekMaintenanceOrderMapper.selectById(request.getId());
+        if(entity == null){
+            throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�");
+        }
+        if(!MaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())){
+            throw new JeecgBootException("鍙湁寰呬繚鍏荤姸鎬佺殑鏁版嵁鎵嶅彲缂栬緫锛�");
+        }
+        entity.setMaintenanceDate(request.getMaintenanceDate());
+        entity.setOperator(request.getOperator());
+        entity.setRemark(request.getRemark());
+
+        eamWeekMaintenanceOrderMapper.updateById(entity);
+        //澶勭悊璇︽儏
+        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
+            List<EamWeekMaintenanceOrderDetail> addList = new ArrayList<>();
+            List<EamWeekMaintenanceOrderDetail> updateList = new ArrayList<>();
+            request.getTableDetailList().forEach(tableDetail -> {
+                tableDetail.setOrderId(entity.getId());
+                if(tableDetail.getId() == null){
+                    addList.add(tableDetail);
+                }else {
+                    updateList.add(tableDetail);
+                }
+            });
+            if(CollectionUtil.isNotEmpty(addList)){
+                eamWeekMaintenanceOrderDetailService.saveBatch(addList);
+            }
+            if(CollectionUtil.isNotEmpty(updateList)){
+                eamWeekMaintenanceOrderDetailService.updateBatchById(updateList);
+            }
+        }
+        if(CollectionUtil.isNotEmpty(request.getRemoveDetailList())) {
+            List<String> ids = request.getRemoveDetailList().stream().map(EamWeekMaintenanceOrderDetail::getId).collect(Collectors.toList());
+            eamWeekMaintenanceOrderDetailService.removeBatchByIds(ids);
+        }
+        return true;
+    }
 }
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 751395e..127d34d 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
@@ -10,6 +10,7 @@
 import org.jeecg.modules.system.entity.SysRoleIndex;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
+import org.jeecg.modules.system.vo.UserSelector;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collection;
@@ -320,4 +321,13 @@
 	List<String> getUserByRoleCode(String roleCode);
 
 	List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId);
+
+	/**
+	 * 閫夋嫨鐢ㄦ埛
+	 * @param equipmentId 閫夋嫨鐨勮澶嘔D
+	 * @param productionId 閫夋嫨鐨勮溅闂碔D
+	 * @param positionCode 宀椾綅缂栧彿
+	 * @return
+	 */
+    List<UserSelector> selectOperatorList(String equipmentId, String productionId, String positionCode);
 }
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 1434c07..55e48fa 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
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
@@ -26,6 +27,7 @@
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.vo.MdcUserProVo;
 import org.jeecg.modules.system.vo.SysUserDepVo;
+import org.jeecg.modules.system.vo.UserSelector;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
@@ -742,4 +744,24 @@
 	public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) {
 		return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId);
 	}
+
+	@Override
+	public List<UserSelector> selectOperatorList(String equipmentId, String productionId, String positionCode) {
+		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(SysUser::getPost, positionCode);
+		if(StringUtils.isNotBlank(equipmentId)) {
+			queryWrapper.isNull(SysUser::getEquipmentIds);
+			queryWrapper.or().eq(SysUser::getEquipmentIds, "");
+			queryWrapper.or().like(SysUser::getEquipmentIds, equipmentId);
+		}
+		if(StringUtils.isNotBlank(productionId)) {
+			queryWrapper.exists("select 1 from mdc_user_production t where t.user_id=id and t.pro_id={0}", productionId);
+		}
+		queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0);
+		queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1);
+		queryWrapper.orderByDesc(SysUser::getId);
+		List<SysUser> sysUsers = userMapper.selectList(queryWrapper);
+		List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList());
+		return collect;
+	}
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/UserSelector.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/UserSelector.java
new file mode 100644
index 0000000..6dad32a
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/UserSelector.java
@@ -0,0 +1,18 @@
+package org.jeecg.modules.system.vo;
+
+import lombok.Data;
+
+@Data
+public class UserSelector {
+    private String id;
+    private String username;
+    private String realname;
+
+    public UserSelector() {}
+
+    public UserSelector(String id, String username, String realname) {
+        this.id = id;
+        this.username = username;
+        this.realname = realname;
+    }
+}

--
Gitblit v1.9.3