Compare commits

...

2 Commits

Author SHA1 Message Date
kkk-ops 2f0d11ac29 merge 1 week ago
kkk-ops 3cf649ca92 综合大屏 1 week ago

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.erp.controller.admin.mold.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@ -7,7 +7,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.autocode.AutocodePartDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import org.apache.ibatis.annotations.Mapper;
/**

@ -4,12 +4,13 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.common.dal.mysql.mold.MoldMapper;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.service.mold.MoldBrandService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.dashboard.EventStatisticsVO;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.dashboard.TaskVO;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
@ -19,12 +20,12 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketmanagement.TicketManagementDO;
import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.task.TaskMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.ticketmanagement.TicketManagementMapper;
import cn.iocoder.yudao.module.mes.service.deviceledger.DeviceLedgerService;
import cn.iocoder.yudao.module.mes.service.deviceledger.DeviceLedgerServiceImpl;
import cn.iocoder.yudao.module.mes.service.devicetype.DeviceTypeService;
import cn.iocoder.yudao.module.mes.service.dvrepair.DvRepairService;
import cn.iocoder.yudao.module.erp.service.mold.MoldService;
import cn.iocoder.yudao.module.mes.service.moldrepair.MoldRepairService;
@ -32,8 +33,6 @@ import cn.iocoder.yudao.module.mes.service.moldticketmanagement.MoldTicketManage
import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
import cn.iocoder.yudao.module.mes.service.ticketmanagement.TicketManagementService;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -42,7 +41,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@ -52,7 +50,6 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@ -100,8 +97,23 @@ public class DashboardController {
@Resource
private TaskMapper taskMapper;
@Resource
private DeviceLedgerMapper deviceLedgerMapper;
@Resource
private MoldMapper moldMapper;
@Resource
private MoldBrandService moldBrandService;
@Resource
private DeviceTypeService deviceTypeService;
@Resource
private DeviceMapper deviceMapper;
@GetMapping("/getProduction")
@Operation(summary = "获得整体生产概况")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@ -426,131 +438,51 @@ public class DashboardController {
return success(deviceRepairLineOptionsVO);
}
@GetMapping("/getDeviceTypePieOptions")
@Operation(summary = "获得设备分类统计")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<List<DeviceTypePieOptionsVO>> getDeviceTypePieOptions() {
List<DeviceTypePieOptionsVO> deviceTypePieOptionsVOList = new ArrayList<>();
QueryWrapper<DeviceLedgerDO> queryWrapper = new QueryWrapper<>();
queryWrapper.select("device_type as deviceType", "COUNT(*) as count")
.groupBy("device_type")
.orderByDesc("count")
.last("LIMIT 5");
List<Map<String, Object>> result = deviceLedgerMapper.selectMaps(queryWrapper);
for (Map<String, Object> map : result) {
DeviceTypePieOptionsVO vo = new DeviceTypePieOptionsVO();
// 手动设置属性
vo.setName(deviceTypeService.getDeviceType(((Number) map.get("deviceType")).longValue()).getName());
vo.setValue(Integer.parseInt(map.get("count").toString()));
deviceTypePieOptionsVOList.add(vo);
@GetMapping("/getTaskStatistics")
@Operation(summary = "获得各设备统计个数")
@PreAuthorize("@ss.hasPermission('mes:device-ledger:query')")
public CommonResult<EventStatisticsVO> getTaskStatistics() {
EventStatisticsVO vo = new EventStatisticsVO();
//设备点检
ticketManagementService.selectCountDeviceInspection(vo );
//设备保养
ticketManagementService.selectCountDeviceMaintenance(vo );
//设备维修
dvRepairService.selectCountDeviceRepair(vo );
//模具点检
moldTicketManagementService.selectCountMoldInspection(vo );
//模具保养
moldTicketManagementService.selectCountMoldMaintenance(vo );
//模具维修
moldRepairService.selectCountMoldRepair(vo );
// 计算占比
int total = vo.getDeviceInspection()
+ vo.getDeviceMaintenance()
+ vo.getDeviceRepair()
+ vo.getMoldInspection()
+ vo.getMoldMaintenance()
+ vo.getMoldRepair();
if (total > 0) {
vo.setDeviceInspectionProportion(calcPercent(vo.getDeviceInspection(), total));
vo.setDeviceMaintenanceProportion(calcPercent(vo.getDeviceMaintenance(), total));
vo.setDeviceRepairProportion(calcPercent(vo.getDeviceRepair(), total));
vo.setMoldInspectionProportion(calcPercent(vo.getMoldInspection(), total));
vo.setMoldMaintenanceProportion(calcPercent(vo.getMoldMaintenance(), total));
vo.setMoldRepairProportion(calcPercent(vo.getMoldRepair(), total));
} else {
// 防止除 0
vo.setDeviceInspectionProportion("0%");
vo.setDeviceMaintenanceProportion("0%");
vo.setDeviceRepairProportion("0%");
vo.setMoldInspectionProportion("0%");
vo.setMoldMaintenanceProportion("0%");
vo.setMoldRepairProportion("0%");
}
return success(vo);
}
/**
*
*/
private String calcPercent(int value, int total) {
if (total <= 0) {
return "0%";
}
int percent = (int) Math.round(value * 100.0 / total);
return percent + "%";
return success(deviceTypePieOptionsVOList);
}
@GetMapping("/getAllTaskList")
@Operation(summary = "获得所有任务")
@GetMapping("/getMoldTypeBarOptions")
@Operation(summary = "获得模具分类分布统计")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<List<TaskVO>> getAllTaskList() {
List<TaskVO> taskVOList = new ArrayList<>();
// 设备保养 点检
List<TicketManagementDO> ticketManagementDOList = ticketManagementService.getList();
for (TicketManagementDO ticketManagementDO : ticketManagementDOList) {
TaskVO taskVO = new TaskVO();
taskVO.setCode(ticketManagementDO.getPlanNo());
taskVO.setName(ticketManagementDO.getConfigName());
if (ticketManagementDO.getPlanType() == 2) {
taskVO.setType("设备保养");
} else {
taskVO.setType("设备点检");
}
taskVO.setFinishStatus(ticketManagementDO.getJobStatus());
taskVO.setResultStatus(ticketManagementDO.getJobResult());
taskVOList.add(taskVO);
}
// 设备维修
List<DvRepairDO> dvRepairDOList = dvRepairService.getList();
for (DvRepairDO dvRepairDO : dvRepairDOList) {
TaskVO taskVO = new TaskVO();
taskVO.setCode(dvRepairDO.getRepairCode());
taskVO.setName(dvRepairDO.getRepairName());
taskVO.setType("设备维修");
taskVO.setFinishStatus(String.valueOf(dvRepairDO.getStatus()));
taskVO.setResultStatus(dvRepairDO.getRepairStatus());
taskVOList.add(taskVO);
}
// 模具保养 点检
List<MoldTicketManagementDO> moldTicketManagementDOList = moldTicketManagementService.getList();
for (MoldTicketManagementDO moldTicketManagementDO : moldTicketManagementDOList) {
TaskVO taskVO = new TaskVO();
taskVO.setCode(moldTicketManagementDO.getPlanNo());
taskVO.setName(moldTicketManagementDO.getConfigName());
if (moldTicketManagementDO.getPlanType() == 2) {
taskVO.setType("模具保养");
} else {
taskVO.setType("模具点检");
}
taskVO.setFinishStatus(String.valueOf(moldTicketManagementDO.getJobStatus()));
taskVO.setResultStatus(moldTicketManagementDO.getJobResult());
taskVOList.add(taskVO);
}
// 模具维修
List<MoldRepairDO> moldRepairDOList = moldRepairService.getList();
for (MoldRepairDO moldRepairDO : moldRepairDOList) {
TaskVO taskVO = new TaskVO();
taskVO.setCode(moldRepairDO.getRepairCode());
taskVO.setName(moldRepairDO.getRepairName());
taskVO.setType("模具维修");
taskVO.setFinishStatus(String.valueOf(moldRepairDO.getStatus()));
taskVO.setResultStatus(moldRepairDO.getRepairStatus());
taskVOList.add(taskVO);
public CommonResult<DeviceRepairLineOptionsVO> getMoldTypeBarOptions() {
DeviceRepairLineOptionsVO deviceRepairLineOptionsVO = new DeviceRepairLineOptionsVO();
QueryWrapper<MoldDO> queryWrapper = new QueryWrapper<>();
queryWrapper.select("brand_id as brandId", "COUNT(*) as count")
.groupBy("brand_id")
.orderByDesc("count")
.last("LIMIT 5");
List<Map<String, Object>> result = moldMapper.selectMaps(queryWrapper);
List<String> xAxis = new ArrayList<>();
List<Integer> series = new ArrayList<>();
for (Map<String, Object> map : result) {
DeviceTypePieOptionsVO vo = new DeviceTypePieOptionsVO();
// 手动设置属性
xAxis.add(moldBrandService.getMoldBrand(((Number) map.get("brandId")).longValue()).getName());
series.add(Integer.parseInt(map.get("count").toString()));
}
return success(taskVOList);
deviceRepairLineOptionsVO.setXAxis(xAxis);
deviceRepairLineOptionsVO.setSeries(series);
return success(deviceRepairLineOptionsVO);
}
}

@ -0,0 +1,17 @@
package cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 首页设备分类统计 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DeviceTypePieOptionsVO {
@Schema(description = "name")
private String name;
@Schema(description = "value")
private Integer value;
}

@ -10,11 +10,14 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.iot.framework.mqtt.utils.DateUtils;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.DeviceTypePieOptionsVO;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjproductrecord.vo.ZjProductRecordRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.zjproductrecord.vo.ZjProductRecordSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
@ -27,6 +30,8 @@ import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
import cn.iocoder.yudao.module.mes.service.zjproduct.ZjProductService;
import cn.iocoder.yudao.module.mes.service.zjproductrecord.ZjProductRecordService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -40,15 +45,16 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static org.apache.ibatis.ognl.OgnlOps.getIntValue;
@Tag(name = "管理后台 - 生产计划")
@RestController
@ -129,6 +135,7 @@ public class PlanController {
PageResult<PlanRespVO> pageResult = planService.getPlanPage(pageReqVO);
return success(new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal()));
}
private List<PlanRespVO> buildVOList(List<PlanRespVO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
@ -174,6 +181,7 @@ public class PlanController {
planService.arrangePlan(saveReqVO, planDO, list);
return success(true);
}
@PutMapping("/typePaigong")
@Operation(summary = "工序派工")
//@PreAuthorize("@ss.hasPermission('mes:plan:update')")
@ -208,7 +216,7 @@ public class PlanController {
// 入库
else if ("store".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
planService.createPlanStockIn(statusUpdateVO,planDO);
planService.createPlanStockIn(statusUpdateVO, planDO);
}
planMapper.updateById(planDO);
return success(true);
@ -235,6 +243,7 @@ public class PlanController {
List<ErpProductRespVO> proList = planService.getProductByPlanStatus(status);
return success(proList);
}
@GetMapping("/getByStatus")
@Operation(summary = "获得生产计划")
@Parameter(name = "status", description = "状态", required = true, example = "1024")
@ -250,6 +259,24 @@ public class PlanController {
return success(planRespVOList);
}
@GetMapping("/getProductPlans")
@Operation(summary = "获得生产计划")
@Parameter(name = "status", description = "状态", required = true, example = "1024")
public CommonResult<List<PlanRespVO>> getProductPlans() {
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
//statusList.add(PlanStatusEnum.开工.getValue());
// statusList.add(PlanStatusEnum.派工.getValue());
// statusList.add(PlanStatusEnum.计划.getValue());
// statusList.add(PlanStatusEnum.暂停.getValue());
List<PlanDO> proList = planService.getPlanByStatus(statusList);
List<PlanRespVO> planRespVOList = planService.buildVOList(proList);
return success(planRespVOList);
}
@GetMapping("/getByTicketType")
@Operation(summary = "获得质检工单下拉")
@Parameter(name = "status", description = "状态", required = true, example = "1024")
@ -258,9 +285,9 @@ public class PlanController {
List<Integer> statusList = new ArrayList<>();
statusList.add(status);
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
List<PlanDO> proList = planService.getPlanByStatus(statusList);
List<PlanRespVO> planRespVOList = planService.buildVOList(proList);
return success(planRespVOList);
@ -285,5 +312,97 @@ public class PlanController {
return success(true);
}
@GetMapping("/getWeekTrend")
@Operation(summary = "综合大屏-周生产趋势")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<PlanWeekTrendVO> getWeekTrend() {
PlanWeekTrendVO planWeekTrendVO = new PlanWeekTrendVO();
LocalDate today = LocalDate.now();
// 获取本周一
LocalDate start = today.with(DayOfWeek.MONDAY);
// 获取本周日
LocalDate end = today.with(DayOfWeek.SUNDAY);
// 转换为 Date
Date monday = Date.from(start.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date sunday = Date.from(end.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
List<Map<String, Object>> result = planMapper.selectMaps(
new QueryWrapper<PlanDO>()
.select(
"DATE(create_time) as date",
"DAYOFWEEK(create_time) as weekday",
"SUM(plan_number) as planCount",
"SUM(wangong_number) as wangongCount"
)
.ge("create_time", monday)
.le("create_time", sunday)
.groupBy("DATE(create_time), DAYOFWEEK(create_time)")
.orderByAsc("DATE(create_time)")
);
List<String> weekDays = new ArrayList<>(Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"));
List<Integer> weekPlan = new ArrayList<>(Collections.nCopies(7, 0));
List<Integer> weekReal = new ArrayList<>(Collections.nCopies(7, 0));
for (Map<String, Object> map : result) {
Object weekdayObj = map.get("weekday");
// 确定星期字符串
String weekdayStr = null;
if (weekdayObj instanceof Integer) {
int dayCode = (Integer) weekdayObj;
weekdayStr = WeekDayEnum.getNameByCode(dayCode); // 使用枚举转换
} else if (weekdayObj instanceof String) {
weekdayStr = (String) weekdayObj;
} else if (weekdayObj != null) {
weekdayStr = weekdayObj.toString();
}
// 匹配并填充数据
if (weekdayStr != null) {
int index = weekDays.indexOf(weekdayStr);
if (index != -1) {
int plan = Math.max(getIntValue(map.get("planCount")), 0);
int real = Math.max(getIntValue(map.get("wangongCount")), 0);
weekPlan.set(index, plan);
weekReal.set(index, real);
weekReal.set(index, real);
}
}
}
planWeekTrendVO.setWeekDays(weekDays);
planWeekTrendVO.setWeekPlan(weekPlan);
planWeekTrendVO.setWeekReal(weekReal);
return success(planWeekTrendVO);
}
@GetMapping("/getDayCapacity")
@Operation(summary = "综合大屏-日产能达成情况")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<DayCapacityVO> getDayCapacity() {
DayCapacityVO dayCapacityVO = new DayCapacityVO();
List<Integer> statusList = new ArrayList<>(Collections.singletonList(PlanStatusEnum..getValue()));
List<PlanDO> planDOList = planService.getPlanByStatus(statusList);
// 排产单数量
dayCapacityVO.setOrders(planDOList.size());
// 排产数量
int plan = 0;
for (PlanDO planDO : planDOList) {
if (planDO.getPlanNumber() != null) {
plan = plan + planDO.getPlanNumber().intValue();
}
}
dayCapacityVO.setPlan(plan);
// 已生产数量
statusList = Arrays.asList(PlanStatusEnum..getValue(),PlanStatusEnum..getValue());;
planDOList = planService.getPlanByStatus(statusList);
int finish = 0;
for (PlanDO planDO : planDOList) {
if (planDO.getWangongNumber() != null) {
finish = finish + planDO.getWangongNumber().intValue();
}
}
dayCapacityVO.setPending(finish);
return success(dayCapacityVO);
}
}

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.mes.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "综合大屏 - 周生产趋势 Resp VO")
@Data
public class DayCapacityVO {
@Schema(description = "orders")
private Integer orders;
@Schema(description = "plan")
private Integer plan;
@Schema(description = "pending")
private Integer pending;
@Schema(description = "rate")
private Double rate;
}

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.mes.controller.admin.plan.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "综合大屏 - 周生产趋势 Resp VO")
@Data
@ToString(callSuper = true)
public class PlanWeekTrendVO {
@Schema(description = "X轴")
private List<String> weekDays;
@Schema(description = "计划数量")
private List<Integer> weekPlan;
@Schema(description = "完工数量")
private List<Integer> weekReal;
}

@ -0,0 +1,65 @@
package cn.iocoder.yudao.module.mes.controller.admin.plan.vo;
/**
* -
* MySQL DAYOFWEEK()
*/
public enum WeekDayEnum {
SUNDAY(1, "周日"),
MONDAY(2, "周一"),
TUESDAY(3, "周二"),
WEDNESDAY(4, "周三"),
THURSDAY(5, "周四"),
FRIDAY(6, "周五"),
SATURDAY(7, "周六");
private final int code;
private final String name;
// 静态映射表
private static final WeekDayEnum[] VALUES = values();
WeekDayEnum(int code, String name) {
this.code = code;
this.name = name;
}
public int getCode() {
return code;
}
public String getName() {
return name;
}
/**
* DAYOFWEEK()
*/
public static String getNameByCode(int code) {
for (WeekDayEnum day : VALUES) {
if (day.code == code) {
return day.name;
}
}
return "未知";
}
/**
* DAYOFWEEK()
*/
public static WeekDayEnum getByCode(int code) {
for (WeekDayEnum day : VALUES) {
if (day.code == code) {
return day;
}
}
return null;
}
@Override
public String toString() {
return name;
}
}

@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequi
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskStatusEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDetailDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
@ -253,7 +254,8 @@ public class PlanServiceImpl implements PlanService {
convertSet(list, PlanDO::getProductionManagerId));
Map<Long, TaskDO> taskMap = taskService.getMap(
convertSet(list, PlanDO::getTaskId));
Map<Long, OrganizationDO> organizationMap = organizationService.getMap(
convertSet(list, PlanDO::getFeedingPipeline));
return BeanUtils.toBean(list, PlanRespVO.class, item -> {
MapUtils.findAndThen(map, item.getProductId(),
product -> item.setProductName(product.getName()));
@ -263,6 +265,9 @@ public class PlanServiceImpl implements PlanService {
MapUtils.findAndThen(taskMap, item.getTaskId(),
task -> item.setTaskCode(task.getCode()));
MapUtils.findAndThen(organizationMap, item.getFeedingPipeline(),
organization -> item.setFeedingPipelineName(organization.getName()));
});
}
@Override

Loading…
Cancel
Save