Merge remote-tracking branch 'origin/main'

main
liutao 2 days ago
commit 95e55d93e9

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 模具维修记录分页 Response VO含统计")
@Data
public class MoldRepairPageRespVO {
@Schema(description = "列表数据")
private List<MoldRepairRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "待完成数量 (status=0)")
private Long pendingCount;
@Schema(description = "已完成数量 (status=1)")
private Long finishedCount;
@Schema(description = "待维修数量 (repairStatus=0)")
private Long pendingRepairCount;
@Schema(description = "通过数量 (repairStatus=1)")
private Long passedCount;
@Schema(description = "不通过数量 (repairStatus=2)")
private Long failedCount;
}

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.common.controller.admin.moldticketmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 模具工单管理分页 Response VO含统计")
@Data
public class MoldTicketManagementPageRespVO {
@Schema(description = "列表数据")
private List<MoldTicketManagementRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "点检数量 (planType=1)")
private Long inspectCount;
@Schema(description = "保养数量 (planType=2)")
private Long maintainCount;
@Schema(description = "未作业数量 (jobStatus=0)")
private Long unworkedCount;
@Schema(description = "已作业数量 (jobStatus=1)")
private Long workedCount;
@Schema(description = "超时未作业数量 (jobStatus=2)")
private Long overtimeUnworkedCount;
@Schema(description = "超时已作业数量 (jobStatus=3)")
private Long overtimeWorkedCount;
@Schema(description = "取消数量 (jobStatus=4)")
private Long canceledCount;
}

@ -60,4 +60,13 @@ public interface MoldRepairMapper extends BaseMapperX<MoldRepairDO> {
return selectPage(reqVO,moldRepairDOLambdaQueryWrapperX );
}
default List<MoldRepairDO> selectList(MoldRepairPageReqVO reqVO) {
LambdaQueryWrapperX<MoldRepairDO> wrapper = new LambdaQueryWrapperX<>();
wrapper
.eqIfPresent(MoldRepairDO::getStatus, reqVO.getStatus())
.eqIfPresent(MoldRepairDO::getRepairStatus, reqVO.getRepairStatus())
.orderByDesc(MoldRepairDO::getCreateTime);
return selectList(wrapper);
}
}

@ -83,4 +83,13 @@ public interface MoldTicketManagementMapper extends BaseMapperX<MoldTicketManage
@Param("jobStatus") Integer jobStatus,
@Param("cancelReason") String cancelReason);
default List<MoldTicketManagementDO> selectList(MoldTicketManagementPageReqVO reqVO) {
LambdaQueryWrapperX<MoldTicketManagementDO> wrapper = new LambdaQueryWrapperX<>();
wrapper
.eqIfPresent(MoldTicketManagementDO::getPlanType, reqVO.getPlanType())
.eqIfPresent(MoldTicketManagementDO::getJobStatus, reqVO.getJobStatus())
.orderByDesc(MoldTicketManagementDO::getId);
return selectList(wrapper);
}
}

@ -345,6 +345,14 @@ public class DeviceController {
return success(true);
}
@PutMapping("/device-attribute/batch-update")
@Operation(summary = "根据 ID 批量更新设备点位类型、单位、倍率")
@PreAuthorize("@ss.hasPermission('iot:device:update')")
public CommonResult<Boolean> batchUpdateDeviceAttribute(@Valid @RequestBody DeviceAttributeBatchUpdateReqVO deviceAttributes) {
deviceService.updateDeviceAttributeBatch(deviceAttributes);
return success(true);
}
@DeleteMapping("/device-attribute/delete")
@Parameter(name = "id", description = "编号", required = true)
@Operation(summary = "删除设备属性")

@ -49,15 +49,15 @@ public enum TaskTypeEnum {
baseId = 0L;
}
switch (this) {
case DEVICE:
return 1000000L + baseId;
case WORK_ORDER:
return 2000000L + baseId;
case MOLD_WORK_ORDER:
return 3000000L + baseId;
default:
return 9000000L + baseId;
if (this == DEVICE) {
return 1000000L + baseId;
}
if (this == WORK_ORDER) {
return 2000000L + baseId;
}
if (this == MOLD_WORK_ORDER) {
return 3000000L + baseId;
}
return 9000000L + baseId;
}
}

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Schema(description = "管理后台 - 设备点位批量更新 Request VO")
@Data
public class DeviceAttributeBatchUpdateReqVO {
@Schema(description = "点位 ID 列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1024, 1025]")
@NotEmpty(message = "点位 ID 列表不能为空")
private List<Long> ids;
@Schema(description = "点位类型", example = "1")
private String attributeType;
@Schema(description = "单位", example = "kg")
private String dataUnit;
@Schema(description = "倍率", example = "1.0")
private Double ratio;
}

