plp
kkk-ops 2 weeks ago
parent 108c207b3d
commit 43fb1c2242

@ -24,10 +24,13 @@ public interface ErrorCodeConstants {
ErrorCode ORGANIZATION_PARENT_ERROR = new ErrorCode(5_0014, "不能设置自己为父产线工位");
ErrorCode ORGANIZATION_NAME_DUPLICATE = new ErrorCode(5_0015, "已经存在该组织名称的产线工位");
ErrorCode ORGANIZATION_PARENT_IS_CHILD = new ErrorCode(5_0016, "不能设置自己的子Organization为父Organization");
ErrorCode ORGANIZATION_CODE_EXISTS = new ErrorCode(5_0011_001, "组织编号已存在,请重新提交");
ErrorCode TASK_NOT_EXISTS = new ErrorCode(5_002, "生产任务单不存在");
ErrorCode TASK_CODE_EXISTS = new ErrorCode(5_002_001, "任务单号已存在,请重新提交");
ErrorCode TASK_EXISTS = new ErrorCode(5_003, "生产任务单已存在");
ErrorCode TASK_DETAIL_NOT_EXISTS = new ErrorCode(5_005, "任务单明细不存在");
ErrorCode PLAN_NOT_EXISTS = new ErrorCode(5_003, "生产计划不存在");
ErrorCode PLAN_CODE_EXISTS = new ErrorCode(5_003_001, "生产计划已存在,请重新提交");
ErrorCode PLAN_EXISTS = new ErrorCode(5_003, "生产计划已经存在");
ErrorCode ITEM_REQUISITION_NOT_EXISTS = new ErrorCode(5_004, "生产领料不存在");
ErrorCode ITEM_REQUISITION_EXISTS = new ErrorCode(5_004, "生产领料已存在");
@ -85,9 +88,6 @@ public interface ErrorCodeConstants {
ErrorCode ENERGY_DEVICE_CODE_DUPLICATE = new ErrorCode(5_0082, "能耗设备编码已存在");
ErrorCode MOLD_RECORD_SUBJECT_NOT_EXISTS = new ErrorCode(5_0086, "维保项目不存在");
ErrorCode MOLD_RECORD_ITEM_NOT_EXISTS = new ErrorCode(5_0087, "维保方案不存在");
ErrorCode MOLD_RECORD_NOT_EXISTS = new ErrorCode(5_0087, "模具维保不存在");

@ -0,0 +1,246 @@
package cn.iocoder.yudao.module.mes.controller.admin.dashboard;
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.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.DeviceRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.TaskReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.TaskRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanRespVO;
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.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.dvrepair.DvRepairService;
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 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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@Tag(name = "管理后台 - 首页")
@RestController
@RequestMapping("/mes/dashboard")
@Validated
public class DashboardController {
@Resource
private PlanService planService;
@Resource
private ErpProductService productService;
@Resource
private OrganizationService organizationService;
@Resource
private DvRepairService dvRepairService;
@Resource
private TicketManagementService ticketManagementService;
@Resource
private PlanMapper planMapper;
@Resource
private TaskMapper taskMapper;
@GetMapping("/getProduction")
@Operation(summary = "获得整体生产概况")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<TaskRespVO> getProduction(@Valid TaskReqVO taskReqVO) {
TaskRespVO taskRespVO = new TaskRespVO();
List<TaskRespVO.Item> taskItems = new ArrayList<>();
List<TaskRespVO.Item> planItems = new ArrayList<>();
// 生产任务总数
TaskRespVO.Item item = new TaskRespVO.Item();
item.setKey("1");
item.setLabel("生产任务总数");
item.setValue(taskMapper.selectCount(new LambdaQueryWrapperX<TaskDO>()
.betweenIfPresent(TaskDO::getCreateTime, taskReqVO.getStartTime()))); // 创建时间
taskItems.add(item);
// 未开工任务数
item = new TaskRespVO.Item();
item.setKey("2");
item.setLabel("未开工任务数");
Collection<Long> count1 = new ArrayList<>();
count1.add(1L);
count1.add(2L);
count1.add(3L);
item.setValue(taskMapper.selectCount(new LambdaQueryWrapperX<TaskDO>()
.in(TaskDO::getStatus, count1)
.betweenIfPresent(TaskDO::getOrderDate, taskReqVO.getStartTime()))); // 下达时间
taskItems.add(item);
// 生产中任务数
item = new TaskRespVO.Item();
item.setKey("3");
item.setLabel("生产中任务数");
Collection<Long> count2 = new ArrayList<>();
count2.add(4L);
item.setValue(taskMapper.selectCount(new LambdaQueryWrapperX<TaskDO>()
.in(TaskDO::getStatus, count2)
.betweenIfPresent(TaskDO::getOrderDate, taskReqVO.getStartTime())));
taskItems.add(item);
// 完工任务数
item = new TaskRespVO.Item();
item.setKey("4");
item.setLabel("完工任务数");
Collection<Long> count3 = new ArrayList<>();
count3.add(5L);
count3.add(6L);
item.setValue(taskMapper.selectCount(new LambdaQueryWrapperX<TaskDO>()
.in(TaskDO::getStatus, count3)
.betweenIfPresent(TaskDO::getOrderDate, taskReqVO.getStartTime())));
taskItems.add(item);
// 生产计划总数
item = new TaskRespVO.Item();
item.setKey("5");
item.setLabel("生产计划单数");
item.setValue(planMapper.selectCount());
planItems.add(item);
// 完成生产数量
item = new TaskRespVO.Item();
item.setKey("6");
item.setLabel("产品计划总数");
List<PlanDO> planDOList = planMapper.selectList();
long count = 0L;
for (PlanDO planDO : planDOList) {
if (planDO.getPlanNumber() != null) {
count = count + planDO.getPlanNumber();
}
}
item.setValue(count);
planItems.add(item);
// 报工数量
item = new TaskRespVO.Item();
item.setKey("7");
item.setLabel("报工总数");
long baogong = 0L;
for (PlanDO planDO : planDOList) {
if (planDO.getWangongNumber() != null) {
baogong = baogong + planDO.getWangongNumber();
}
}
item.setValue(baogong);
planItems.add(item);
// 未完成生产数量
item = new TaskRespVO.Item();
item.setKey("81");
item.setLabel("产品合格数");
long pass = 0L;
for (PlanDO planDO : planDOList) {
if (planDO.getPassNumber() != null) {
pass = pass + planDO.getPassNumber();
}
}
item.setValue(pass);
planItems.add(item);
// 完工率
item = new TaskRespVO.Item();
item.setKey("8");
item.setLabel("产品不合格数");
long noPass = 0L;
for (PlanDO planDO : planDOList) {
if (planDO.getNoPassNumber() != null) {
noPass = noPass + planDO.getNoPassNumber();
}
}
item.setValue(noPass);
planItems.add(item);
// 合格率
item = new TaskRespVO.Item();
item.setKey("9");
item.setLabel("合格率");
long passRate = 0;
if (baogong != 0) {
passRate = (long) (((double) pass / baogong) * 100);
}
item.setValue(passRate);
planItems.add(item);
taskRespVO.setTaskItems(taskItems);
taskRespVO.setPlanItems(planItems);
return success(taskRespVO);
}
@GetMapping("/getPlan")
@Operation(summary = "获得实时生产进度")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<List<PlanRespVO>> getPlan() {
List<Integer> statusList = new ArrayList<>();
statusList.add(1);
statusList.add(2);
statusList.add(3);
statusList.add(4);
statusList.add(5);
statusList.add(6);
List<PlanDO> planDOList = planService.getPlanByStatus(statusList);
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
convertSet(planDOList, PlanDO::getProductId));
Map<Long, OrganizationDO> organizationMap = organizationService.getOrganizationVOMap(convertSet(planDOList, PlanDO::getFeedingPipeline));
return success(BeanUtils.toBean(planDOList, PlanRespVO.class, planRespVO ->{
MapUtils.findAndThen(productMap, planRespVO.getProductId(), product -> planRespVO.setProductName(product.getName()));
MapUtils.findAndThen(organizationMap, planRespVO.getFeedingPipeline(), organization -> planRespVO.setFeedingPipelineName(organization.getName()));
}));
}
@GetMapping("/getDevice")
@Operation(summary = "获得设备")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:bom:query')")
public CommonResult<List<DeviceRespVO>> getDevice() {
List<DeviceRespVO> deviceRespVOList = new ArrayList<>();
DeviceRespVO deviceRespVO = new DeviceRespVO();
// 设备维修
deviceRespVO.setKey("1");
deviceRespVO.setLabel("维修");
deviceRespVO.setValue(dvRepairService.getRepairListCountByRepairStatus());
deviceRespVO.setLevel("mini-danger");
deviceRespVOList.add(deviceRespVO);
// 设备点检
deviceRespVO = new DeviceRespVO();
deviceRespVO.setKey("2");
deviceRespVO.setLabel("点检");
deviceRespVO.setValue(ticketManagementService.getDianjianListCountByJobStatus());
deviceRespVO.setLevel("mini-normal");
deviceRespVOList.add(deviceRespVO);
// 设备保养
deviceRespVO = new DeviceRespVO();
deviceRespVO.setKey("3");
deviceRespVO.setLabel("保养");
deviceRespVO.setValue(ticketManagementService.getBaoyangListCountByJobStatus());
deviceRespVO.setLevel("mini-total");
deviceRespVOList.add(deviceRespVO);
return success(deviceRespVOList);
}
}

@ -0,0 +1,24 @@
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 DeviceRespVO {
@Schema(description = "key")
private String key;
@Schema(description = "label")
private String label;
@Schema(description = "value")
private Long value;
@Schema(description = "level")
private String level;
}

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 首页整体生产概况 Request VO")
@Data
public class TaskReqVO {
@Schema(description = "开始时间")
private LocalDateTime[] startTime;
}

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Schema(description = "管理后台 - 产品BOM Response VO")
@Data
@ExcelIgnoreUnannotated
public class TaskRespVO {
@Schema(description = "任务")
private List<TaskRespVO.Item> taskItems;
@Schema(description = "计划")
private List<TaskRespVO.Item> planItems;
@Data
public static class Item {
@Schema(description = "key")
private String key;
@Schema(description = "label")
private String label;
@Schema(description = "value")
private Long value;
}
}

@ -0,0 +1,4 @@
package cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo;
public class TaskVO {
}

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.controller.admin.deviceledger;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.utils.ResumeNameUtils;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@ -177,4 +178,20 @@ public class DeviceLedgerController {
ExcelUtils.write(response, fileName, "数据", ErpProductVO.class,list);
}
@GetMapping("/export-mold")
@Operation(summary = "根据设备Id导出模具")
@PreAuthorize("@ss.hasPermission('mes:device-ledger:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMold(@RequestParam(name = "id") Long id,
HttpServletResponse response) throws IOException {
List<MoldVO> list = deviceLedgerService.exportMold(id);
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("模具.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
String fileName = String.format("模具_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
// 导出 Excel
ExcelUtils.write(response, fileName, "数据", MoldVO.class,list);
}
}

@ -0,0 +1,50 @@
package cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "管理后台 - 设备模具导出 Resp VO")
@Data
@ExcelIgnoreUnannotated
public class MoldVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32278")
@ExcelProperty("ID")
private Long id;
@Schema(description = "模具编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模具编码")
private String code;
@Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("模具名称")
private String name;
@Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("入库时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDateTime inTime;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -119,7 +119,7 @@ public class PlanController {
//@PreAuthorize("@ss.hasPermission('mes:plan:query')")
public CommonResult<PlanRespVO> getPlan(@RequestParam("id") Long id) {
PlanDO plan = planService.getPlan(id);
return success(BeanUtils.toBean(plan, PlanRespVO.class));
return success(planService.getPlanRespVO(plan));
}
@GetMapping("/page")
@ -250,6 +250,31 @@ public class PlanController {
return success(planRespVOList);
}
@GetMapping("/getByTicketType")
@Operation(summary = "获得质检工单下拉")
@Parameter(name = "status", description = "状态", required = true, example = "1024")
public CommonResult<List<PlanRespVO>> getByTicketType(@RequestParam("status") Integer status) {
if (status == 1) {
List<Integer> statusList = new ArrayList<>();
statusList.add(status);
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);
} else if (status == 2) {
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
List<PlanDO> proList = planService.getPlanByStatus(statusList);
List<PlanRespVO> planRespVOList = planService.buildVOList(proList);
return success(planRespVOList);
} else {
return success(Collections.emptyList());
}
}
@GetMapping("/setTop")
@Operation(summary = "置顶生产计划")
@Parameter(name = "id", description = "编号", required = true, example = "1024")

@ -45,8 +45,11 @@ public class ZjTaskRespVO {
private String remark;
@Schema(description = "工单", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工单")
private String ticket;
private Long ticket;
@Schema(description = "工单")
@ExcelProperty("生产计划")
private String ticketCode;
@Schema(description = "工序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "工序", converter = DictConvert.class)

@ -141,4 +141,6 @@ public class PlanDO extends BaseDO {
*/
private BigDecimal passRate;
private Long workerId;
}

@ -54,7 +54,12 @@ public class ZjTaskDO extends BaseDO {
/**
*
*/
private String ticket;
private Long ticket;
/**
*
*/
@TableField(exist = false)
private String ticketCode;
/**
*
*/

@ -78,4 +78,6 @@ public interface DeviceLedgerService {
List<ErpProductVO> exportSpareBased(Long id);
List<MoldVO> exportMold(Long id);
}

@ -284,4 +284,32 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
}
@Override
public List<MoldVO> exportMold(Long id) {
DeviceLedgerDO deviceLedgerDO = deviceLedgerMapper.selectById(id);
if (deviceLedgerDO == null){
throw exception(DEVICE_LEDGER_EXISTS);
}
//模具列表
List<MoldDO> moldList = new ArrayList<>();
if (StringUtils.isNotBlank(deviceLedgerDO.getMoldId())) {
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(deviceLedgerDO.getMoldId().split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
for (Long moldId : idList) {
MoldDO moldDO = moldMapper.selectById(moldId);
if(moldDO!=null){
moldList.add(moldDO);
}
}
}
return BeanUtils.toBean(moldList, MoldVO.class);
}
}

@ -70,4 +70,6 @@ public interface DvRepairService {
void updateDvRepairStatus(@Valid DvRepirUpdateReqVO updateReqVO);
List<DvRepairLineRespVO> getRepairListByDeviceId(Long deviceId, String startTime, String endTime,String ids);
Long getRepairListCountByRepairStatus();
}

@ -268,6 +268,13 @@ public class DvRepairServiceImpl implements DvRepairService {
return dvRepairLineRespVOS;
}
@Override
public Long getRepairListCountByRepairStatus() {
return dvRepairMapper.selectCount(Wrappers.<DvRepairDO>lambdaQuery()
.eq(DvRepairDO::getRepairStatus, 0));
}
private LocalDateTime parseToLocalDateTime(String timeStr) {
if (StringUtils.isBlank(timeStr)) {

@ -80,6 +80,10 @@ public class OrganizationServiceImpl implements OrganizationService {
// }
organization.setCode(autoCodeUtil.genSerialCode("ORG_CODE",null));
} else {
if (organizationMapper.selectByNo(organization.getCode()) != null) {
throw exception(ORGANIZATION_CODE_EXISTS);
}
}
organizationMapper.insert(organization);
// 返回

@ -96,4 +96,12 @@ public interface PlanService {
List<PlanDO> getPlanBy(PlanPageReqVO pageReqVO);
void createPlanStockIn(PlanStatusUpdateVO statusUpdateVO,PlanDO planDO);
/**
*
*
* @param pageReqVO
* @return
*/
PlanRespVO getPlanRespVO(PlanDO planDO);
}

@ -29,6 +29,7 @@ import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemAnalysisService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
import cn.iocoder.yudao.module.mes.service.paigongrecord.PaigongRecordService;
import cn.iocoder.yudao.module.mes.service.task.TaskService;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@ -48,6 +49,7 @@ import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PLAN_CODE_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
/**
@ -79,6 +81,9 @@ public class PlanServiceImpl implements PlanService {
@Autowired
private AutoCodeUtil autoCodeUtil;
@Resource
private OrganizationService organizationService;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createPlan(PlanSaveReqVO createReqVO) {
@ -92,6 +97,10 @@ public class PlanServiceImpl implements PlanService {
// }
// plan.setCode(no);
plan.setCode(autoCodeUtil.genSerialCode("PLAN_CODE",null));
} else {
if (planMapper.selectByNo(plan.getCode()) != null) {
throw exception(PLAN_CODE_EXISTS);
}
}
if(plan.getProductId()==null && plan.getTaskDetailId()!=null){
TaskDetailDO taskDetailDO = taskService.getTaskDetail(plan.getTaskDetailId());
@ -208,6 +217,15 @@ public class PlanServiceImpl implements PlanService {
public PlanDO getPlan(Long id) {
return planMapper.selectById(id);
}
@Override
public PlanRespVO getPlanRespVO(PlanDO planDO) {
PlanRespVO planRespVO = BeanUtils.toBean(planDO, PlanRespVO.class);
planRespVO.setProductName(productService.getProduct(planDO.getProductId()).getName());
planRespVO.setTaskCode(taskService.getTask(planDO.getTaskId()).getCode());
planRespVO.setWorker(userService.getUser(planDO.getWorkerId()).getUsername());
planRespVO.setFeedingPipelineName(organizationService.getOrganization(planDO.getFeedingPipeline()).getName());
return planRespVO;
}
@Override
public PageResult<PlanRespVO> getPlanPage(PlanPageReqVO pageReqVO) {

@ -36,8 +36,7 @@ import java.util.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.TASK_DETAIL_NOT_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.TASK_NOT_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
@ -72,6 +71,10 @@ public class TaskServiceImpl implements TaskService {
// }
// task.setCode(no);
task.setCode(autoCodeUtil.genSerialCode("TASK_CODE",null));
} else {
if (taskMapper.selectByNo(task.getCode()) != null) {
throw exception(TASK_CODE_EXISTS);
}
}
createReqVO.setStatus(TaskStatusEnum.稿.getValue());
taskMapper.insert(task);

@ -59,4 +59,8 @@ public interface TicketManagementService {
List<TicketResultsDO> getInspectionByDeviceId(Long id,String startTime,String endTime,String ids);
List<TicketResultsDO> getMaintenanceByDeviceId(Long id,String startTime,String endTime,String ids);
Long getBaoyangListCountByJobStatus();
Long getDianjianListCountByJobStatus();
}

@ -2,12 +2,14 @@ package cn.iocoder.yudao.module.mes.service.ticketmanagement;
import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum;
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.dvrepair.DvRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.ticketresults.TicketResultsMapper;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -126,6 +128,22 @@ public class TicketManagementServiceImpl implements TicketManagementService {
return inspectionList;
}
@Override
public Long getBaoyangListCountByJobStatus() {
return ticketManagementMapper.selectCount(Wrappers.<TicketManagementDO>lambdaQuery()
.eq(TicketManagementDO::getJobStatus, 0)
.eq(TicketManagementDO::getPlanType,2));
}
@Override
public Long getDianjianListCountByJobStatus() {
return ticketManagementMapper.selectCount(Wrappers.<TicketManagementDO>lambdaQuery()
.eq(TicketManagementDO::getJobStatus, 0)
.eq(TicketManagementDO::getPlanType,1));
}
/**
* ID
*/

@ -1,14 +1,19 @@
package cn.iocoder.yudao.module.mes.service.zjtask;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.FeedingRecordRespVO;
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.zjitem.ZjItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjschema.ZjSchemaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults.ZjTaskResultsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.zjitem.ZjItemMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.zjschema.ZjSchemaMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.zjtaskresults.ZjTaskResultsMapper;
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -28,6 +33,8 @@ import cn.iocoder.yudao.module.mes.dal.mysql.zjtask.ZjTaskMapper;
import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.UNAUTHORIZED;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -51,6 +58,9 @@ public class ZjTaskServiceImpl implements ZjTaskService {
@Resource
private ZjItemMapper zjItemMapper; // 检验项目Mapper用于关联查询方案下的项目
@Resource
private PlanService planService;
@Override
public Long createZjTask(ZjTaskSaveReqVO createReqVO) {
// 插入
@ -127,7 +137,11 @@ public class ZjTaskServiceImpl implements ZjTaskService {
@Override
public PageResult<ZjTaskDO> getZjTaskPage(ZjTaskPageReqVO pageReqVO) {
return zjTaskMapper.selectPage(pageReqVO);
PageResult<ZjTaskDO> pageResult = zjTaskMapper.selectPage(pageReqVO);
Map<Long, PlanDO> planMap = planService.getPlanMap(convertSet(pageResult.getList(), ZjTaskDO::getTicket));
return BeanUtils.toBean(pageResult, ZjTaskDO.class, zjTaskDO -> {
MapUtils.findAndThen(planMap, zjTaskDO.getTicket(), planDO -> zjTaskDO.setTicketCode(planDO.getCode()));
});
}
@Override

Loading…
Cancel
Save