### commit message
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查询条件。
This commit is contained in:
parent
16a6f35602
commit
b83c48f2b5
@ -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";
|
||||
}
|
||||
|
@ -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<List<BpmModelRpcVO>> getModelList();
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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<List<BpmModelRpcVO>> getModelList() {
|
||||
ModelQuery modelQuery = repositoryService.createModelQuery();
|
||||
/**对模型添加租户*/
|
||||
modelQuery.modelTenantId(TenantContextHolder.getTenantId().toString());
|
||||
// 执行查询
|
||||
List<Model> models = modelQuery.orderByCreateTime().desc().list();
|
||||
List<BpmModelRpcVO> list = new ArrayList<>();
|
||||
// -- 需要过滤的 - 列表
|
||||
List<String> 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);
|
||||
}
|
||||
}
|
@ -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<List<Long>> getUserIdsByUserNature(@RequestParam("userNature") Integer userNature);
|
||||
|
||||
@GetMapping(PREFIX + "/getFactoryUsers")
|
||||
@Operation(summary = "获取同部门所有用户id")
|
||||
@Parameter(name = "factoryId", description = "工厂id", example = "1024", required = false)
|
||||
CommonResult<List<AdminUserRpcVO>> getFactoryUsers(@RequestParam(name = "factoryId", required = false) Long factoryId);
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
/**
|
||||
* 用户性别
|
||||
* <p>
|
||||
* 枚举类 {@link SexEnum}
|
||||
*/
|
||||
private Integer sex;
|
||||
/**
|
||||
* 用户头像
|
||||
*/
|
||||
private String avatar;
|
||||
/**
|
||||
* 帐号状态
|
||||
* <p>
|
||||
* 枚举 {@link CommonStatusEnum}
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 是否允许外勤打卡 0否 1是
|
||||
* <p>
|
||||
* 枚举 {@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;
|
||||
}
|
@ -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<List<AdminUserRpcVO>> getFactoryUsers(Long factoryId) {
|
||||
List<AdminUserDO> factoryUsers = userService.getFactoryUsers(factoryId);
|
||||
return success(BeanUtils.toBean(factoryUsers, AdminUserRpcVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<CommonlyUsedSaveReqVO> 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<Boolean> batchUpdate(@Valid @RequestBody List<CommonlyUsedSaveReqVO> 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<Boolean> batchDelete(@RequestBody List<Long> ids) {
|
||||
commonlyUsedService.batchDelete(ids);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得用户常用应用配置")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -19,9 +19,6 @@ 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;
|
||||
|
||||
|
@ -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<AuthPermissionInfoRespVO.MenuVO> menus;
|
||||
|
||||
@Schema(description = "流程列表")
|
||||
private List<BpmModelRpcVO> modelList;
|
||||
|
||||
}
|
||||
|
@ -108,14 +108,12 @@ public class UserController {
|
||||
return success(true);
|
||||
}
|
||||
@GetMapping("/gpsPosition")
|
||||
@Operation(summary = "GPS定位")
|
||||
public CommonResult<Boolean> gpsPosition() {
|
||||
userService.gpsPosition();
|
||||
@Operation(summary = "GPS用户全量更新")
|
||||
public CommonResult<Boolean> gpsFullUserUpdate() {
|
||||
userService.gpsFullUserUpdate();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得用户分页列表")
|
||||
@PreAuthorize("@ss.hasPermission('system:user:list')")
|
||||
|
@ -35,10 +35,7 @@ public class CommonlyUsedDO extends BaseDO {
|
||||
* 类型 1流程 2菜单
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 路由地址
|
||||
*/
|
||||
private String routing;
|
||||
|
||||
/**
|
||||
* 菜单id或流程id 根据具体类型来
|
||||
*/
|
||||
|
@ -21,7 +21,6 @@ public interface CommonlyUsedMapper extends BaseMapperX<CommonlyUsedDO> {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<CommonlyUsedDO>()
|
||||
.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())
|
||||
|
@ -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 {
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ public class AssetsTypeServiceImpl implements AssetsTypeService {
|
||||
@Override
|
||||
public List<Long> getAssetsTypeIdsByCode(String code) {
|
||||
List<AssetsTypeDO> assetsTypeDOS = assetsTypeMapper.selectList(new LambdaQueryWrapper<AssetsTypeDO>()
|
||||
.eq(AssetsTypeDO::getCode, code));
|
||||
.like(AssetsTypeDO::getCode, code));
|
||||
if (assetsTypeDOS.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
@ -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<CommonlyUsedSaveReqVO> list);
|
||||
|
||||
/**
|
||||
* 批量更新
|
||||
*
|
||||
* @param list
|
||||
*/
|
||||
void batchUpdate(List<CommonlyUsedSaveReqVO> list);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
*/
|
||||
void batchDelete(List<Long> ids);
|
||||
}
|
||||
|
@ -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<CommonlyUsedDO> list = commonlyUsedMapper.selectList(new LambdaQueryWrapper<CommonlyUsedDO>()
|
||||
.eq(CommonlyUsedDO::getDeleted, 0).eq(CommonlyUsedDO::getUserId, userId).orderByAsc(CommonlyUsedDO::getSort));
|
||||
Map<Long, CommonlyUsedDO> map = list.stream().collect(Collectors.toMap(CommonlyUsedDO::getId, a -> a));
|
||||
List<CommonlyUsedRespVO> commonlyUsedRespVOS = new ArrayList<>();
|
||||
Map<String, List<CommonlyUsedDO>> map = list.stream().collect(Collectors.groupingBy(a -> a.getType() + "_" + a.getObjectId()));
|
||||
// -- 获取菜单列表
|
||||
List<MenuDO> menuList = new ArrayList<>();
|
||||
Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId());
|
||||
if (CollectionUtil.isNotEmpty(roleIds)) {
|
||||
Set<Long> menuIds = permissionService.getRoleMenuListByRoleId(roleIds);
|
||||
if (CollectionUtil.isNotEmpty(menuIds)) {
|
||||
menuList = menuService.getMenuList(menuIds);
|
||||
menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus()));
|
||||
}
|
||||
}
|
||||
List<MenuDO> menuList = menuService.getAvailableMenuListByRoleId();
|
||||
// -- 获取流程列表
|
||||
List<BpmModelRpcVO> modelList = bpmModelApi.getModelList().getCheckedData();
|
||||
List<String> menuIds = new ArrayList<>();
|
||||
List<String> 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<CommonlyUsedRespVO> 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<CommonlyUsedDO> 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<CommonlyUsedDO> 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<AuthPermissionInfoRespVO.MenuVO> 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<CommonlyUsedSaveReqVO> list) {
|
||||
List<CommonlyUsedDO> saveList = BeanUtils.toBean(list, CommonlyUsedDO.class);
|
||||
commonlyUsedMapper.insertBatch(saveList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchUpdate(List<CommonlyUsedSaveReqVO> list) {
|
||||
List<CommonlyUsedDO> updateList = BeanUtils.toBean(list, CommonlyUsedDO.class);
|
||||
commonlyUsedMapper.updateBatch(updateList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchDelete(List<Long> ids) {
|
||||
commonlyUsedMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -104,14 +104,30 @@ public interface DeptService {
|
||||
|
||||
/**
|
||||
* 获得 部门树
|
||||
*
|
||||
* @return 部门列表
|
||||
*/
|
||||
List<DeptDO> getDeptTree();
|
||||
|
||||
/**
|
||||
* 获得指定部门信息
|
||||
*
|
||||
* @param factoryId 工厂编号
|
||||
* @return 部门信息
|
||||
*/
|
||||
DeptDO getDeptByFactoryId(Long factoryId);
|
||||
|
||||
/**
|
||||
* 获取所有工厂部门
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<DeptDO> getFactoryDeptList();
|
||||
|
||||
/**
|
||||
* 获取所有工厂部门
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<DeptDO> getFactoryDeptList(Long factoryId);
|
||||
}
|
||||
|
@ -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<DeptDO> getFactoryDeptList() {
|
||||
return this.getFactoryDeptList(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeptDO> getFactoryDeptList(Long factoryId) {
|
||||
return deptMapper.selectList(new LambdaQueryWrapper<DeptDO>()
|
||||
.eq(factoryId != null, DeptDO::getFactoryId, factoryId)
|
||||
.isNotNull(DeptDO::getFactoryId)
|
||||
.eq(DeptDO::getStatus, CommonStatusEnum.ENABLE.getStatus()));
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,6 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* 菜单 Service 接口
|
||||
*
|
||||
|
||||
*/
|
||||
public interface MenuService {
|
||||
|
||||
@ -84,4 +82,10 @@ public interface MenuService {
|
||||
*/
|
||||
List<MenuDO> getMenuList(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 通过当前登陆用户的角色,获得可用菜单列表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<MenuDO> getAvailableMenuListByRoleId();
|
||||
}
|
||||
|
@ -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<MenuDO> getAvailableMenuListByRoleId() {
|
||||
List<MenuDO> menuList = new ArrayList<>();
|
||||
Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId());
|
||||
if (CollectionUtil.isNotEmpty(roleIds)) {
|
||||
Set<Long> menuIds = permissionService.getRoleMenuListByRoleId(roleIds);
|
||||
if (CollectionUtil.isNotEmpty(menuIds)) {
|
||||
menuList = this.getMenuList(menuIds);
|
||||
menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus()));
|
||||
}
|
||||
}
|
||||
return menuList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验父菜单是否合法
|
||||
* <p>
|
||||
|
@ -141,7 +141,25 @@ public interface AdminUserService {
|
||||
*/
|
||||
PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO);
|
||||
|
||||
void gpsPosition();
|
||||
/**
|
||||
* gps用户全量更新
|
||||
*/
|
||||
void gpsFullUserUpdate();
|
||||
|
||||
/**
|
||||
* 获取工厂用户列表
|
||||
*
|
||||
* @param factoryId
|
||||
* @return
|
||||
*/
|
||||
List<AdminUserDO> getFactoryUsers(Long factoryId);
|
||||
|
||||
/**
|
||||
* gps用户增量更新
|
||||
*
|
||||
* @param adminUserDO
|
||||
*/
|
||||
void gpsIncrementalSynchronizationOfUsers(AdminUserDO adminUserDO);
|
||||
|
||||
/**
|
||||
* 获得工厂用户分页列表
|
||||
@ -321,6 +339,7 @@ public interface AdminUserService {
|
||||
|
||||
/**
|
||||
* 获取指令性质得用户列表
|
||||
*
|
||||
* @param userNature 用户性质
|
||||
* @return 用户列表
|
||||
*/
|
||||
|
@ -290,14 +290,32 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gpsPosition() {
|
||||
// TODO: 2024/9/2
|
||||
Set<Long> deptCondition = getDeptCondition(130L);
|
||||
public void gpsFullUserUpdate() {
|
||||
// 查询出所有带工厂id的部门ids
|
||||
List<DeptDO> deptList = deptService.getFactoryDeptList();
|
||||
List<Long> deptCondition = deptList.stream().map(DeptDO::getId).collect(Collectors.toList());
|
||||
List<AdminUserDO> adminUserDOS = userMapper.selectList(new LambdaQueryWrapper<AdminUserDO>()
|
||||
.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<AdminUserDO> getFactoryUsers(Long factoryId) {
|
||||
List<DeptDO> deptList = deptService.getFactoryDeptList(factoryId);
|
||||
List<Long> deptCondition = deptList.stream().map(DeptDO::getId).collect(Collectors.toList());
|
||||
return userMapper.selectList(new LambdaQueryWrapper<AdminUserDO>()
|
||||
.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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -146,8 +146,8 @@ public class FactoryScreenDataController {
|
||||
@GetMapping("/getDataOverview")
|
||||
@Operation(summary = "获取大屏数据总览")
|
||||
@PermitAll
|
||||
public CommonResult<DataOverviewVO> getDataOverview() {
|
||||
DataOverviewVO data = screenDataService.getDataOverview();
|
||||
public CommonResult<DataOverviewVO> getDataOverview(@RequestParam(required = false) Long factoryId) {
|
||||
DataOverviewVO data = screenDataService.getDataOverview(factoryId);
|
||||
return success(data);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
@ -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<AdminUserRpcVO> 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<FactoryKilnVO> factoryKilnList;
|
||||
|
||||
@Schema(description = "打包线数量")
|
||||
private Integer dbxNum;
|
||||
@Schema(description = "打包线信息")
|
||||
private List<FactoryPackingLineVO> FactoryPackingLineList;
|
||||
|
||||
|
||||
@Schema(description = "叉车台数")
|
||||
private Integer forkliftTotal;
|
||||
|
||||
@Schema(description = "叉车信息")
|
||||
private List<ForkliftVO> forkliftList;
|
||||
|
||||
@Schema(description = "工厂叉车列表")
|
||||
private List<FactoryForkliftDO> factoryForkliftList;
|
||||
|
||||
|
||||
@Schema(description = "托盘数")
|
||||
private Integer tpNum;
|
||||
@Schema(description = "托盘信息")
|
||||
private List<AssetsStockVO> trayList;
|
||||
|
||||
|
||||
@Schema(description = "绑带数")
|
||||
private Integer bdNum;
|
||||
@Schema(description = "托盘信息")
|
||||
private List<AssetsStockVO> strapsList;
|
||||
|
||||
|
||||
@Schema(description = "出库")
|
||||
private Integer outTotalNum;
|
||||
@Schema(description = "入库")
|
||||
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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<FactoryForkliftDO> {
|
||||
* @return
|
||||
*/
|
||||
IPage<FactoryForkliftRespVO> getFactoryForkliftPage(@Param("vo") FactoryForkliftPageReqVO pageReqVO, @Param("page") Page<Object> objectPage);
|
||||
|
||||
/**
|
||||
* 通过工厂ids 和 资产类型ids 获取叉车列表
|
||||
*
|
||||
* @param factoryIds
|
||||
* @param typeIds
|
||||
* @return
|
||||
*/
|
||||
List<FactoryForkliftRespVO> getFactoryForkliftByFactoryIdAndTypeIds(@Param("factoryIds") List<Long> factoryIds, @Param("typeIds") List<Long> typeIds);
|
||||
}
|
||||
|
@ -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<AssetsStockVO> getAssetsNumByFactoryIdAndTypeIds(@Param("factoryIds") List<Long> factoryIds, @Param("typeIds") List<Long> typeIds);
|
||||
}
|
@ -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<FactoryInfoDO> getFactoryList(Collection<Long> ids) {
|
||||
|
||||
return factoryInfoMapper.selectList(FactoryInfoDO::getId, ids);
|
||||
return factoryInfoMapper.selectList(new LambdaQueryWrapper<FactoryInfoDO>()
|
||||
.in(CollectionUtil.isNotEmpty(ids), FactoryInfoDO::getId, ids));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -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<FactoryKilnRespVO> getFactoryKilnPage(FactoryKilnPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 通过工厂id获取窑炉列表
|
||||
*
|
||||
* @param factoryId
|
||||
* @return
|
||||
*/
|
||||
List<FactoryKilnDO> getFactoryKilnByFactoryId(Long factoryId);
|
||||
}
|
||||
|
@ -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 实现类
|
||||
@ -60,4 +61,9 @@ public class FactoryKilnServiceImpl implements FactoryKilnService {
|
||||
return new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FactoryKilnDO> getFactoryKilnByFactoryId(Long factoryId) {
|
||||
return factoryKilnMapper.selectList(new LambdaQueryWrapper<FactoryKilnDO>().eq(factoryId != null, FactoryKilnDO::getFactoryId, factoryId));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<FactoryPackingLineRespVO> getFactoryPackingLinePage(FactoryPackingLinePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 通过工厂ids获取打包线列表
|
||||
*
|
||||
* @param factoryIds
|
||||
* @return
|
||||
*/
|
||||
List<FactoryPackingLineDO> getFactoryPackingLineByFactoryId(List<Long> factoryIds);
|
||||
}
|
||||
|
@ -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<FactoryPackingLineDO> getFactoryPackingLineByFactoryId(List<Long> factoryIds) {
|
||||
return factoryPackingLineMapper.selectList(new LambdaQueryWrapper<FactoryPackingLineDO>()
|
||||
.in(CollectionUtil.isNotEmpty(factoryIds), FactoryPackingLineDO::getFactoryId, factoryIds));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ public interface ScreenDataService {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
DataOverviewVO getDataOverview();
|
||||
DataOverviewVO getDataOverview(Long factoryId);
|
||||
|
||||
/**
|
||||
* 获取大屏出入库
|
||||
|
@ -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<ProvincesDataRespVO> 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<ScreenFactoryExtraDO> extras = screenFactoryExtraService.list();
|
||||
List<FactoryDataOverviewDO> list = factoryDataOverviewService.list();
|
||||
// List<ScreenFactoryExtraDO> extras = screenFactoryExtraService.list();
|
||||
// List<FactoryDataOverviewDO> 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<FactoryInfoDO> factoryList = factoryInfoService.getFactoryList(Collections.singletonList(factoryId));
|
||||
Map<Long, FactoryInfoDO> factoryMap = factoryList.stream().collect(Collectors.toMap(FactoryInfoDO::getId, v -> v));
|
||||
// ---------------------------------- 用户 ----------------------------------
|
||||
// -- 通过工厂id获取部门列表 -> 再通过部门列表获取用户列表
|
||||
List<AdminUserRpcVO> 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<FactoryKilnDO> factoryKilnDOS = factoryKilnService.getFactoryKilnByFactoryId(factoryId);
|
||||
vo.setYlNum(factoryKilnDOS.size());
|
||||
Map<Long, List<FactoryKilnDO>> factoryKilnMap = factoryKilnDOS.stream().collect(Collectors.groupingBy(FactoryKilnDO::getFactoryId));
|
||||
List<FactoryKilnVO> factoryKilnList = new ArrayList<>();
|
||||
for (Map.Entry<Long, List<FactoryKilnDO>> 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<FactoryPackingLineDO> factoryPackingLineDOS = factoryPackingLineService.getFactoryPackingLineByFactoryId(Collections.singletonList(factoryId));
|
||||
Map<Long, List<FactoryPackingLineDO>> factoryPackingLineMap = factoryPackingLineDOS.stream().collect(Collectors.groupingBy(FactoryPackingLineDO::getFactoryId));
|
||||
vo.setDbxNum(factoryPackingLineDOS.size());
|
||||
List<FactoryPackingLineVO> FactoryPackingLineList = new ArrayList<>();
|
||||
for (Map.Entry<Long, List<FactoryPackingLineDO>> 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<ForkliftVO> forkliftList = new ArrayList<>();
|
||||
List<Long> forkliftOilTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.FORKLIFT_OIL).getData();
|
||||
List<Long> forkliftElectricityTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.FORKLIFT_ELECTRICITY).getData();
|
||||
List<FactoryForkliftRespVO> factoryForkliftOil = factoryForkliftMapper.getFactoryForkliftByFactoryIdAndTypeIds(Collections.singletonList(factoryId), forkliftOilTypeIds);
|
||||
List<FactoryForkliftRespVO> forkliftElectricity = factoryForkliftMapper.getFactoryForkliftByFactoryIdAndTypeIds(Collections.singletonList(factoryId), forkliftElectricityTypeIds);
|
||||
vo.setForkliftTotal(factoryForkliftOil.size() + forkliftElectricity.size());
|
||||
|
||||
// -- 插入未分配数量
|
||||
List<FactoryForkliftRespVO> notAllocatedFactoryForkliftOil = factoryForkliftOil.stream().filter(a -> a.getFactoryId() == null).collect(Collectors.toList());
|
||||
List<FactoryForkliftRespVO> 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<FactoryForkliftRespVO> allocatedFactoryForkliftOil = factoryForkliftOil.stream().filter(a -> a.getFactoryId() != null).collect(Collectors.toList());
|
||||
List<FactoryForkliftRespVO> allocatedForkliftElectricity = forkliftElectricity.stream().filter(a -> a.getFactoryId() != null).collect(Collectors.toList());
|
||||
Map<Long, List<FactoryForkliftRespVO>> allocatedFactoryForkliftOilMap = allocatedFactoryForkliftOil.stream().collect(Collectors.groupingBy(FactoryForkliftRespVO::getFactoryId));
|
||||
Map<Long, List<FactoryForkliftRespVO>> allocatedForkliftElectricityMap = allocatedForkliftElectricity.stream().collect(Collectors.groupingBy(FactoryForkliftRespVO::getFactoryId));
|
||||
|
||||
|
||||
List<Long> allocatedFactoryForkliftOilFactoryIdIds = allocatedFactoryForkliftOil.stream().map(FactoryForkliftRespVO::getFactoryId).collect(Collectors.toList());
|
||||
List<Long> allocatedForkliftElectricityFactoryIdIds = allocatedForkliftElectricity.stream().map(FactoryForkliftRespVO::getFactoryId).collect(Collectors.toList());
|
||||
Set<Long> mergeFactoryIdIds = CollectionUtil.unionDistinct(allocatedFactoryForkliftOilFactoryIdIds, allocatedForkliftElectricityFactoryIdIds);
|
||||
|
||||
for (Long mergeFactoryIdId : mergeFactoryIdIds) {
|
||||
FactoryInfoDO factoryInfoDO = factoryMap.get(mergeFactoryIdId);
|
||||
if (factoryInfoDO != null) {
|
||||
List<FactoryForkliftRespVO> allocatedFactoryForkliftOilItems = allocatedFactoryForkliftOilMap.get(mergeFactoryIdId);
|
||||
List<FactoryForkliftRespVO> 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<FactoryForkliftDO> factoryForkliftDOS = new ArrayList<>();
|
||||
if (factoryId != null) {
|
||||
factoryForkliftDOS = factoryForkliftMapper.selectList(new LambdaQueryWrapper<FactoryForkliftDO>().eq(FactoryForkliftDO::getFactoryId, factoryId));
|
||||
}
|
||||
vo.setFactoryForkliftList(factoryForkliftDOS);
|
||||
|
||||
// ---------------------------------- 托盘 ----------------------------------
|
||||
List<Long> trayAssetsTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.TRAY).getData();
|
||||
List<AssetsStockVO> trayList = screenDataMapper.getAssetsNumByFactoryIdAndTypeIds(Collections.singletonList(factoryId), trayAssetsTypeIds);
|
||||
vo.setTpNum(trayList.stream().mapToInt(AssetsStockVO::getStock).sum());
|
||||
vo.setTrayList(trayList);
|
||||
|
||||
|
||||
// ---------------------------------- 托盘 ----------------------------------
|
||||
List<Long> strapsAssetsTypeIds = assetsTypeApi.getAssetsTypeIdsByCode(AssetsTypeCodeEnum.STRAPS).getData();
|
||||
List<AssetsStockVO> 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<FactoryDataDO> factoryDataDOS = factoryDataService.getTodayInboundAndOutboundOverview(null);
|
||||
Integer outTotalNum = factoryDataDOS.stream().filter(a -> a.getDataType() == 1).mapToInt(FactoryDataDO::getTotalNum).sum();
|
||||
|
@ -54,4 +54,33 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="getFactoryForkliftByFactoryIdAndTypeIds"
|
||||
resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factoryforklift.vo.FactoryForkliftRespVO">
|
||||
SELECT
|
||||
a.id,
|
||||
a.type_id,
|
||||
a.assets_no AS assetsNo,
|
||||
d.id AS factoryId,
|
||||
d.NAME AS factoryName,
|
||||
c.id AS forkliftId,
|
||||
c.*
|
||||
FROM
|
||||
zc_assets AS a
|
||||
LEFT JOIN sf_factory_forklift AS c ON a.assets_no = c.assets_no
|
||||
LEFT JOIN sf_factory_info AS d ON c.factory_id = d.id
|
||||
<where>
|
||||
<if test="factoryIds != null and factoryIds.size() > 0">
|
||||
and c.factory_id in
|
||||
<foreach collection="factoryIds" open="(" item="factoryId" separator="," close=")">
|
||||
#{factoryId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="typeIds != null and typeIds.size() > 0">
|
||||
and a.type_id in
|
||||
<foreach collection="typeIds" open="(" item="typeId" separator="," close=")">
|
||||
#{typeId}
|
||||
</foreach>
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.smartfactory.dal.mysql.screendata.ScreenDataMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
<select id="getAssetsNumByFactoryIdAndTypeIds"
|
||||
resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.AssetsStockVO">
|
||||
SELECT dept.factory_id AS factoryId,
|
||||
ifnull(d.name,'未分配') as factoryName,
|
||||
sum(b.stock) as stock
|
||||
FROM zc_assets AS a
|
||||
LEFT JOIN zc_dept_assets AS b ON a.id = b.assets_id
|
||||
LEFT JOIN system_dept AS dept ON dept.id = b.dept_id
|
||||
LEFT JOIN sf_factory_forklift AS c ON a.assets_no = c.assets_no
|
||||
LEFT JOIN sf_factory_info AS d ON dept.factory_id = d.id
|
||||
<where>
|
||||
b.deleted = 0
|
||||
and b.stock > 0
|
||||
<if test="factoryIds != null and factoryIds.size() > 0">
|
||||
and d.id in
|
||||
<foreach collection="factoryIds" open="(" item="factoryId" separator="," close=")">
|
||||
#{factoryId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="typeIds != null and typeIds.size() > 0">
|
||||
and a.type_id in
|
||||
<foreach collection="typeIds" open="(" item="typeId" separator="," close=")">
|
||||
#{typeId}
|
||||
</foreach>
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY dept.factory_id
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user