From b83c48f2b5ca606166e3db5400b80919b5fce005 Mon Sep 17 00:00:00 2001 From: aikai Date: Fri, 6 Sep 2024 18:14:24 +0800 Subject: [PATCH] ### commit message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. rpc接口新增 - 新增`AdminUserApi`接口,提供外勤用户查询功能。 - 在`AdminUserService`接口中添加`getFactoryUsers`方法,用于获取工厂用户列表。 - 在`BpmModelApi`接口中新增`getModelList`方法,用于获取流程模板列表。 2. 实体类创建与修改 - 创建`AdminUserRpcVO`类,用于RPC调用中传输用户信息。 - 创建`AssetsStockVO`类,用于展示工厂库存信息。 - 修改`CommonlyUsedDO`类,移除`routing`字段。 - 更新`DataOverviewVO`类,调整工厂数据总览视图结构。 3.服务与实现更新 - 在`CommonlyUsedService`接口及其实现类中新增批量操作方法。 - 在`DeptService`接口及其实现类中添加获取工厂部门列表的方法。 - 更新`CommonlyUsedController`,添加批量操作接口。 - 修改`CommonlyUsedMapper`,适配批量操作。 - 更新`CommonlyUsedVO`,包含流程列表信息。 4. 其他修改 - 在`AssetsTypeCodeEnum`中新增多个资产类型常量。 - 修改`gpsPosition`方法,调整GPS位置更新逻辑。 - 调整数据库操作,优化SQL查询条件。 --- .../common/enums/AssetsTypeCodeEnum.java | 17 +- .../module/bpm/api/model/BpmModelApi.java | 23 +++ .../bpm/api/model/vo/BpmModelRpcVO.java | 18 ++ .../module/bpm/api/model/BpmModelApiImpl.java | 56 +++++++ .../module/system/api/user/AdminUserApi.java | 11 +- .../system/api/user/vo/AdminUserRpcVO.java | 105 ++++++++++++ .../system/api/user/AdminUserApiImpl.java | 7 + .../commonlyused/CommonlyUsedController.java | 70 +++++--- .../vo/CommonlyUsedPageReqVO.java | 5 +- .../commonlyused/vo/CommonlyUsedRespVO.java | 7 +- .../vo/CommonlyUsedSaveReqVO.java | 5 +- .../admin/commonlyused/vo/CommonlyUsedVO.java | 4 + .../controller/admin/user/UserController.java | 8 +- .../commonlyused/CommonlyUsedDO.java | 7 +- .../commonlyused/CommonlyUsedMapper.java | 3 +- .../rpc/config/RpcConfiguration.java | 3 +- .../service/assets/AssetsTypeServiceImpl.java | 2 +- .../commonlyused/CommonlyUsedService.java | 22 ++- .../commonlyused/CommonlyUsedServiceImpl.java | 66 +++++--- .../system/service/dept/DeptService.java | 16 ++ .../system/service/dept/DeptServiceImpl.java | 14 ++ .../service/permission/MenuService.java | 8 +- .../service/permission/MenuServiceImpl.java | 21 ++- .../system/service/user/AdminUserService.java | 23 ++- .../service/user/AdminUserServiceImpl.java | 32 +++- .../service/user/FactoryUserServiceImpl.java | 5 +- .../factory/FactoryScreenDataController.java | 4 +- .../screendata/factory/vo/AssetsStockVO.java | 20 +++ .../screendata/factory/vo/DataOverviewVO.java | 43 ++++- .../screendata/factory/vo/FactoryKilnVO.java | 24 +++ .../factory/vo/FactoryPackingLineVO.java | 22 +++ .../screendata/factory/vo/ForkliftVO.java | 26 +++ .../FactoryForkliftMapper.java | 18 +- .../mysql/screendata/ScreenDataMapper.java | 22 +++ .../factoryinfo/FactoryInfoServiceImpl.java | 10 +- .../factorykiln/FactoryKilnService.java | 19 ++- .../factorykiln/FactoryKilnServiceImpl.java | 10 +- .../FactoryPackingLineService.java | 19 ++- .../FactoryPackingLineServiceImpl.java | 10 +- .../service/screendata/ScreenDataService.java | 2 +- .../screendata/ScreenDataServiceImpl.java | 157 ++++++++++++++++-- .../factoryforklift/FactoryForkliftMapper.xml | 29 ++++ .../mapper/screendata/ScreenDataMapper.xml | 40 +++++ 43 files changed, 900 insertions(+), 133 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApi.java create mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/vo/BpmModelRpcVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApiImpl.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/vo/AdminUserRpcVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/AssetsStockVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryKilnVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackingLineVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ForkliftVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/screendata/ScreenDataMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/screendata/ScreenDataMapper.xml diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/AssetsTypeCodeEnum.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/AssetsTypeCodeEnum.java index 1a87f657..c63869c0 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/AssetsTypeCodeEnum.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/AssetsTypeCodeEnum.java @@ -14,5 +14,20 @@ public class AssetsTypeCodeEnum { * 叉车 */ public static final String FORKLIFT = "FORKLIFT"; - + /** + * 叉车 油 + */ + public static final String FORKLIFT_OIL = "FORKLIFT_OIL"; + /** + * 叉车 电 + */ + public static final String FORKLIFT_ELECTRICITY = "FORKLIFT_ELECTRICITY"; + /** + * 托盘 + */ + public static final String TRAY = "TRAY"; + /** + * 绑带 + */ + public static final String STRAPS = "STRAPS"; } diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApi.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApi.java new file mode 100644 index 00000000..83d25670 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApi.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.bpm.api.model; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.api.model.vo.BpmModelRpcVO; +import cn.iocoder.yudao.module.bpm.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = +@Tag(name = "RPC 服务 - 流程实例") +public interface BpmModelApi { + + String PREFIX = ApiConstants.PREFIX + "/oa/model"; + + @GetMapping(PREFIX + "/getModelList") + @Operation(summary = "获取流程模版列表") + CommonResult> getModelList(); + +} diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/vo/BpmModelRpcVO.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/vo/BpmModelRpcVO.java new file mode 100644 index 00000000..1d1a979c --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/model/vo/BpmModelRpcVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.bpm.api.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class BpmModelRpcVO { + @Schema(description = "id") + private String id; + @Schema(description = "名称") + private String name; + @Schema(description = "图标") + private String processImg; + @Schema(description = "路由") + private String formCustomCreatePath; + @Schema(description = "是否已选择 (用于常用菜单赛选 true 已选 false 未选)", example = "false") + private Boolean selectedFlag; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApiImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApiImpl.java new file mode 100644 index 00000000..fb8e047d --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/model/BpmModelApiImpl.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.bpm.api.model; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; +import cn.iocoder.yudao.module.bpm.api.model.vo.BpmModelRpcVO; +import cn.iocoder.yudao.module.bpm.service.definition.dto.BpmModelMetaInfoRespDTO; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.repository.Model; +import org.flowable.engine.repository.ModelQuery; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +/** + * Flowable 流程实例 Api 实现类 + * + * @author jason + */ +@RestController +@Validated +public class BpmModelApiImpl implements BpmModelApi { + + @Resource + private RepositoryService repositoryService; + + + @Override + public CommonResult> getModelList() { + ModelQuery modelQuery = repositoryService.createModelQuery(); + /**对模型添加租户*/ + modelQuery.modelTenantId(TenantContextHolder.getTenantId().toString()); + // 执行查询 + List models = modelQuery.orderByCreateTime().desc().list(); + List list = new ArrayList<>(); + // -- 需要过滤的 - 列表 + List filterList = Arrays.asList("work_task"); + for (Model model : models) { + BpmModelMetaInfoRespDTO metaInfo = JsonUtils.parseObject(model.getMetaInfo(), BpmModelMetaInfoRespDTO.class); + if (filterList.contains(model.getKey()) || metaInfo == null) { + continue; + } + list.add(new BpmModelRpcVO().setId(model.getId()) + .setName(model.getName()) + .setProcessImg(metaInfo.getProcessImg()) + .setFormCustomCreatePath(metaInfo.getFormCustomCreatePath())); + } + return success(list); + } +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java index 0522e79c..28ae1854 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java @@ -4,10 +4,11 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.UserSaveRespDTO; +import cn.iocoder.yudao.module.system.api.user.vo.AdminUserRpcVO; import cn.iocoder.yudao.module.system.enums.ApiConstants; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -75,4 +76,10 @@ public interface AdminUserApi { @Operation(summary = "获取所有用户性质为外勤的用户") @Parameter(name = "userNature", description = "用户性质", example = "3", required = true) CommonResult> getUserIdsByUserNature(@RequestParam("userNature") Integer userNature); + + @GetMapping(PREFIX + "/getFactoryUsers") + @Operation(summary = "获取同部门所有用户id") + @Parameter(name = "factoryId", description = "工厂id", example = "1024", required = false) + CommonResult> getFactoryUsers(@RequestParam(name = "factoryId", required = false) Long factoryId); + } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/vo/AdminUserRpcVO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/vo/AdminUserRpcVO.java new file mode 100644 index 00000000..69759784 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/vo/AdminUserRpcVO.java @@ -0,0 +1,105 @@ +package cn.iocoder.yudao.module.system.api.user.vo; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.module.system.enums.common.SexEnum; +import lombok.Data; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class AdminUserRpcVO { + + /** + * 用户ID + */ + private Long id; + /** + * 用户账号 + */ + private String username; + /** + * 用户昵称 + */ + private String nickname; + /** + * 部门 ID + */ + private Long deptId; + /** + * 用户邮箱 + */ + private String email; + /** + * 手机号码 + */ + private String mobile; + /** + * 身份证号码 + */ + private String idcard; + /** + * 年龄 + */ + private Integer age; + /** + * 生日日期 + */ + private LocalDate birthdayDay; + /** + * 用户性别 + *

