diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsWarehouseController.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsWarehouseController.java index 4fed7d3..db1a235 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsWarehouseController.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/controller/AmsWarehouseController.java @@ -18,9 +18,11 @@ import com.ruoyi.asset.service.IAmsWarehouseService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.system.service.ISysDeptService; +import com.ruoyi.system.service.ISysUserService; /** * 仓库管理Controller @@ -40,11 +42,15 @@ public class AmsWarehouseController extends BaseController @Autowired private ISysDeptService sysDeptService; + @Autowired + private ISysUserService sysUserService; + @RequiresPermissions("asset:warehouse:view") @GetMapping() public String warehouse(ModelMap mmap) { mmap.put("deptList", selectNormalDeptList()); + mmap.put("userList", selectNormalUserList()); return prefix + "/warehouse"; } @@ -95,6 +101,7 @@ public class AmsWarehouseController extends BaseController public String add(ModelMap mmap) { mmap.put("deptList", selectNormalDeptList()); + mmap.put("userList", selectNormalUserList()); return prefix + "/add"; } @@ -125,6 +132,7 @@ public class AmsWarehouseController extends BaseController AmsWarehouse amsWarehouse = amsWarehouseService.selectAmsWarehouseByWarehouseId(warehouseId); mmap.put("amsWarehouse", amsWarehouse); mmap.put("deptList", selectNormalDeptList()); + mmap.put("userList", selectNormalUserList()); return prefix + "/edit"; } @@ -166,4 +174,14 @@ public class AmsWarehouseController extends BaseController dept.setStatus(UserConstants.DEPT_NORMAL); return sysDeptService.selectDeptList(dept); } + + /** + * 只提供正常用户给负责人选择,负责人字段当前保存的是用户名称快照。 + */ + private List selectNormalUserList() + { + SysUser user = new SysUser(); + user.setStatus(UserConstants.NORMAL); + return sysUserService.selectUserList(user); + } } diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/domain/AmsWarehouse.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/domain/AmsWarehouse.java index e7a6f30..c56651b 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/domain/AmsWarehouse.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/domain/AmsWarehouse.java @@ -37,6 +37,9 @@ public class AmsWarehouse extends BaseEntity @Excel(name = "仓库地址") private String warehouseAddress; + /** 负责人用户ID */ + private Long managerUserId; + /** 负责人 */ @Excel(name = "负责人") private String managerName; @@ -112,6 +115,16 @@ public class AmsWarehouse extends BaseEntity return warehouseAddress; } + public void setManagerUserId(Long managerUserId) + { + this.managerUserId = managerUserId; + } + + public Long getManagerUserId() + { + return managerUserId; + } + public void setManagerName(String managerName) { this.managerName = managerName; @@ -161,6 +174,7 @@ public class AmsWarehouse extends BaseEntity .append("manageDeptId", getManageDeptId()) .append("manageDeptName", getManageDeptName()) .append("warehouseAddress", getWarehouseAddress()) + .append("managerUserId", getManagerUserId()) .append("managerName", getManagerName()) .append("contactPhone", getContactPhone()) .append("enabled", getEnabled()) diff --git a/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsWarehouseServiceImpl.java b/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsWarehouseServiceImpl.java index 6e87cef..4b734d3 100644 --- a/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsWarehouseServiceImpl.java +++ b/ruoyi-asset/src/main/java/com/ruoyi/asset/service/impl/AmsWarehouseServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.asset.service.impl; import java.util.List; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; @@ -13,6 +14,7 @@ import com.ruoyi.asset.domain.AmsWarehouse; import com.ruoyi.asset.service.IAmsWarehouseService; import com.ruoyi.common.core.text.Convert; import com.ruoyi.system.service.ISysDeptService; +import com.ruoyi.system.service.ISysUserService; /** * 仓库管理Service业务层处理 @@ -33,6 +35,9 @@ public class AmsWarehouseServiceImpl implements IAmsWarehouseService @Autowired private ISysDeptService sysDeptService; + @Autowired + private ISysUserService sysUserService; + /** * 查询仓库管理 * @@ -93,6 +98,7 @@ public class AmsWarehouseServiceImpl implements IAmsWarehouseService amsWarehouse.setEnabled(ENABLED_YES); } fillManageDeptName(amsWarehouse); + fillManagerUserSnapshot(amsWarehouse); amsWarehouse.setDelFlag(DEL_FLAG_NORMAL); amsWarehouse.setCreateTime(DateUtils.getNowDate()); return amsWarehouseMapper.insertAmsWarehouse(amsWarehouse); @@ -108,6 +114,7 @@ public class AmsWarehouseServiceImpl implements IAmsWarehouseService public int updateAmsWarehouse(AmsWarehouse amsWarehouse) { fillManageDeptName(amsWarehouse); + fillManagerUserSnapshot(amsWarehouse); amsWarehouse.setUpdateTime(DateUtils.getNowDate()); return amsWarehouseMapper.updateAmsWarehouse(amsWarehouse); } @@ -175,4 +182,28 @@ public class AmsWarehouseServiceImpl implements IAmsWarehouseService } amsWarehouse.setManageDeptName(deptList.get(0).getDeptName()); } + + /** + * 负责人以用户ID为准,姓名只做快照,避免同名用户导致仓库负责人关联错误。 + */ + private void fillManagerUserSnapshot(AmsWarehouse amsWarehouse) + { + if (StringUtils.isNull(amsWarehouse.getManagerUserId())) + { + amsWarehouse.setManagerName(null); + amsWarehouse.setContactPhone(null); + return; + } + + SysUser user = sysUserService.selectUserById(amsWarehouse.getManagerUserId()); + if (StringUtils.isNull(user) + || !StringUtils.equals(UserConstants.NORMAL, user.getStatus()) + || !StringUtils.equals(DEL_FLAG_NORMAL, user.getDelFlag())) + { + throw new ServiceException("负责人不存在或已停用"); + } + amsWarehouse.setManagerName(user.getUserName()); + // 联系电话跟随负责人手机号,避免前端手工填写导致负责人和电话不一致。 + amsWarehouse.setContactPhone(StringUtils.isEmpty(user.getPhonenumber()) ? null : user.getPhonenumber()); + } } diff --git a/ruoyi-asset/src/main/resources/mapper/asset/AmsWarehouseMapper.xml b/ruoyi-asset/src/main/resources/mapper/asset/AmsWarehouseMapper.xml index 02c9b6c..50bbdec 100644 --- a/ruoyi-asset/src/main/resources/mapper/asset/AmsWarehouseMapper.xml +++ b/ruoyi-asset/src/main/resources/mapper/asset/AmsWarehouseMapper.xml @@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -23,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select warehouse_id, warehouse_code, warehouse_name, manage_dept_id, manage_dept_name, warehouse_address, manager_name, contact_phone, enabled, create_by, create_time, update_by, update_time, remark, del_flag from ams_warehouse + select warehouse_id, warehouse_code, warehouse_name, manage_dept_id, manage_dept_name, warehouse_address, manager_user_id, manager_name, contact_phone, enabled, create_by, create_time, update_by, update_time, remark, del_flag from ams_warehouse + @@ -53,7 +57,7 @@
- +
@@ -79,8 +83,19 @@ +