From 224a758f11b99e1e57aca264b3124dfc1476f779 Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 16 Jul 2025 14:56:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(smartfactory):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7=E5=B7=A5?= =?UTF-8?q?=E5=8E=82=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增接口用于获取登录用户所属工厂列表,无工厂类型限制。主要变化如下: - 在 FactoryInfoController 中添加 getFactoryALlListByLoginUser 方法 - 在 FactoryInfoService接口中定义 getFactoryALlListByLoginUser 方法 - 在 FactoryInfoServiceImpl 中实现 getFactoryALlListByLoginUser 方法 - 修改 FactoryInfoMapper 接口,增加 selectListByType 方法的重载版本 --- .../factoryinfo/FactoryInfoController.java | 11 ++- .../mysql/factoryinfo/FactoryInfoMapper.java | 7 +- .../factoryinfo/FactoryInfoService.java | 6 ++ .../factoryinfo/FactoryInfoServiceImpl.java | 78 ++++++++++++------- 4 files changed, 70 insertions(+), 32 deletions(-) diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java index a0491eff..7be893c6 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java @@ -142,6 +142,15 @@ public class FactoryInfoController { return success(BeanUtils.toBean(factoryInfo, FactorySimpleRespVO.class)); } + @GetMapping("/factory-list-all") + @Operation(summary = "取登录用户工厂列表, 登陆用户无工厂则拉取所有工厂 | 用于前端下拉框 | 无工厂类型限制") + @PreAuthorize("@ss.hasPermission('smartfactory:factory-info:query')") + public CommonResult> getFactoryALlListByLoginUser() { + + List factoryInfo = factoryInfoService.getFactoryALlListByLoginUser(); + return success(BeanUtils.toBean(factoryInfo, FactorySimpleRespVO.class)); + } + @GetMapping("/get-tree") @Operation(summary = "获得工厂树结构") @PreAuthorize("@ss.hasPermission('smartfactory:factory-info:query')") @@ -205,4 +214,4 @@ public class FactoryInfoController { ExcelUtils.write(response, "工厂信息.xls", "数据", FactoryInfoRespVO.class, BeanUtils.toBean(list, FactoryInfoRespVO.class)); } -} \ No newline at end of file +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java index f75752e0..6b2fe3bb 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java @@ -34,11 +34,14 @@ public interface FactoryInfoMapper extends BaseMapperX { } default List selectListByType(List factoryId) { + return this.selectListByType(factoryId, Arrays.asList("2","3")); + } + default List selectListByType(List factoryId, List types) { return selectList(new LambdaQueryWrapperX() .eq(FactoryInfoDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) .inIfPresent(FactoryInfoDO::getId, factoryId) - .inIfPresent(FactoryInfoDO::getType, Arrays.asList(2,3))); + .inIfPresent(FactoryInfoDO::getType, types)); } /** @@ -58,4 +61,4 @@ public interface FactoryInfoMapper extends BaseMapperX { List selectProfit(@Param("factoryId") Long factoryId, @Param("month") String month); -} \ No newline at end of file +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java index bc74939f..c1c54369 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java @@ -164,4 +164,10 @@ public interface FactoryInfoService { * @return 工厂列表 */ List getList(); + + /** + * 取登录用户工厂列表, 登陆用户无工厂则拉取所有工厂 | 用于前端下拉框 | 无工厂类型限制 + * @return + */ + List getFactoryALlListByLoginUser(); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java index 26f8821b..2e43c648 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java @@ -9,7 +9,10 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.ip.core.Area; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.*; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryProfitVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryUpdateStatusReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryRollDataRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.ProvincesDataRespVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; @@ -23,6 +26,7 @@ import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespD import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -32,7 +36,8 @@ import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.FACTORY_INFO_NOT_EXISTS; import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.FACTOYRY_EXISTS_STAFF; @@ -42,6 +47,7 @@ import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.FACT * * @author 姚君 */ +@Slf4j @Service @Validated public class FactoryInfoServiceImpl implements FactoryInfoService { @@ -239,27 +245,7 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { @Override public List getFactoryListByAuthority() { - - List factoryIds = new ArrayList<>(); - DeptDataPermissionRespDTO deptDataPermission = permissionApi.getDeptDataPermission(getLoginUserId()).getCheckedData(); - // 如果当前登录用户数据权限 不是查看全部数据 - if (!deptDataPermission.getAll()) { - - // 获取自己所在工厂 - DeptRespDTO respDTO = deptApi.getDept(userApi.getUser(getLoginUserId()).getCheckedData().getDeptId()).getCheckedData(); - if (respDTO != null && respDTO.getFactoryId() != null) { - factoryIds.add(respDTO.getFactoryId()); - } - - // 查找担任负责人的工厂信息 - List deptRespDTO = deptApi.getDeptByLeaderId(getLoginUserId()).getCheckedData(); - - if (deptRespDTO != null) { - - factoryIds.addAll(convertList(deptRespDTO, DeptRespDTO::getFactoryId)); - } - } - + List factoryIds = this.getFactoryIdsByUserId(getLoginUserId()); return factoryInfoMapper.selectListByType(factoryIds); } @@ -319,19 +305,19 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { // 获取打包扣款明细 List packageDeduction = item.stream() .filter(data -> data.getBusinessType() == 1) - .flatMap( data -> data.getDeductionItems().stream()) + .flatMap(data -> data.getDeductionItems().stream()) .collect(Collectors.toList()); // 获取叉车扣款明细 List forkliftDeduction = item.stream() .filter(data -> data.getBusinessType() == 2) - .flatMap( data -> data.getDeductionItems().stream()) + .flatMap(data -> data.getDeductionItems().stream()) .collect(Collectors.toList()); // 获取搬运扣款明细 List porterageDeduction = item.stream() .filter(data -> data.getBusinessType() == 3) - .flatMap( data -> data.getDeductionItems().stream()) + .flatMap(data -> data.getDeductionItems().stream()) .collect(Collectors.toList()); // 设置打包扣款 @@ -340,7 +326,7 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { vo.setForkliftDeductionItem(getDeduction(forkliftDeduction)); // 设置搬运扣款 vo.setPorterageDeductionItem(getDeduction(porterageDeduction)); - }else { + } else { // 设置打包扣款 vo.setPackageDeductionItem(getDeduction(null)); // 设置叉车扣款 @@ -392,14 +378,14 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { } return deduction; - } + } @Override public List getCompanyFactoryList() { return factoryInfoMapper.selectList(new LambdaQueryWrapperX() .eq(FactoryInfoDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) - .in(FactoryInfoDO::getType, Arrays.asList(0,1))); + .in(FactoryInfoDO::getType, Arrays.asList(0, 1))); } @Override @@ -430,4 +416,38 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { .eq(FactoryInfoDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) .orderByAsc(FactoryInfoDO::getType)); } + + @Override + public List getFactoryALlListByLoginUser() { + List factoryIds = this.getFactoryIdsByUserId(getLoginUserId()); + return factoryInfoMapper.selectListByType(factoryIds, null); + } + + /** + * 根据当前登录用户获取到工厂ID - {获取当前登录用户所在部门 - 根据所在部门找到所对应的工厂(如果所在部门没有工厂则全部) 返回对应工厂id} + * + * @param userId + * @return + */ + public List getFactoryIdsByUserId(Long userId) { + List factoryIds = new ArrayList<>(); + DeptDataPermissionRespDTO deptDataPermission = permissionApi.getDeptDataPermission(userId).getCheckedData(); + // 如果当前登录用户数据权限 不是查看全部数据 + if (!deptDataPermission.getAll()) { + // 获取自己所在工厂 + DeptRespDTO respDTO = deptApi.getDept(userApi.getUser(userId).getCheckedData().getDeptId()).getCheckedData(); + if (respDTO != null && respDTO.getFactoryId() != null) { + factoryIds.add(respDTO.getFactoryId()); + } + + // 查找担任负责人的工厂信息 + List deptRespDTO = deptApi.getDeptByLeaderId(userId).getCheckedData(); + + if (deptRespDTO != null) { + + factoryIds.addAll(convertList(deptRespDTO, DeptRespDTO::getFactoryId)); + } + } + return factoryIds; + } }