@ -99,6 +99,13 @@ public interface DeviceService {
*/
void updateDeviceAttribute(@Valid DeviceAttributeDO deviceAttribute);
/**
* ID
*
* @param deviceAttributes
*/
void updateDeviceAttributeBatch(@Valid DeviceAttributeBatchUpdateReqVO deviceAttributes);
/**
*
*

@ -779,6 +779,23 @@ public class DeviceServiceImpl implements DeviceService {
deviceAttributeMapper.updateById(deviceAttribute);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateDeviceAttributeBatch(DeviceAttributeBatchUpdateReqVO deviceAttributes) {
if (deviceAttributes == null || CollUtil.isEmpty(deviceAttributes.getIds())) {
return;
}
for (Long id : deviceAttributes.getIds()) {
DeviceContactModelDO updateObj = new DeviceContactModelDO();
updateObj.setId(id);
updateObj.setAttributeType(deviceAttributes.getAttributeType());
updateObj.setDataUnit(deviceAttributes.getDataUnit());
updateObj.setRatio(deviceAttributes.getRatio());
validateDeviceContactModelExists(updateObj.getId());
deviceContactModelMapper.updateById(updateObj);
}
}
@Override
public void deleteDeviceAttribute(Long id) {
// 校验存在
@ -1657,6 +1674,12 @@ public class DeviceServiceImpl implements DeviceService {
}
}
private void validateDeviceContactModelExists(Long id) {
if (deviceContactModelMapper.selectById(id) == null) {
throw exception(DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS);
}
}
private void deleteDeviceAttributeByDeviceId(Long deviceId) {
deviceAttributeMapper.deleteByDeviceId(deviceId);
}

@ -23,8 +23,8 @@ import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.DEVICE_CONTACT_MODEL_NOT_EXISTS;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_ATTRIBUTE_POTIN_CODE_EXISTS;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_POINT_CODE_EXISTS;
@ -130,7 +130,7 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
private void validateDeviceContactModelExists(Long id) {
if (deviceContactModelMapper.selectById(id) == null) {
throw exception(DEVICE_CONTACT_MODEL_NOT_EXISTS);
throw exception(DEVICE_MODEL_ATTRIBUTE_NOT_EXISTS);
}
}
@ -156,4 +156,4 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
return deviceContactModelMapper.selectList(Wrappers.<DeviceContactModelDO>lambdaQuery().eq(DeviceContactModelDO::getDeviceId,id));
}
}
}

@ -134,40 +134,38 @@ public class DeviceLedgerController {
@GetMapping("/page")
@Operation(summary = "获得设备台账分页")
@PreAuthorize("@ss.hasPermission('mes:device-ledger:query')")
public CommonResult<PageResult<?>> getDeviceLedgerPage(@Valid DeviceLedgerPageReqVO pageReqVO) {
PageResult<DeviceLedgerDO> pageResult = deviceLedgerService.getDeviceLedgerPage(pageReqVO);
Set<Long> workshopIds = pageResult.getList().stream()
.map(DeviceLedgerDO::getWorkshop)
.filter(StringUtils::isNotBlank) // 使用StringUtils或手动判断
.flatMap(workshop -> {
try {
return Stream.of(Long.valueOf(workshop.trim()));
} catch (NumberFormatException e) {
return Stream.empty(); // 转换失败时返回空流,相当于跳过
public CommonResult<DeviceLedgerPageRespVO> getDeviceLedgerPage(@Valid DeviceLedgerPageReqVO pageReqVO) {
DeviceLedgerPageRespVO respVO = deviceLedgerService.getDeviceLedgerPageWithStatistics(pageReqVO);
// 填充车间名称
if (respVO.getList() != null) {
Set<Long> workshopIds = respVO.getList().stream()
.map(DeviceLedgerRespVO::getWorkshop)
.filter(Objects::nonNull)
.map(workshop -> {
try { return Long.valueOf(workshop.trim()); } catch (NumberFormatException e) { return null; }
})
.filter(Objects::nonNull)
.collect(Collectors.toSet());
if (!workshopIds.isEmpty()) {
Map<Long, OrganizationDO> organizationMap = organizationService.getMapWithDeleted(workshopIds);
for (DeviceLedgerRespVO item : respVO.getList()) {
if (item.getWorkshop() != null) {
try {
Long workshopId = Long.parseLong(item.getWorkshop().trim());
OrganizationDO org = organizationMap.get(workshopId);
if (org != null) {
String workshopName = org.getName();
if (Boolean.TRUE.equals(org.getDeleted())) {
workshopName += "(已被删除)";
}
item.setWorkshopName(workshopName);
}
} catch (NumberFormatException e) { }
}
})
.collect(Collectors.toSet());
Map<Long, OrganizationDO> organizationMap = organizationService.getMapWithDeleted(workshopIds);
// 4. 设置 workshopName
for (DeviceLedgerDO item : pageResult.getList()) {
if (item.getWorkshop() != null) {
try {
Long workshopId = Long.parseLong(item.getWorkshop().trim());
OrganizationDO org = organizationMap.get(workshopId);
if (org != null) {
String workshopName = org.getName();
if (Boolean.TRUE.equals(org.getDeleted())) {
workshopName += "(已被删除)";
}
item.setWorkshopName(workshopName);
}
} catch (NumberFormatException e) {
}
}
}
return success(ResumeNameUtils.buildPageCreatorName(BeanUtils.toBean(pageResult, DeviceLedgerRespVO.class)));
return success(respVO);
}
@GetMapping("/list")

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 设备台账分页 Response VO含统计")
@Data
public class DeviceLedgerPageRespVO {
@Schema(description = "列表数据")
private List<DeviceLedgerRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "正常数量 (deviceStatus=0)")
private Long normalCount;
@Schema(description = "停用数量 (deviceStatus=1)")
private Long disabledCount;
@Schema(description = "已排产数量 (isScheduled=1)")
private Long scheduledCount;
@Schema(description = "未排产数量 (isScheduled=0)")
private Long unscheduledCount;
}

@ -91,10 +91,10 @@ public class DvRepairController {
@GetMapping("/page")
@Operation(summary = "获得设备维修记录分页")
@PreAuthorize("@ss.hasPermission('mes:dv-repair:query')")
public CommonResult<PageResult<DvRepairRespVO>> getDvRepairPage(@Valid DvRepairPageReqVO pageReqVO) {
PageResult<DvRepairDO> pageResult = dvRepairService.getDvRepairPage(pageReqVO);
PageResult<DvRepairRespVO> dvRepairRespVOPageResult = BeanUtils.toBean(pageResult, DvRepairRespVO.class);
return success(buildCreatorName(dvRepairRespVOPageResult));
public CommonResult<DvRepairPageRespVO> getDvRepairPage(@Valid DvRepairPageReqVO pageReqVO) {
DvRepairPageRespVO respVO = dvRepairService.getDvRepairPageWithStatistics(pageReqVO);
respVO.setList(buildCreatorName(respVO.getList()));
return success(respVO);
}
@GetMapping("/list")

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 设备维修记录分页 Response VO含统计")
@Data
public class DvRepairPageRespVO {
@Schema(description = "列表数据")
private List<DvRepairRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "待完成数量 (status=0)")
private Long pendingCount;
@Schema(description = "已完成数量 (status=1)")
private Long finishedCount;
@Schema(description = "待维修数量 (repairStatus=0)")
private Long pendingRepairCount;
@Schema(description = "通过数量 (repairStatus=1)")
private Long passedCount;
@Schema(description = "不通过数量 (repairStatus=2)")
private Long failedCount;
}

@ -90,10 +90,12 @@ public class MoldRepairController {
@GetMapping("/page")
@Operation(summary = "获得模具维修记录分页")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:query')")
public CommonResult<PageResult<MoldRepairRespVO>> getMoldRepairPage(@Valid MoldRepairPageReqVO pageReqVO) {
PageResult<MoldRepairDO> pageResult = moldRepairService.getMoldRepairPage(pageReqVO);
PageResult<MoldRepairRespVO> moldRepairRespVOPageResult = BeanUtils.toBean(pageResult, MoldRepairRespVO.class);
return success(buildCreatorName(moldRepairRespVOPageResult));
public CommonResult<MoldRepairPageRespVO> getMoldRepairPage(@Valid MoldRepairPageReqVO pageReqVO) {
MoldRepairPageRespVO respVO = moldRepairService.getMoldRepairPageWithStatistics(pageReqVO);
if (respVO.getList() != null) {
respVO.setList(buildCreatorName(respVO.getList()));
}
return success(respVO);
}
@GetMapping("/list")

@ -87,12 +87,19 @@ public class MoldTaskManagementController {
@GetMapping("/page")
@Operation(summary = "获得任务管理分页")
@PreAuthorize("@ss.hasPermission('mes:mold-task-management:query')")
public CommonResult<PageResult<MoldTaskManagementRespVO>> getMoldTaskManagementPage(@Valid MoldTaskManagementPageReqVO pageReqVO) {
PageResult<MoldTaskManagementDO> pageResult = moldtaskManagementService.getMoldTaskManagementPage(pageReqVO);
PageResult<MoldTaskManagementRespVO> moldtaskManagementRespVOPageResult = BeanUtils.toBean(pageResult, MoldTaskManagementRespVO.class);
buildPageCreatorName(moldtaskManagementRespVOPageResult);
return success(moldtaskManagementRespVOPageResult);
public CommonResult<MoldTaskManagementPageRespVO> getMoldTaskManagementPage(@Valid MoldTaskManagementPageReqVO pageReqVO) {
MoldTaskManagementPageRespVO respVO = moldtaskManagementService.getMoldTaskManagementPageWithStatistics(pageReqVO);
if (respVO.getList() != null) {
for (MoldTaskManagementRespVO item : respVO.getList()) {
if (item.getCreator() != null) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(item.getCreator()));
if (user != null) {
item.setCreatorName("(" + user.getUsername() + ")" + user.getNickname());
}
}
}
}
return success(respVO);
}
@GetMapping("/export-excel")

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 模具任务管理分页 Response VO含统计")
@Data
public class MoldTaskManagementPageRespVO {
@Schema(description = "列表数据")
private List<MoldTaskManagementRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "点检数量 (taskType=1)")
private Long inspectCount;
@Schema(description = "保养数量 (taskType=2)")
private Long maintainCount;
@Schema(description = "启用数量 (enabled=true)")
private Long enabledCount;
@Schema(description = "未启用数量 (enabled=false)")
private Long disabledCount;
}

@ -92,9 +92,19 @@ public class MoldTicketManagementController {
@GetMapping("/page")
@Operation(summary = "获得工单管理分页")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:query')")
public CommonResult<PageResult<MoldTicketManagementRespVO>> getMoldTicketManagementPage(@Valid MoldTicketManagementPageReqVO pageReqVO) {
PageResult<MoldTicketManagementDO> pageResult = moldticketManagementService.getMoldTicketManagementPage(pageReqVO);
return success(buildPageCreatorName(BeanUtils.toBean(pageResult, MoldTicketManagementRespVO.class)));
public CommonResult<MoldTicketManagementPageRespVO> getMoldTicketManagementPage(@Valid MoldTicketManagementPageReqVO pageReqVO) {
MoldTicketManagementPageRespVO respVO = moldticketManagementService.getMoldTicketManagementPageWithStatistics(pageReqVO);
if (respVO.getList() != null) {
for (MoldTicketManagementRespVO item : respVO.getList()) {
if (item.getCreator() != null) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(item.getCreator()));
if (user != null) {
item.setCreatorName("(" + user.getUsername() + ")" + user.getNickname());
}
}
}
}
return success(respVO);
}
@GetMapping("/export-excel")

@ -93,12 +93,19 @@ public class TaskManagementController {
@GetMapping("/page")
@Operation(summary = "获得任务管理分页")
@PreAuthorize("@ss.hasPermission('mes:task-management:query')")
public CommonResult<PageResult<TaskManagementRespVO>> getTaskManagementPage(@Valid TaskManagementPageReqVO pageReqVO) {
PageResult<TaskManagementDO> pageResult = taskManagementService.getTaskManagementPage(pageReqVO);
PageResult<TaskManagementRespVO> taskManagementRespVOPageResult = BeanUtils.toBean(pageResult, TaskManagementRespVO.class);
buildPageCreatorName(taskManagementRespVOPageResult);
return success(taskManagementRespVOPageResult);
public CommonResult<TaskManagementPageRespVO> getTaskManagementPage(@Valid TaskManagementPageReqVO pageReqVO) {
TaskManagementPageRespVO respVO = taskManagementService.getTaskManagementPageWithStatistics(pageReqVO);
if (respVO.getList() != null) {
for (TaskManagementRespVO item : respVO.getList()) {
if (item.getCreator() != null) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(item.getCreator()));
if (user != null) {
item.setCreatorName("(" + user.getUsername() + ")" + user.getNickname());
}
}
}
}
return success(respVO);
}
@GetMapping("/export-excel")

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.mes.controller.admin.taskmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 任务管理分页 Response VO含统计")
@Data
public class TaskManagementPageRespVO {
@Schema(description = "列表数据")
private List<TaskManagementRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "点检数量 (taskType=1)")
private Long inspectCount;
@Schema(description = "保养数量 (taskType=2)")
private Long maintainCount;
@Schema(description = "启用数量 (enabled=true)")
private Long enabledCount;
@Schema(description = "未启用数量 (enabled=false)")
private Long disabledCount;
}

@ -99,9 +99,19 @@ public class TicketManagementController {
@GetMapping("/page")
@Operation(summary = "获得工单管理分页")
@PreAuthorize("@ss.hasPermission('mes:ticket-management:query')")
public CommonResult<PageResult<TicketManagementRespVO>> getTicketManagementPage(@Valid TicketManagementPageReqVO pageReqVO) {
PageResult<TicketManagementDO> pageResult = ticketManagementService.getTicketManagementPage(pageReqVO);
return success(buildPageCreatorName(BeanUtils.toBean(pageResult, TicketManagementRespVO.class)));
public CommonResult<TicketManagementPageRespVO> getTicketManagementPage(@Valid TicketManagementPageReqVO pageReqVO) {
TicketManagementPageRespVO respVO = ticketManagementService.getTicketManagementPageWithStatistics(pageReqVO);
if (respVO.getList() != null) {
for (TicketManagementRespVO item : respVO.getList()) {
if (item.getCreator() != null) {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(item.getCreator()));
if (user != null) {
item.setCreatorName("(" + user.getUsername() + ")" + user.getNickname());
}
}
}
}
return success(respVO);
}
@GetMapping("/export-excel")

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 工单管理分页 Response VO含统计")
@Data
public class TicketManagementPageRespVO {
@Schema(description = "列表数据")
private List<TicketManagementRespVO> list;
@Schema(description = "总数")
private Long total;
@Schema(description = "全部数量")
private Long allCount;
@Schema(description = "点检数量 (planType=1)")
private Long inspectCount;
@Schema(description = "保养数量 (planType=2)")
private Long maintainCount;
@Schema(description = "未作业数量 (jobStatus=0)")
private Long unworkedCount;
@Schema(description = "已作业数量 (jobStatus=1)")
private Long workedCount;
@Schema(description = "超时未作业数量 (jobStatus=2)")
private Long overtimeUnworkedCount;
@Schema(description = "超时已作业数量 (jobStatus=3)")
private Long overtimeWorkedCount;
@Schema(description = "取消数量 (jobStatus=4)")
private Long canceledCount;
}

@ -50,4 +50,13 @@ public interface MoldTaskManagementMapper extends BaseMapperX<MoldTaskManagement
return selectPage(reqVO, moldtaskManagementDOLambdaQueryWrapperX);
}
default List<MoldTaskManagementDO> selectList(MoldTaskManagementPageReqVO reqVO) {
LambdaQueryWrapperX<MoldTaskManagementDO> wrapper = new LambdaQueryWrapperX<>();
wrapper
.eqIfPresent(MoldTaskManagementDO::getTaskType, reqVO.getTaskType())
.eqIfPresent(MoldTaskManagementDO::getEnabled, reqVO.getEnabled())
.orderByDesc(MoldTaskManagementDO::getId);
return selectList(wrapper);
}
}

@ -76,4 +76,13 @@ public interface TaskManagementMapper extends BaseMapperX<TaskManagementDO> {
return selectPage(reqVO, taskManagementDOLambdaQueryWrapperX);
}
default List<TaskManagementDO> selectList(TaskManagementPageReqVO reqVO) {
LambdaQueryWrapperX<TaskManagementDO> wrapper = new LambdaQueryWrapperX<>();
wrapper
.eqIfPresent(TaskManagementDO::getTaskType, reqVO.getTaskType())
.eqIfPresent(TaskManagementDO::getEnabled, reqVO.getEnabled())
.orderByDesc(TaskManagementDO::getId);
return selectList(wrapper);
}
}

@ -101,4 +101,13 @@ public interface TicketManagementMapper extends BaseMapperX<TicketManagementDO>
@Param("jobStatus") Integer jobStatus,
@Param("cancelReason") String cancelReason);
default List<TicketManagementDO> selectList(TicketManagementPageReqVO reqVO) {
LambdaQueryWrapperX<TicketManagementDO> wrapper = new LambdaQueryWrapperX<>();
wrapper
.eqIfPresent(TicketManagementDO::getPlanType, reqVO.getPlanType())
.eqIfPresent(TicketManagementDO::getJobStatus, reqVO.getJobStatus())
.orderByDesc(TicketManagementDO::getId);
return selectList(wrapper);
}
}

@ -57,6 +57,11 @@ public interface DeviceLedgerService {
*/
PageResult<DeviceLedgerDO> getDeviceLedgerPage(DeviceLedgerPageReqVO pageReqVO);
/**
*
*/
DeviceLedgerPageRespVO getDeviceLedgerPageWithStatistics(DeviceLedgerPageReqVO pageReqVO);
PageResult<DeviceCapacityReportRespVO> getDeviceCapacityReportPage(DeviceCapacityReportPageReqVO pageReqVO);
List<DeviceCapacityReportRespVO> getDeviceCapacityReportList(DeviceCapacityReportPageReqVO pageReqVO);

@ -510,6 +510,45 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
return deviceLedgerDOPageResult;
}
@Override
public DeviceLedgerPageRespVO getDeviceLedgerPageWithStatistics(DeviceLedgerPageReqVO pageReqVO) {
DeviceLedgerPageRespVO respVO = new DeviceLedgerPageRespVO();
// 1. 先查分页(保留 deviceStatus 和 isScheduled 筛选)
if (!prepareDeviceLedgerQuery(pageReqVO)) {
respVO.setList(Collections.emptyList());
respVO.setTotal(0L);
respVO.setAllCount(0L);
respVO.setNormalCount(0L);
respVO.setDisabledCount(0L);
respVO.setScheduledCount(0L);
respVO.setUnscheduledCount(0L);
return respVO;
}
PageResult<DeviceLedgerDO> pageResult = deviceLedgerMapper.selectPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), DeviceLedgerRespVO.class));
respVO.setTotal(pageResult.getTotal());
// 2. 再查统计(忽略 deviceStatus 和 isScheduled 筛选,查全量)
DeviceLedgerPageReqVO statisticsReq = BeanUtils.toBean(pageReqVO, DeviceLedgerPageReqVO.class);
statisticsReq.setDeviceStatus(null);
statisticsReq.setIsScheduled(null);
if (!prepareDeviceLedgerQuery(statisticsReq)) {
respVO.setAllCount(0L);
respVO.setNormalCount(0L);
respVO.setDisabledCount(0L);
respVO.setScheduledCount(0L);
respVO.setUnscheduledCount(0L);
return respVO;
}
List<DeviceLedgerDO> allList = deviceLedgerMapper.selectList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setNormalCount(allList.stream().filter(item -> item.getDeviceStatus() != null && item.getDeviceStatus() == 0).count());
respVO.setDisabledCount(allList.stream().filter(item -> item.getDeviceStatus() != null && item.getDeviceStatus() == 1).count());
respVO.setScheduledCount(allList.stream().filter(item -> item.getIsScheduled() != null && item.getIsScheduled() == 1).count());
respVO.setUnscheduledCount(allList.stream().filter(item -> item.getIsScheduled() != null && item.getIsScheduled() == 0).count());
return respVO;
}
private boolean prepareDeviceLedgerQuery(DeviceLedgerPageReqVO pageReqVO) {
if (pageReqVO == null) {
return true;

@ -55,6 +55,11 @@ public interface DvRepairService {
*/
PageResult<DvRepairDO> getDvRepairPage(DvRepairPageReqVO pageReqVO);
/**
*
*/
DvRepairPageRespVO getDvRepairPageWithStatistics(DvRepairPageReqVO pageReqVO);
// ==================== 子表(设备维修记录行) ====================
/**

@ -212,6 +212,63 @@ public class DvRepairServiceImpl implements DvRepairService {
return dvRepairMapper.selectPage(pageReqVO);
}
@Override
public DvRepairPageRespVO getDvRepairPageWithStatistics(DvRepairPageReqVO pageReqVO) {
DvRepairPageRespVO respVO = new DvRepairPageRespVO();
// 1. 先查分页
PageResult<DvRepairDO> pageResult = getDvRepairPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), DvRepairRespVO.class));
respVO.setTotal(pageResult.getTotal());
// 2. 再查统计(忽略 status 和 repairStatus 筛选,查全量)
DvRepairPageReqVO statisticsReq = BeanUtils.toBean(pageReqVO, DvRepairPageReqVO.class);
statisticsReq.setStatus(null);
statisticsReq.setRepairStatus(null);
List<DvRepairDO> allList = getDvRepairList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setPendingCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 0).count());
respVO.setFinishedCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 1).count());
respVO.setPendingRepairCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 0).count());
respVO.setPassedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 1).count());
respVO.setFailedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 2).count());
return respVO;
}
private List<DvRepairDO> getDvRepairList(DvRepairPageReqVO pageReqVO) {
if(StringUtils.isNotBlank(pageReqVO.getDeviceLine()) || StringUtils.isNotBlank(pageReqVO.getMachineryName())) {
LambdaQueryWrapperX<DeviceLedgerDO> deviceLedgerDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
if(StringUtils.isNotBlank(pageReqVO.getDeviceLine()))
deviceLedgerDOLambdaQueryWrapperX.eqIfPresent(DeviceLedgerDO::getDeviceLine, pageReqVO.getDeviceLine());
if(StringUtils.isNotBlank(pageReqVO.getMachineryName())){
deviceLedgerDOLambdaQueryWrapperX.and(w -> w
.like(DeviceLedgerDO::getDeviceCode, pageReqVO.getMachineryName())
.or()
.like(DeviceLedgerDO::getDeviceName, pageReqVO.getMachineryName())
);
}
List<DeviceLedgerDO> deviceLedgerDOS = deviceLedgerMapper.selectList(deviceLedgerDOLambdaQueryWrapperX);
List<Long> machineryIds = deviceLedgerDOS.stream().map(DeviceLedgerDO::getId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(machineryIds)){
pageReqVO.setMachineryIds(machineryIds);
} else {
List<Long> objects = new ArrayList<>();
objects.add((long) -1);
pageReqVO.setMachineryIds(objects);
}
}
// 构建查询条件(不含 status/repairStatus
LambdaQueryWrapperX<DvRepairDO> wrapper = new LambdaQueryWrapperX<>();
if(CollUtil.isNotEmpty(pageReqVO.getMachineryIds())){
wrapper.in(DvRepairDO::getMachineryId, pageReqVO.getMachineryIds());
}
wrapper
.likeIfPresent(DvRepairDO::getRepairCode, pageReqVO.getRepairCode())
.likeIfPresent(DvRepairDO::getRepairName, pageReqVO.getRepairName())
.eqIfPresent(DvRepairDO::getMachineryId, pageReqVO.getMachineryId())
.orderByDesc(DvRepairDO::getCreateTime);
return dvRepairMapper.selectList(wrapper);
}
// ==================== 子表(设备维修记录行) ====================
@Override

@ -58,6 +58,8 @@ public interface MoldRepairService {
*/
PageResult<MoldRepairDO> getMoldRepairPage(MoldRepairPageReqVO pageReqVO);
MoldRepairPageRespVO getMoldRepairPageWithStatistics(MoldRepairPageReqVO pageReqVO);
// ==================== 子表(模具维修记录行) ====================
/**

@ -14,6 +14,8 @@ import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairL
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairUpdateReqVO;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairPageReqVO;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairSaveReqVO;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairRespVO;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairPageRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum;
import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairLineDO;
@ -173,6 +175,26 @@ public class MoldRepairServiceImpl implements MoldRepairService {
return moldRepairMapper.selectPage(pageReqVO);
}
@Override
public MoldRepairPageRespVO getMoldRepairPageWithStatistics(MoldRepairPageReqVO pageReqVO) {
MoldRepairPageRespVO respVO = new MoldRepairPageRespVO();
PageResult<MoldRepairDO> pageResult = getMoldRepairPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), MoldRepairRespVO.class));
respVO.setTotal(pageResult.getTotal());
MoldRepairPageReqVO statisticsReq = new MoldRepairPageReqVO();
statisticsReq.setPageNo(1);
statisticsReq.setPageSize(Integer.MAX_VALUE);
List<MoldRepairDO> allList = moldRepairMapper.selectList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setPendingCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 0).count());
respVO.setFinishedCount(allList.stream().filter(item -> item.getStatus() != null && item.getStatus() == 1).count());
respVO.setPendingRepairCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 0).count());
respVO.setPassedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 1).count());
respVO.setFailedCount(allList.stream().filter(item -> item.getRepairStatus() != null && item.getRepairStatus() == 2).count());
return respVO;
}
// ==================== 子表(模具维修记录行) ====================
@Override

@ -52,6 +52,8 @@ public interface MoldTaskManagementService {
*/
PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManagementPageReqVO pageReqVO);
MoldTaskManagementPageRespVO getMoldTaskManagementPageWithStatistics(MoldTaskManagementPageReqVO pageReqVO);
void createMoldTicket(Long id);
void createMoldTicketDirect(@Valid MoldTaskManagementCreateTicketReqVO createReqVO);

@ -16,6 +16,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTa
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementUpdateEnabledReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementPageRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldtaskmanagement.vo.MoldTaskManagementRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.enums.MoldJobResultEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
@ -173,6 +175,25 @@ public class MoldTaskManagementServiceImpl implements MoldTaskManagementService
return pageResult;
}
@Override
public MoldTaskManagementPageRespVO getMoldTaskManagementPageWithStatistics(MoldTaskManagementPageReqVO pageReqVO) {
MoldTaskManagementPageRespVO respVO = new MoldTaskManagementPageRespVO();
PageResult<MoldTaskManagementDO> pageResult = getMoldTaskManagementPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), MoldTaskManagementRespVO.class));
respVO.setTotal(pageResult.getTotal());
MoldTaskManagementPageReqVO statisticsReq = new MoldTaskManagementPageReqVO();
statisticsReq.setPageNo(1);
statisticsReq.setPageSize(Integer.MAX_VALUE);
List<MoldTaskManagementDO> allList = moldtaskManagementMapper.selectList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setInspectCount(allList.stream().filter(item -> item.getTaskType() != null && item.getTaskType() == 1).count());
respVO.setMaintainCount(allList.stream().filter(item -> item.getTaskType() != null && item.getTaskType() == 2).count());
respVO.setEnabledCount(allList.stream().filter(item -> Boolean.TRUE.equals(item.getEnabled())).count());
respVO.setDisabledCount(allList.stream().filter(item -> !Boolean.TRUE.equals(item.getEnabled())).count());
return respVO;
}
@Override
public void createMoldTicket(Long id) {
validateMoldTaskManagementExists(id);

@ -56,6 +56,8 @@ public interface MoldTicketManagementService {
*/
PageResult<MoldTicketManagementDO> getMoldTicketManagementPage(MoldTicketManagementPageReqVO pageReqVO);
MoldTicketManagementPageRespVO getMoldTicketManagementPageWithStatistics(MoldTicketManagementPageReqVO pageReqVO);
void batchUpdateJobStatus(@Valid MoldTicketManagementBatchUpdateReqVO reqVO);
List<MoldTicketResultsDO> getInspectionByMoldId(Long id, String code, String startTime, String endTime, String ids);

@ -100,6 +100,28 @@ public class MoldTicketManagementServiceImpl implements MoldTicketManagementServ
return moldTicketManagementMapper.selectPage(pageReqVO);
}
@Override
public MoldTicketManagementPageRespVO getMoldTicketManagementPageWithStatistics(MoldTicketManagementPageReqVO pageReqVO) {
MoldTicketManagementPageRespVO respVO = new MoldTicketManagementPageRespVO();
PageResult<MoldTicketManagementDO> pageResult = getMoldTicketManagementPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), MoldTicketManagementRespVO.class));
respVO.setTotal(pageResult.getTotal());
MoldTicketManagementPageReqVO statisticsReq = new MoldTicketManagementPageReqVO();
statisticsReq.setPageNo(1);
statisticsReq.setPageSize(Integer.MAX_VALUE);
List<MoldTicketManagementDO> allList = moldTicketManagementMapper.selectList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setInspectCount(allList.stream().filter(item -> item.getPlanType() == 1).count());
respVO.setMaintainCount(allList.stream().filter(item -> item.getPlanType() == 2).count());
respVO.setUnworkedCount(allList.stream().filter(item -> item.getJobStatus() != null && item.getJobStatus() == 0).count());
respVO.setWorkedCount(allList.stream().filter(item -> item.getJobStatus() != null && item.getJobStatus() == 1).count());
respVO.setOvertimeUnworkedCount(allList.stream().filter(item -> item.getJobStatus() != null && item.getJobStatus() == 2).count());
respVO.setOvertimeWorkedCount(allList.stream().filter(item -> item.getJobStatus() != null && item.getJobStatus() == 3).count());
respVO.setCanceledCount(allList.stream().filter(item -> item.getJobStatus() != null && item.getJobStatus() == 4).count());
return respVO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdateJobStatus(MoldTicketManagementBatchUpdateReqVO reqVO) {

@ -52,6 +52,11 @@ public interface TaskManagementService {
*/
PageResult<TaskManagementDO> getTaskManagementPage(TaskManagementPageReqVO pageReqVO);
/**
*
*/
TaskManagementPageRespVO getTaskManagementPageWithStatistics(TaskManagementPageReqVO pageReqVO);
void createTicket(Long id);
void updateTaskManagementEnabled(TaskManagementUpdateEnabledReqVO updateEnabledReqVO);

@ -196,6 +196,27 @@ public class TaskManagementServiceImpl implements TaskManagementService {
return taskManagementDOPageResult;
}
@Override
public TaskManagementPageRespVO getTaskManagementPageWithStatistics(TaskManagementPageReqVO pageReqVO) {
TaskManagementPageRespVO respVO = new TaskManagementPageRespVO();
// 1. 先查分页
PageResult<TaskManagementDO> pageResult = getTaskManagementPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), TaskManagementRespVO.class));
respVO.setTotal(pageResult.getTotal());
// 2. 再查统计(清掉所有筛选条件,查全量)
TaskManagementPageReqVO statisticsReq = new TaskManagementPageReqVO();
statisticsReq.setPageNo(1);
statisticsReq.setPageSize(Integer.MAX_VALUE);
List<TaskManagementDO> allList = taskManagementMapper.selectList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setInspectCount(allList.stream().filter(item -> item.getTaskType() != null && item.getTaskType() == 1).count());
respVO.setMaintainCount(allList.stream().filter(item -> item.getTaskType() != null && item.getTaskType() == 2).count());
respVO.setEnabledCount(allList.stream().filter(item -> Boolean.TRUE.equals(item.getEnabled())).count());
respVO.setDisabledCount(allList.stream().filter(item -> !Boolean.TRUE.equals(item.getEnabled())).count());
return respVO;
}
@Override
public void createTicket(Long id) {

@ -57,6 +57,11 @@ public interface TicketManagementService {
*/
PageResult<TicketManagementDO> getTicketManagementPage(TicketManagementPageReqVO pageReqVO);
/**
*
*/
TicketManagementPageRespVO getTicketManagementPageWithStatistics(TicketManagementPageReqVO pageReqVO);
void batchUpdateJobStatus(@Valid TicketManagementBatchUpdateReqVO reqVO);
List<TicketResultsDO> getInspectionByDeviceId(Long id, String code, String startTime, String endTime, String ids);

@ -126,6 +126,30 @@ public class TicketManagementServiceImpl implements TicketManagementService {
return ticketManagementMapper.selectPage(pageReqVO);
}
@Override
public TicketManagementPageRespVO getTicketManagementPageWithStatistics(TicketManagementPageReqVO pageReqVO) {
TicketManagementPageRespVO respVO = new TicketManagementPageRespVO();
// 1. 先查分页
PageResult<TicketManagementDO> pageResult = getTicketManagementPage(pageReqVO);
respVO.setList(BeanUtils.toBean(pageResult.getList(), TicketManagementRespVO.class));
respVO.setTotal(pageResult.getTotal());
// 2. 再查统计(忽略 planType 和 jobStatus 筛选,查全量)
TicketManagementPageReqVO statisticsReq = BeanUtils.toBean(pageReqVO, TicketManagementPageReqVO.class);
statisticsReq.setPlanType(null);
statisticsReq.setJobStatus(null);
List<TicketManagementDO> allList = ticketManagementMapper.selectList(statisticsReq);
respVO.setAllCount((long) allList.size());
respVO.setInspectCount(allList.stream().filter(item -> item.getPlanType() == 1).count());
respVO.setMaintainCount(allList.stream().filter(item -> item.getPlanType() == 2).count());
respVO.setUnworkedCount(allList.stream().filter(item -> "0".equals(item.getJobStatus())).count());
respVO.setWorkedCount(allList.stream().filter(item -> "1".equals(item.getJobStatus())).count());
respVO.setOvertimeUnworkedCount(allList.stream().filter(item -> "2".equals(item.getJobStatus())).count());
respVO.setOvertimeWorkedCount(allList.stream().filter(item -> "3".equals(item.getJobStatus())).count());
respVO.setCanceledCount(allList.stream().filter(item -> "4".equals(item.getJobStatus())).count());
return respVO;
}
private boolean matchesDeviceLine(DeviceLedgerDO deviceLedgerDO, String deviceLineId) {
return StringUtils.isBlank(deviceLineId)
|| (deviceLedgerDO.getDeviceLine() != null

Loading…
Cancel
Save