+ * 枚举类 {@link SexEnum} + */ + private Integer sex; + /** + * 用户头像 + */ + private String avatar; + /** + * 帐号状态 + *

+ * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + + /** + * 是否允许外勤打卡 0否 1是 + *

+ * 枚举 {@link CommonStatusEnum} + */ + private Integer fieldworkFlag; + + /** + * 用户类型 + * 1:公司用户 2:工厂用户 + */ + private Integer userType; + + /** + * 用户性质 + * 3:正式 4:外勤 + */ + private Integer userNature; + + /** + * 用户编制 + * 5:试用 6:实习 7:在职 8:离职 + */ + private Integer userStaffing; + + /** + * 最后登录IP + */ + private String loginIp; + /** + * 最后登录时间 + */ + private LocalDateTime loginDate; + + /** + * 微信小程序openId + */ + private String openId; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java index 03ce5075..a85c4f5f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.UserSaveRespDTO; +import cn.iocoder.yudao.module.system.api.user.vo.AdminUserRpcVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.service.user.AdminUserService; @@ -77,4 +78,10 @@ public class AdminUserApiImpl implements AdminUserApi { return success(convertList(userDOS, AdminUserDO::getId)); } + @Override + public CommonResult> getFactoryUsers(Long factoryId) { + List factoryUsers = userService.getFactoryUsers(factoryId); + return success(BeanUtils.toBean(factoryUsers, AdminUserRpcVO.class)); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/CommonlyUsedController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/CommonlyUsedController.java index cc34f47c..869f76ac 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/CommonlyUsedController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/CommonlyUsedController.java @@ -1,33 +1,31 @@ package cn.iocoder.yudao.module.system.controller.admin.commonlyused; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedRespVO; +import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedVO; import cn.iocoder.yudao.module.system.dal.dataobject.commonlyused.CommonlyUsedDO; import cn.iocoder.yudao.module.system.service.commonlyused.CommonlyUsedService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 用户常用应用配置") @RestController @@ -45,6 +43,14 @@ public class CommonlyUsedController { return success(commonlyUsedService.createCommonlyUsed(createReqVO)); } + @PostMapping("/batchCreate") + @Operation(summary = "批量创建用户常用应用配置") + @PreAuthorize("@ss.hasPermission('system:commonly-used:create')") + public CommonResult batchCreate(@Valid @RequestBody List list) { + commonlyUsedService.batchCreate(list); + return success(true); + } + @PutMapping("/update") @Operation(summary = "更新用户常用应用配置") @PreAuthorize("@ss.hasPermission('system:commonly-used:update')") @@ -53,6 +59,14 @@ public class CommonlyUsedController { return success(true); } + @PutMapping("/batchUpdate") + @Operation(summary = "批量更新用户常用应用配置") + @PreAuthorize("@ss.hasPermission('system:commonly-used:update')") + public CommonResult batchUpdate(@Valid @RequestBody List list) { + commonlyUsedService.batchUpdate(list); + return success(true); + } + @DeleteMapping("/delete") @Operation(summary = "删除用户常用应用配置") @Parameter(name = "id", description = "编号", required = true) @@ -62,6 +76,14 @@ public class CommonlyUsedController { return success(true); } + @DeleteMapping("/batchDelete") + @Operation(summary = "批量删除用户常用应用配置") + @PreAuthorize("@ss.hasPermission('system:commonly-used:delete')") + public CommonResult batchDelete(@RequestBody List ids) { + commonlyUsedService.batchDelete(ids); + return success(true); + } + @GetMapping("/get") @Operation(summary = "获得用户常用应用配置") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -84,12 +106,12 @@ public class CommonlyUsedController { @PreAuthorize("@ss.hasPermission('system:commonly-used:export')") @OperateLog(type = EXPORT) public void exportCommonlyUsedExcel(@Valid CommonlyUsedPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = commonlyUsedService.getCommonlyUsedPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "用户常用应用配置.xls", "数据", CommonlyUsedRespVO.class, - BeanUtils.toBean(list, CommonlyUsedRespVO.class)); + BeanUtils.toBean(list, CommonlyUsedRespVO.class)); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedPageReqVO.java index 8a0513c1..4a5199bf 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedPageReqVO.java @@ -21,9 +21,6 @@ public class CommonlyUsedPageReqVO extends PageParam { @Schema(description = "类型 1流程 2菜单", example = "1") private Integer type; - @Schema(description = "路由地址") - private String routing; - @Schema(description = "菜单id或流程id 根据具体类型来", example = "11898") private String objectId; @@ -34,4 +31,4 @@ public class CommonlyUsedPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedRespVO.java index 8845db61..54cce100 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedRespVO.java @@ -25,10 +25,6 @@ public class CommonlyUsedRespVO { @ExcelProperty("类型 1流程 2菜单") private Integer type; - @Schema(description = "路由地址") - @ExcelProperty("路由地址") - private String routing; - @Schema(description = "菜单id或流程id 根据具体类型来", example = "11898") @ExcelProperty("菜单id或流程id 根据具体类型来") private String objectId; @@ -49,4 +45,7 @@ public class CommonlyUsedRespVO { @ExcelProperty("图标") private String img; + @Schema(description = "路由地址") + @ExcelProperty("路由地址") + private String routing; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedSaveReqVO.java index f891fb41..f8decf11 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedSaveReqVO.java @@ -19,13 +19,10 @@ public class CommonlyUsedSaveReqVO { @Schema(description = "类型 1流程 2菜单", example = "1") private Integer type; - @Schema(description = "路由地址") - private String routing; - @Schema(description = "菜单id或流程id 根据具体类型来", example = "11898") private String objectId; @Schema(description = "排序(从小到大)") private Integer sort; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedVO.java index 507c7965..4b4489c4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/commonlyused/vo/CommonlyUsedVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo; +import cn.iocoder.yudao.module.bpm.api.model.vo.BpmModelRpcVO; import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthPermissionInfoRespVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -15,4 +16,7 @@ public class CommonlyUsedVO { @Schema(description = "菜单树形列表") private List menus; + @Schema(description = "流程列表") + private List modelList; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java index d85d4601..d98e49b1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java @@ -108,14 +108,12 @@ public class UserController { return success(true); } @GetMapping("/gpsPosition") - @Operation(summary = "GPS定位") - public CommonResult gpsPosition() { - userService.gpsPosition(); + @Operation(summary = "GPS用户全量更新") + public CommonResult gpsFullUserUpdate() { + userService.gpsFullUserUpdate(); return success(true); } - - @GetMapping("/page") @Operation(summary = "获得用户分页列表") @PreAuthorize("@ss.hasPermission('system:user:list')") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/commonlyused/CommonlyUsedDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/commonlyused/CommonlyUsedDO.java index ff514fa2..563cd4e9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/commonlyused/CommonlyUsedDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/commonlyused/CommonlyUsedDO.java @@ -35,10 +35,7 @@ public class CommonlyUsedDO extends BaseDO { * 类型 1流程 2菜单 */ private Integer type; - /** - * 路由地址 - */ - private String routing; + /** * 菜单id或流程id 根据具体类型来 */ @@ -48,4 +45,4 @@ public class CommonlyUsedDO extends BaseDO { */ private Integer sort; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/commonlyused/CommonlyUsedMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/commonlyused/CommonlyUsedMapper.java index c11d2761..a3c60b97 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/commonlyused/CommonlyUsedMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/commonlyused/CommonlyUsedMapper.java @@ -21,11 +21,10 @@ public interface CommonlyUsedMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(CommonlyUsedDO::getUserId, reqVO.getUserId()) .eqIfPresent(CommonlyUsedDO::getType, reqVO.getType()) - .eqIfPresent(CommonlyUsedDO::getRouting, reqVO.getRouting()) .eqIfPresent(CommonlyUsedDO::getObjectId, reqVO.getObjectId()) .eqIfPresent(CommonlyUsedDO::getSort, reqVO.getSort()) .betweenIfPresent(CommonlyUsedDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(CommonlyUsedDO::getId)); } -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java index 9e7ca372..9569de5e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.framework.rpc.config; +import cn.iocoder.yudao.module.bpm.api.model.BpmModelApi; import cn.iocoder.yudao.module.infra.api.file.FileApi; import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.FactoryInfoApi; @@ -7,6 +8,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) -@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, FactoryInfoApi.class}) +@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, FactoryInfoApi.class, BpmModelApi.class}) public class RpcConfiguration { } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assets/AssetsTypeServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assets/AssetsTypeServiceImpl.java index 293ae090..89ed4625 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assets/AssetsTypeServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/assets/AssetsTypeServiceImpl.java @@ -78,7 +78,7 @@ public class AssetsTypeServiceImpl implements AssetsTypeService { @Override public List getAssetsTypeIdsByCode(String code) { List assetsTypeDOS = assetsTypeMapper.selectList(new LambdaQueryWrapper() - .eq(AssetsTypeDO::getCode, code)); + .like(AssetsTypeDO::getCode, code)); if (assetsTypeDOS.isEmpty()) { return Collections.emptyList(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedService.java index 2dc171af..e8db96fd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedService.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.system.service.commonlyused; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedPageReqVO; -import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedRespVO; import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedVO; import cn.iocoder.yudao.module.system.dal.dataobject.commonlyused.CommonlyUsedDO; @@ -61,4 +60,25 @@ public interface CommonlyUsedService { * @return */ CommonlyUsedVO getCommonlyUsedList(); + + /** + * 批量新增 + * + * @param list + */ + void batchCreate(List list); + + /** + * 批量更新 + * + * @param list + */ + void batchUpdate(List list); + + /** + * 批量删除 + * + * @param ids + */ + void batchDelete(List ids); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedServiceImpl.java index 1ee17365..cacb6c9f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/commonlyused/CommonlyUsedServiceImpl.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.system.service.commonlyused; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.bpm.api.model.BpmModelApi; +import cn.iocoder.yudao.module.bpm.api.model.vo.BpmModelRpcVO; import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthPermissionInfoRespVO; import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.commonlyused.vo.CommonlyUsedRespVO; @@ -24,11 +26,8 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; - /** * 用户常用应用配置 Service 实现类 * @@ -44,6 +43,8 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService { private PermissionService permissionService; @Resource private MenuService menuService; + @Resource + private BpmModelApi bpmModelApi; @Override public Long createCommonlyUsed(CommonlyUsedSaveReqVO createReqVO) { @@ -86,18 +87,11 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService { // -- 搜索我的常用 List list = commonlyUsedMapper.selectList(new LambdaQueryWrapper() .eq(CommonlyUsedDO::getDeleted, 0).eq(CommonlyUsedDO::getUserId, userId).orderByAsc(CommonlyUsedDO::getSort)); - Map map = list.stream().collect(Collectors.toMap(CommonlyUsedDO::getId, a -> a)); - List commonlyUsedRespVOS = new ArrayList<>(); + Map> map = list.stream().collect(Collectors.groupingBy(a -> a.getType() + "_" + a.getObjectId())); // -- 获取菜单列表 - List menuList = new ArrayList<>(); - Set roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId()); - if (CollectionUtil.isNotEmpty(roleIds)) { - Set menuIds = permissionService.getRoleMenuListByRoleId(roleIds); - if (CollectionUtil.isNotEmpty(menuIds)) { - menuList = menuService.getMenuList(menuIds); - menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus())); - } - } + List menuList = menuService.getAvailableMenuListByRoleId(); + // -- 获取流程列表 + List modelList = bpmModelApi.getModelList().getCheckedData(); List menuIds = new ArrayList<>(); List processIds = new ArrayList<>(); if (!list.isEmpty()) { @@ -110,27 +104,59 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService { if (CollectionUtil.isNotEmpty(myMenuList)) { menuIds = myMenuList.stream().map(CommonlyUsedDO::getObjectId).collect(Collectors.toList()); } - // -- 将菜单列表转树形 } + + List commonlyUsedRespVOS = new ArrayList<>(); for (MenuDO menuDO : menuList) { menuDO.setSelectedFlag(false); if (menuIds.contains(String.valueOf(menuDO.getId()))) { menuDO.setSelectedFlag(true); - CommonlyUsedRespVO commonlyUsedRespVO = BeanUtils.toBean(menuDO, CommonlyUsedRespVO.class); + List menus = map.get("2" + "_" + menuDO.getId()); + CommonlyUsedDO commonlyUsedDO = menus.get(0); + CommonlyUsedRespVO commonlyUsedRespVO = BeanUtil.copyProperties(commonlyUsedDO, CommonlyUsedRespVO.class); commonlyUsedRespVO.setImg(menuDO.getIcon()); commonlyUsedRespVO.setName(menuDO.getName()); + commonlyUsedRespVO.setRouting(menuDO.getPath()); commonlyUsedRespVOS.add(commonlyUsedRespVO); } } - // -- 获取流程列表 + for (BpmModelRpcVO modelRpcVO : modelList) { + modelRpcVO.setSelectedFlag(false); + if (processIds.contains(String.valueOf(modelRpcVO.getId()))) { + modelRpcVO.setSelectedFlag(true); + List models = map.get("1" + "_" + modelRpcVO.getId()); + CommonlyUsedDO commonlyUsedDO = models.get(0); + CommonlyUsedRespVO commonlyUsedRespVO = BeanUtils.toBean(commonlyUsedDO, CommonlyUsedRespVO.class); + commonlyUsedRespVO.setImg(modelRpcVO.getProcessImg()); + commonlyUsedRespVO.setName(modelRpcVO.getName()); + commonlyUsedRespVO.setRouting(modelRpcVO.getFormCustomCreatePath()); + commonlyUsedRespVOS.add(commonlyUsedRespVO); + } + } List menus = AuthConvert.INSTANCE.buildMenuTree(menuList); vo.setMenus(menus); vo.setCommonlyUsedRespVOS(commonlyUsedRespVOS); + vo.setModelList(modelList); + return vo; + } - // TODO: 2024/9/5 还差流程的实现 - return null; + @Override + public void batchCreate(List list) { + List saveList = BeanUtils.toBean(list, CommonlyUsedDO.class); + commonlyUsedMapper.insertBatch(saveList); + } + + @Override + public void batchUpdate(List list) { + List updateList = BeanUtils.toBean(list, CommonlyUsedDO.class); + commonlyUsedMapper.updateBatch(updateList); + } + + @Override + public void batchDelete(List ids) { + commonlyUsedMapper.deleteBatchIds(ids); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java index 15670acc..30f92453 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java @@ -104,14 +104,30 @@ public interface DeptService { /** * 获得 部门树 + * * @return 部门列表 */ List getDeptTree(); /** * 获得指定部门信息 + * * @param factoryId 工厂编号 * @return 部门信息 */ DeptDO getDeptByFactoryId(Long factoryId); + + /** + * 获取所有工厂部门 + * + * @return + */ + List getFactoryDeptList(); + + /** + * 获取所有工厂部门 + * + * @return + */ + List getFactoryDeptList(Long factoryId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java index d13a2734..da8dabd3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java @@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqV import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.mysql.dept.DeptMapper; import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; @@ -284,4 +285,17 @@ public class DeptServiceImpl implements DeptService { return deptMapper.selectOne(DeptDO::getFactoryId, factoryId); } + + @Override + public List getFactoryDeptList() { + return this.getFactoryDeptList(null); + } + + @Override + public List getFactoryDeptList(Long factoryId) { + return deptMapper.selectList(new LambdaQueryWrapper() + .eq(factoryId != null, DeptDO::getFactoryId, factoryId) + .isNotNull(DeptDO::getFactoryId) + .eq(DeptDO::getStatus, CommonStatusEnum.ENABLE.getStatus())); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuService.java index 684e396f..77dca2fe 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuService.java @@ -9,8 +9,6 @@ import java.util.List; /** * 菜单 Service 接口 - * - */ public interface MenuService { @@ -84,4 +82,10 @@ public interface MenuService { */ List getMenuList(Collection ids); + /** + * 通过当前登陆用户的角色,获得可用菜单列表 + * + * @return + */ + List getAvailableMenuListByRoleId(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java index 95951293..47afa222 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.system.service.permission; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu.MenuListReqVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu.MenuSaveVO; @@ -18,18 +20,19 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO.ID_ROOT; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; /** * 菜单 Service 实现 - * - */ @Service @Slf4j @@ -133,6 +136,20 @@ public class MenuServiceImpl implements MenuService { return menuMapper.selectBatchIds(ids); } + @Override + public List getAvailableMenuListByRoleId() { + List menuList = new ArrayList<>(); + Set roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId()); + if (CollectionUtil.isNotEmpty(roleIds)) { + Set menuIds = permissionService.getRoleMenuListByRoleId(roleIds); + if (CollectionUtil.isNotEmpty(menuIds)) { + menuList = this.getMenuList(menuIds); + menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus())); + } + } + return menuList; + } + /** * 校验父菜单是否合法 *

diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index 3874f861..3701928d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -97,7 +97,7 @@ public interface AdminUserService { /** * 修改外勤打卡状态 * - * @param id 用户编号 + * @param id 用户编号 * @param fieldworkFlag 状态 */ void updateFieldwork(Long id, Integer fieldworkFlag); @@ -141,7 +141,25 @@ public interface AdminUserService { */ PageResult getUserPage(UserPageReqVO reqVO); - void gpsPosition(); + /** + * gps用户全量更新 + */ + void gpsFullUserUpdate(); + + /** + * 获取工厂用户列表 + * + * @param factoryId + * @return + */ + List getFactoryUsers(Long factoryId); + + /** + * gps用户增量更新 + * + * @param adminUserDO + */ + void gpsIncrementalSynchronizationOfUsers(AdminUserDO adminUserDO); /** * 获得工厂用户分页列表 @@ -321,6 +339,7 @@ public interface AdminUserService { /** * 获取指令性质得用户列表 + * * @param userNature 用户性质 * @return 用户列表 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 931ee4fd..959a8430 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -290,14 +290,32 @@ public class AdminUserServiceImpl implements AdminUserService { } @Override - public void gpsPosition() { - // TODO: 2024/9/2 - Set deptCondition = getDeptCondition(130L); + public void gpsFullUserUpdate() { + // 查询出所有带工厂id的部门ids + List deptList = deptService.getFactoryDeptList(); + List deptCondition = deptList.stream().map(DeptDO::getId).collect(Collectors.toList()); List adminUserDOS = userMapper.selectList(new LambdaQueryWrapper() .in(AdminUserDO::getDeptId, deptCondition)); for (AdminUserDO adminUserDO : adminUserDOS) { - JSONObject object = new JSONObject().set("name", adminUserDO.getNickname()).set("uniqueId", adminUserDO.getMobile()); + this.gpsIncrementalSynchronizationOfUsers(adminUserDO); + } + } + + @Override + public List getFactoryUsers(Long factoryId) { + List deptList = deptService.getFactoryDeptList(factoryId); + List deptCondition = deptList.stream().map(DeptDO::getId).collect(Collectors.toList()); + return userMapper.selectList(new LambdaQueryWrapper() + .in(AdminUserDO::getDeptId, deptCondition) + .eq(AdminUserDO::getUserType, 1) + .eq(AdminUserDO::getStatus, 0)); + } + + @Override + public void gpsIncrementalSynchronizationOfUsers(AdminUserDO adminUserDO) { + try { + JSONObject object = new JSONObject().set("name", adminUserDO.getNickname()).set("uniqueId", adminUserDO.getMobile()); // 请求的 URL String url = "http://127.0.0.1:8082/api/devices"; // 发送 POST 请求 @@ -313,9 +331,9 @@ public class AdminUserServiceImpl implements AdminUserService { .body(JSONUtil.toJsonStr(object)) .timeout(20000) // 设置超时时间 .execute(); // 执行请求并获取响应 - - // 打印响应结果 - System.out.println(response.body()); + log.info(response.body()); + } catch (Exception e) { + log.info("添加工厂用户到GPS系统中失败", e); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/FactoryUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/FactoryUserServiceImpl.java index 0438bf14..99d22544 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/FactoryUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/FactoryUserServiceImpl.java @@ -43,6 +43,8 @@ public class FactoryUserServiceImpl implements FactoryUserService{ @Resource private AdminUserMapper userMapper; + @Resource + private AdminUserService adminUserService; @Resource private PasswordEncoder passwordEncoder; @@ -100,7 +102,8 @@ public class FactoryUserServiceImpl implements FactoryUserService{ usersExtDO.setDeptId(deptDO.getId()); usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo)); usersExtService.createUsers(usersExtDO); - + // 工厂用户添加到GPS定位系统中 + adminUserService.gpsIncrementalSynchronizationOfUsers(user); try { for (AttendanceMachineDO machineDO : attendanceMachineDOS) { diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/FactoryScreenDataController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/FactoryScreenDataController.java index 64ff170e..a3763a53 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/FactoryScreenDataController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/FactoryScreenDataController.java @@ -146,8 +146,8 @@ public class FactoryScreenDataController { @GetMapping("/getDataOverview") @Operation(summary = "获取大屏数据总览") @PermitAll - public CommonResult getDataOverview() { - DataOverviewVO data = screenDataService.getDataOverview(); + public CommonResult getDataOverview(@RequestParam(required = false) Long factoryId) { + DataOverviewVO data = screenDataService.getDataOverview(factoryId); return success(data); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/AssetsStockVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/AssetsStockVO.java new file mode 100644 index 00000000..3a8572b3 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/AssetsStockVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 功能描述 + * + * @author: yj + * @date: 2024年03月05日 13:55 + */ +@Data +public class AssetsStockVO { + @Schema(description = "工厂id") + private Long factoryId; + @Schema(description = "工厂名称") + private String factoryName; + @Schema(description = "库存") + private Integer stock; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java index 915b4467..0fce510b 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/DataOverviewVO.java @@ -1,8 +1,12 @@ package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryforklift.FactoryForkliftDO; +import cn.iocoder.yudao.module.system.api.user.vo.AdminUserRpcVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.List; + /** * 功能描述 * @@ -14,20 +18,47 @@ import lombok.Data; public class DataOverviewVO { @Schema(description = "员工数量") private Integer total; + @Schema(description = "男员工") + private Integer maleTotal; + @Schema(description = "女员工") + private Integer femaleTotal; + @Schema(description = "员工列表") + private List users; + + @Schema(description = "窑炉数量") private Integer ylNum; - @Schema(description = "叉车台数") - private Integer forkliftTotal; - @Schema(description = "叉车运行数量") - private Integer truckOnNum; - @Schema(description = "叉车未运行数量") - private Integer truckOffNum; + @Schema(description = "窑炉信息列表") + private List factoryKilnList; + @Schema(description = "打包线数量") private Integer dbxNum; + @Schema(description = "打包线信息") + private List FactoryPackingLineList; + + + @Schema(description = "叉车台数") + private Integer forkliftTotal; + + @Schema(description = "叉车信息") + private List forkliftList; + + @Schema(description = "工厂叉车列表") + private List factoryForkliftList; + + @Schema(description = "托盘数") private Integer tpNum; + @Schema(description = "托盘信息") + private List trayList; + + @Schema(description = "绑带数") private Integer bdNum; + @Schema(description = "托盘信息") + private List strapsList; + + @Schema(description = "出库") private Integer outTotalNum; @Schema(description = "入库") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryKilnVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryKilnVO.java new file mode 100644 index 00000000..04dfa36c --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryKilnVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 功能描述 + * + * @author: yj + * @date: 2024年03月05日 13:55 + */ +@Data +public class FactoryKilnVO { + @Schema(description = "工厂id") + private Long factoryId; + @Schema(description = "工厂名称") + private String factoryName; + @Schema(description = "数量") + private Integer number; + @Schema(description = "产能") + private BigDecimal capacity; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackingLineVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackingLineVO.java new file mode 100644 index 00000000..8bdee476 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/FactoryPackingLineVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 功能描述 + * + * @author: yj + * @date: 2024年03月05日 13:55 + */ +@Data +public class FactoryPackingLineVO { + @Schema(description = "工厂id") + private Long factoryId; + @Schema(description = "工厂名称") + private String factoryName; + @Schema(description = "数量") + private Integer number; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ForkliftVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ForkliftVO.java new file mode 100644 index 00000000..902f6058 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/screendata/factory/vo/ForkliftVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 功能描述 + * + * @author: yj + * @date: 2024年03月05日 13:55 + */ +@Data +public class ForkliftVO { + @Schema(description = "工厂id") + private Long factoryId; + @Schema(description = "工厂名称") + private String factoryName; + @Schema(description = "总数量") + private Integer totalNum; + @Schema(description = "油车数量") + private Integer oilNum; + @Schema(description = "电车数量") + private Integer electricityNum; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryforklift/FactoryForkliftMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryforklift/FactoryForkliftMapper.java index abb6b13e..384705fa 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryforklift/FactoryForkliftMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryforklift/FactoryForkliftMapper.java @@ -1,17 +1,18 @@ package cn.iocoder.yudao.module.smartfactory.dal.mysql.factoryforklift; -import java.util.*; - import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryforklift.vo.FactoryForkliftPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryforklift.vo.FactoryForkliftRespVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryforklift.FactoryForkliftDO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryforklift.vo.*; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 叉车管理 Mapper * @@ -43,4 +44,13 @@ public interface FactoryForkliftMapper extends BaseMapperX { * @return */ IPage getFactoryForkliftPage(@Param("vo") FactoryForkliftPageReqVO pageReqVO, @Param("page") Page objectPage); + + /** + * 通过工厂ids 和 资产类型ids 获取叉车列表 + * + * @param factoryIds + * @param typeIds + * @return + */ + List getFactoryForkliftByFactoryIdAndTypeIds(@Param("factoryIds") List factoryIds, @Param("typeIds") List typeIds); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/screendata/ScreenDataMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/screendata/ScreenDataMapper.java new file mode 100644 index 00000000..61640e06 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/screendata/ScreenDataMapper.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.screendata; + +import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.AssetsStockVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author 艾楷 + */ +@Mapper +public interface ScreenDataMapper { + /** + * 根工厂ids和资产类型id获取工厂资产数量 + * + * @param factoryIds + * @param typeIds + * @return + */ + List getAssetsNumByFactoryIdAndTypeIds(@Param("factoryIds") List factoryIds, @Param("typeIds") List typeIds); +} 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 8f5ed3d8..dccbcbae 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 @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo; +import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -19,6 +20,7 @@ import cn.iocoder.yudao.module.system.api.permission.PermissionApi; import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; 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 org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -135,8 +137,8 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { @Override public List getFactoryList(Collection ids) { - - return factoryInfoMapper.selectList(FactoryInfoDO::getId, ids); + return factoryInfoMapper.selectList(new LambdaQueryWrapper() + .in(CollectionUtil.isNotEmpty(ids), FactoryInfoDO::getId, ids)); } @Override @@ -229,7 +231,7 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { if (deptRespDTO != null) { factoryIds = convertList(deptRespDTO, DeptRespDTO::getFactoryId); - }else { + } else { DeptRespDTO respDTO = deptApi.getDept(userApi.getUser(getLoginUserId()).getCheckedData().getDeptId()).getCheckedData(); factoryIds = Collections.singletonList(respDTO.getFactoryId()); @@ -254,4 +256,4 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { FactoryInfoDO updateObj = BeanUtils.toBean(updateReqVO, FactoryInfoDO.class); factoryInfoMapper.updateById(updateObj); } -} \ 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/factorykiln/FactoryKilnService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnService.java index 06dcb495..3460f73c 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnService.java @@ -1,11 +1,13 @@ package cn.iocoder.yudao.module.smartfactory.service.factorykiln; -import java.util.*; -import javax.validation.*; -import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.*; -import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorykiln.FactoryKilnDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorykiln.FactoryKilnDO; + +import javax.validation.Valid; +import java.util.List; /** * 工厂窑炉 Service 接口 @@ -52,4 +54,11 @@ public interface FactoryKilnService { */ PageResult getFactoryKilnPage(FactoryKilnPageReqVO pageReqVO); + /** + * 通过工厂id获取窑炉列表 + * + * @param factoryId + * @return + */ + List getFactoryKilnByFactoryId(Long factoryId); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnServiceImpl.java index 1741ac67..3b22c20b 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorykiln/FactoryKilnServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.smartfactory.service.factorykiln; -import cn.hutool.core.util.ArrayUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; @@ -9,11 +8,13 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.Fact import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnSaveReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorykiln.FactoryKilnDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorykiln.FactoryKilnMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.List; /** * 工厂窑炉 Service 实现类 @@ -56,8 +57,13 @@ public class FactoryKilnServiceImpl implements FactoryKilnService { @Override public PageResult getFactoryKilnPage(FactoryKilnPageReqVO pageReqVO) { - IPage pageResult = factoryKilnMapper.getFactoryKilnPage(pageReqVO,MyBatisUtils.buildPage(pageReqVO)); + IPage pageResult = factoryKilnMapper.getFactoryKilnPage(pageReqVO, MyBatisUtils.buildPage(pageReqVO)); return new PageResult<>(pageResult.getRecords(), pageResult.getTotal()); } + @Override + public List getFactoryKilnByFactoryId(Long factoryId) { + return factoryKilnMapper.selectList(new LambdaQueryWrapper().eq(factoryId != null, FactoryKilnDO::getFactoryId, factoryId)); + } + } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineService.java index fad4c86c..72570369 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineService.java @@ -1,11 +1,13 @@ package cn.iocoder.yudao.module.smartfactory.service.factorypackingline; -import java.util.*; -import javax.validation.*; -import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.*; -import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorypackingline.FactoryPackingLineDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.FactoryPackingLinePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.FactoryPackingLineRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.FactoryPackingLineSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorypackingline.FactoryPackingLineDO; + +import javax.validation.Valid; +import java.util.List; /** * 打包线配置 Service 接口 @@ -52,4 +54,11 @@ public interface FactoryPackingLineService { */ PageResult getFactoryPackingLinePage(FactoryPackingLinePageReqVO pageReqVO); + /** + * 通过工厂ids获取打包线列表 + * + * @param factoryIds + * @return + */ + List getFactoryPackingLineByFactoryId(List factoryIds); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineServiceImpl.java index 9e968bf8..f368edcd 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorypackingline/FactoryPackingLineServiceImpl.java @@ -1,19 +1,21 @@ package cn.iocoder.yudao.module.smartfactory.service.factorypackingline; +import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; -import cn.iocoder.yudao.module.smartfactory.controller.admin.factorykiln.vo.FactoryKilnRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.FactoryPackingLinePageReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.FactoryPackingLineRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorypackingline.vo.FactoryPackingLineSaveReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorypackingline.FactoryPackingLineDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorypackingline.FactoryPackingLineMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.List; /** * 打包线配置 Service 实现类 @@ -61,4 +63,10 @@ public class FactoryPackingLineServiceImpl implements FactoryPackingLineService } + @Override + public List getFactoryPackingLineByFactoryId(List factoryIds) { + return factoryPackingLineMapper.selectList(new LambdaQueryWrapper() + .in(CollectionUtil.isNotEmpty(factoryIds), FactoryPackingLineDO::getFactoryId, factoryIds)); + } + } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java index 2b41d6cf..11ebf04a 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataService.java @@ -92,7 +92,7 @@ public interface ScreenDataService { * * @return */ - DataOverviewVO getDataOverview(); + DataOverviewVO getDataOverview(Long factoryId); /** * 获取大屏出入库 diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java index c70f5dea..ddbbb0d3 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/screendata/ScreenDataServiceImpl.java @@ -1,36 +1,49 @@ package cn.iocoder.yudao.module.smartfactory.service.screendata; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.Month; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import cn.iocoder.yudao.framework.common.enums.AssetsTypeCodeEnum; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryforklift.vo.FactoryForkliftRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.*; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.device.cameradevice.CameraDeviceDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydataoverview.FactoryDataOverviewDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryforklift.FactoryForkliftDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorykiln.FactoryKilnDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorypackingline.FactoryPackingLineDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO; -import cn.iocoder.yudao.module.smartfactory.dal.dataobject.screenfactoryextra.ScreenFactoryExtraDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydataoverview.FactoryDataOverviewMapper; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.factoryforklift.FactoryForkliftMapper; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.screendata.ScreenDataMapper; import cn.iocoder.yudao.module.smartfactory.framework.util.HttpUtil; import cn.iocoder.yudao.module.smartfactory.service.device.cameradevice.CameraDeviceService; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataService; -import cn.iocoder.yudao.module.smartfactory.service.factorydataoverview.FactoryDataOverviewService; import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService; +import cn.iocoder.yudao.module.smartfactory.service.factorykiln.FactoryKilnService; +import cn.iocoder.yudao.module.smartfactory.service.factorypackingline.FactoryPackingLineService; import cn.iocoder.yudao.module.smartfactory.service.hik.HikService; import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService; import cn.iocoder.yudao.module.smartfactory.service.screenfactoryextra.ScreenFactoryExtraService; import cn.iocoder.yudao.module.smartfactory.service.staff.StaffService; +import cn.iocoder.yudao.module.system.api.assets.AssetsTypeApi; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.vo.AdminUserRpcVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jodd.util.StringUtil; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; @@ -57,8 +70,6 @@ public class ScreenDataServiceImpl implements ScreenDataService { @Resource private FactoryDataService factoryDataService; @Resource - private FactoryDataOverviewService factoryDataOverviewService; - @Resource private FactoryDataOverviewMapper factoryDataOverviewMapper; @Resource @@ -67,6 +78,19 @@ public class ScreenDataServiceImpl implements ScreenDataService { @Resource private HikService hikService; + @Resource + private AdminUserApi adminUserApi; + @Resource + private FactoryKilnService factoryKilnService; + @Resource + private FactoryPackingLineService factoryPackingLineService; + @Resource + private AssetsTypeApi assetsTypeApi; + @Resource + private FactoryForkliftMapper factoryForkliftMapper; + @Resource + private ScreenDataMapper screenDataMapper; + @Override public List getProvincesData(String code) { return factoryInfoService.getProvincesData(code); @@ -257,20 +281,123 @@ public class ScreenDataServiceImpl implements ScreenDataService { } @Override - public DataOverviewVO getDataOverview() { + public DataOverviewVO getDataOverview(Long factoryId) { DataOverviewVO vo = new DataOverviewVO(); - List extras = screenFactoryExtraService.list(); - List list = factoryDataOverviewService.list(); +// List extras = screenFactoryExtraService.list(); +// List list = factoryDataOverviewService.list(); + //获取工厂列表 - vo.setTotal(list.stream().mapToInt(FactoryDataOverviewDO::getWorkerNum).sum()); - vo.setYlNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getYlNum).sum()); - vo.setForkliftTotal(list.stream().mapToInt(FactoryDataOverviewDO::getTruckTotalNum).sum()); - vo.setTruckOnNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getTruckOnNum).sum()); - vo.setTruckOffNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getTruckOffNum).sum()); - vo.setDbxNum(list.stream().mapToInt(FactoryDataOverviewDO::getDbxNum).sum()); + List factoryList = factoryInfoService.getFactoryList(Collections.singletonList(factoryId)); + Map factoryMap = factoryList.stream().collect(Collectors.toMap(FactoryInfoDO::getId, v -> v)); + // ---------------------------------- 用户 ---------------------------------- + // -- 通过工厂id获取部门列表 -> 再通过部门列表获取用户列表 + List users = adminUserApi.getFactoryUsers(factoryId).getData(); + vo.setTotal(users.size()); + int femaleTotal = (int) users.stream().filter(a -> a.getSex() == 2).count(); + vo.setFemaleTotal(femaleTotal); + vo.setMaleTotal(users.size() - femaleTotal); + vo.setUsers(users); + // ---------------------------------- 窑炉 ---------------------------------- + List factoryKilnDOS = factoryKilnService.getFactoryKilnByFactoryId(factoryId); + vo.setYlNum(factoryKilnDOS.size()); + Map> factoryKilnMap = factoryKilnDOS.stream().collect(Collectors.groupingBy(FactoryKilnDO::getFactoryId)); + List factoryKilnList = new ArrayList<>(); + for (Map.Entry> entry : factoryKilnMap.entrySet()) { + FactoryKilnVO factoryKilnVO = new FactoryKilnVO(); + factoryKilnVO.setFactoryId(entry.getKey()); + factoryKilnVO.setFactoryName(factoryMap.get(entry.getKey()) == null ? "未分配到工厂部门" : factoryMap.get(entry.getKey()).getName()); + factoryKilnVO.setNumber(entry.getValue().size()); + BigDecimal totalCapacity = entry.getValue().stream() + .filter(f -> f.getCapacity() != null) + .map(FactoryKilnDO::getCapacity) + .reduce(BigDecimal.ZERO, BigDecimal::add); + factoryKilnVO.setCapacity(totalCapacity); + factoryKilnList.add(factoryKilnVO); + } + vo.setFactoryKilnList(factoryKilnList); + // ---------------------------------- 打包线 ---------------------------------- + List factoryPackingLineDOS = factoryPackingLineService.getFactoryPackingLineByFactoryId(Collections.singletonList(factoryId)); + Map> factoryPackingLineMap = factoryPackingLineDOS.stream().collect(Collectors.groupingBy(FactoryPackingLineDO::getFactoryId)); + vo.setDbxNum(factoryPackingLineDOS.size()); + List FactoryPackingLineList = new ArrayList<>(); + for (Map.Entry> entry : factoryPackingLineMap.entrySet()) { + FactoryPackingLineVO factoryPackingLineVO = new FactoryPackingLineVO(); + factoryPackingLineVO.setFactoryId(entry.getKey()); + factoryPackingLineVO.setFactoryName(factoryMap.get(entry.getKey()).getName()); + factoryPackingLineVO.setNumber(entry.getValue().size()); + FactoryPackingLineList.add(factoryPackingLineVO); + } + vo.setFactoryPackingLineList(FactoryPackingLineList); + + // ---------------------------------- 叉车 ---------------------------------- + List forkliftList = new ArrayList<>(); + List forkliftOilTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.FORKLIFT_OIL).getData(); + List forkliftElectricityTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.FORKLIFT_ELECTRICITY).getData(); + List factoryForkliftOil = factoryForkliftMapper.getFactoryForkliftByFactoryIdAndTypeIds(Collections.singletonList(factoryId), forkliftOilTypeIds); + List forkliftElectricity = factoryForkliftMapper.getFactoryForkliftByFactoryIdAndTypeIds(Collections.singletonList(factoryId), forkliftElectricityTypeIds); + vo.setForkliftTotal(factoryForkliftOil.size() + forkliftElectricity.size()); + + // -- 插入未分配数量 + List notAllocatedFactoryForkliftOil = factoryForkliftOil.stream().filter(a -> a.getFactoryId() == null).collect(Collectors.toList()); + List notAllocatedForkliftElectricity = forkliftElectricity.stream().filter(a -> a.getFactoryId() == null).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(notAllocatedFactoryForkliftOil) || CollectionUtil.isNotEmpty(notAllocatedForkliftElectricity)) { + forkliftList.add(new ForkliftVO().setFactoryName("未分配") + .setTotalNum(notAllocatedFactoryForkliftOil.size() + notAllocatedForkliftElectricity.size()) + .setOilNum(notAllocatedFactoryForkliftOil.size()) + .setElectricityNum(notAllocatedForkliftElectricity.size())); + } + List allocatedFactoryForkliftOil = factoryForkliftOil.stream().filter(a -> a.getFactoryId() != null).collect(Collectors.toList()); + List allocatedForkliftElectricity = forkliftElectricity.stream().filter(a -> a.getFactoryId() != null).collect(Collectors.toList()); + Map> allocatedFactoryForkliftOilMap = allocatedFactoryForkliftOil.stream().collect(Collectors.groupingBy(FactoryForkliftRespVO::getFactoryId)); + Map> allocatedForkliftElectricityMap = allocatedForkliftElectricity.stream().collect(Collectors.groupingBy(FactoryForkliftRespVO::getFactoryId)); + + + List allocatedFactoryForkliftOilFactoryIdIds = allocatedFactoryForkliftOil.stream().map(FactoryForkliftRespVO::getFactoryId).collect(Collectors.toList()); + List allocatedForkliftElectricityFactoryIdIds = allocatedForkliftElectricity.stream().map(FactoryForkliftRespVO::getFactoryId).collect(Collectors.toList()); + Set mergeFactoryIdIds = CollectionUtil.unionDistinct(allocatedFactoryForkliftOilFactoryIdIds, allocatedForkliftElectricityFactoryIdIds); + + for (Long mergeFactoryIdId : mergeFactoryIdIds) { + FactoryInfoDO factoryInfoDO = factoryMap.get(mergeFactoryIdId); + if (factoryInfoDO != null) { + List allocatedFactoryForkliftOilItems = allocatedFactoryForkliftOilMap.get(mergeFactoryIdId); + List allocatedForkliftElectricityItems = allocatedForkliftElectricityMap.get(mergeFactoryIdId); + Integer oilNum = CollectionUtil.isNotEmpty(allocatedFactoryForkliftOilItems) ? allocatedFactoryForkliftOilItems.size() : 0; + Integer electricityNum = CollectionUtil.isNotEmpty(allocatedForkliftElectricityItems) ? allocatedForkliftElectricityItems.size() : 0; + forkliftList.add(new ForkliftVO().setFactoryName(factoryInfoDO.getName()) + .setTotalNum(oilNum + electricityNum) + .setOilNum(oilNum) + .setElectricityNum(electricityNum)); + } + } + vo.setForkliftList(forkliftList); + // -- 工厂叉车列表 + List factoryForkliftDOS = new ArrayList<>(); + if (factoryId != null) { + factoryForkliftDOS = factoryForkliftMapper.selectList(new LambdaQueryWrapper().eq(FactoryForkliftDO::getFactoryId, factoryId)); + } + vo.setFactoryForkliftList(factoryForkliftDOS); + + // ---------------------------------- 托盘 ---------------------------------- + List trayAssetsTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.TRAY).getData(); + List trayList = screenDataMapper.getAssetsNumByFactoryIdAndTypeIds(Collections.singletonList(factoryId), trayAssetsTypeIds); + vo.setTpNum(trayList.stream().mapToInt(AssetsStockVO::getStock).sum()); + vo.setTrayList(trayList); + + + // ---------------------------------- 托盘 ---------------------------------- + List strapsAssetsTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.STRAPS).getData(); + List strapsList = screenDataMapper.getAssetsNumByFactoryIdAndTypeIds(Collections.singletonList(factoryId), strapsAssetsTypeIds); + vo.setBdNum(strapsList.stream().mapToInt(AssetsStockVO::getStock).sum()); + vo.setStrapsList(strapsList); + +// +// vo.setForkliftTotal(list.stream().mapToInt(FactoryDataOverviewDO::getTruckTotalNum).sum()); +// vo.setTruckOnNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getTruckOnNum).sum()); +// vo.setTruckOffNum(extras.stream().mapToInt(ScreenFactoryExtraDO::getTruckOffNum).sum()); +// +// vo.setTpNum(list.stream().mapToInt(FactoryDataOverviewDO::getTpNum).sum()); +// vo.setBdNum(list.stream().mapToInt(FactoryDataOverviewDO::getBdNum).sum()); - vo.setTpNum(list.stream().mapToInt(FactoryDataOverviewDO::getTpNum).sum()); - vo.setBdNum(list.stream().mapToInt(FactoryDataOverviewDO::getBdNum).sum()); List factoryDataDOS = factoryDataService.getTodayInboundAndOutboundOverview(null); Integer outTotalNum = factoryDataDOS.stream().filter(a -> a.getDataType() == 1).mapToInt(FactoryDataDO::getTotalNum).sum(); diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryforklift/FactoryForkliftMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryforklift/FactoryForkliftMapper.xml index d1b658ec..3feb1d1a 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryforklift/FactoryForkliftMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factoryforklift/FactoryForkliftMapper.xml @@ -54,4 +54,33 @@ + diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/screendata/ScreenDataMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/screendata/ScreenDataMapper.xml new file mode 100644 index 00000000..107ea1c9 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/screendata/ScreenDataMapper.xml @@ -0,0 +1,40 @@ + + + + + + + +