src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -2,14 +2,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.pojo.DeviceRepair; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.oA.pojo.OaProject; import com.ruoyi.production.dto.ProductProcessDto; import com.ruoyi.production.pojo.ProductProcess; import com.ruoyi.production.service.impl.ProductProcessServiceImpl; @@ -17,7 +14,6 @@ import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -83,4 +79,25 @@ ExcelUtil<ProductProcess> util = new ExcelUtil<ProductProcess>(ProductProcess.class); util.importTemplateExcel(response, "工序模板"); } @PostMapping("/bindDevices") @Log(title = "工序-绑定设备", businessType = BusinessType.UPDATE) @ApiOperation("工序-绑定设备") public AjaxResult bindDevices(@RequestParam Long processId, @RequestBody List<Long> deviceIds) { return productProcessService.bindDevices(processId, deviceIds); } @GetMapping("/getBindDevices") @Log(title = "工序-查询绑定的设备", businessType = BusinessType.OTHER) @ApiOperation("工序-查询绑定的设备") public AjaxResult getBindDevices(@RequestParam Long processId) { return AjaxResult.success(productProcessService.getBindDevices(processId)); } @DeleteMapping("/unbindDevice") @Log(title = "工序-解除设备绑定", businessType = BusinessType.DELETE) @ApiOperation("工序-解除设备绑定") public AjaxResult unbindDevice(@RequestParam Long processId, @RequestParam Long deviceId) { return productProcessService.unbindDevice(processId, deviceId); } } src/main/java/com/ruoyi/production/dto/ProductProcessDto.java
@@ -1,13 +1,16 @@ package com.ruoyi.production.dto; import java.util.List; import com.ruoyi.production.pojo.ProductProcess; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel public class ProductProcessDto extends ProductProcess { @ApiModelProperty(value = "绑定的设备ID列表") private List<Long> deviceIdList; } src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -78,5 +78,7 @@ @ApiModelProperty(value ="是否质检") private Boolean isQuality; @ApiModelProperty(value = "绑定的设备ID列表(JSON格式)") private String deviceIds; } src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.pojo.DeviceRepair; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.*; import com.ruoyi.production.pojo.ProductProcess; @@ -25,4 +26,10 @@ AjaxResult importData(MultipartFile file); String batchDelete(List<Integer> ids); AjaxResult bindDevices(Long processId, List<Long> deviceIds); AjaxResult unbindDevice(Long processId, Long deviceId); List<DeviceLedger> getBindDevices(Long processId); } src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -1,12 +1,15 @@ package com.ruoyi.production.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.mapper.DeviceLedgerMapper; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.ProductProcessDto; import com.ruoyi.production.mapper.ProcessRouteItemMapper; @@ -22,6 +25,8 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.Collections; import java.util.List; @Service @@ -32,6 +37,8 @@ private ProcessRouteItemMapper processRouteItemMapper; @Autowired private ProductProcessRouteItemMapper productProcessRouteItemMapper; @Autowired private DeviceLedgerMapper deviceLedgerMapper; @Override public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) { @@ -89,4 +96,59 @@ productProcessMapper.deleteBatchIds(ids); return null; } @Override public AjaxResult bindDevices(Long processId, List<Long> deviceIds) { ProductProcess productProcess = productProcessMapper.selectById(processId); if (productProcess == null) { return AjaxResult.error("工序不存在"); } String deviceIdsJson = productProcess.getDeviceIds(); // 获取已有的设备ID列表 List<Long> existingDeviceIds = Collections.emptyList(); if (StringUtils.isNotEmpty(deviceIdsJson)) { existingDeviceIds = JSON.parseArray(deviceIdsJson, Long.class); } // 合并设备ID(去重) List<Long> mergedDeviceIds = new ArrayList<>(existingDeviceIds); for (Long deviceId : deviceIds) { if (!mergedDeviceIds.contains(deviceId)) { mergedDeviceIds.add(deviceId); } } deviceIdsJson = JSON.toJSONString(mergedDeviceIds); productProcess.setDeviceIds(deviceIdsJson); productProcessMapper.updateById(productProcess); return AjaxResult.success(); } @Override public AjaxResult unbindDevice(Long processId, Long deviceId) { ProductProcess productProcess = productProcessMapper.selectById(processId); if (productProcess == null) { return AjaxResult.error("工序不存在"); } if (productProcess.getDeviceIds() == null || productProcess.getDeviceIds().isEmpty()) { return AjaxResult.success(); } List<Long> existingDeviceIds = JSON.parseArray(productProcess.getDeviceIds(), Long.class); existingDeviceIds.remove(deviceId); String deviceIdsJson = JSON.toJSONString(existingDeviceIds); productProcess.setDeviceIds(deviceIdsJson); productProcessMapper.updateById(productProcess); return AjaxResult.success(); } @Override public List<DeviceLedger> getBindDevices(Long processId) { ProductProcess productProcess = productProcessMapper.selectById(processId); if (productProcess == null || productProcess.getDeviceIds() == null) { return Collections.emptyList(); } List<Long> deviceIdList = JSON.parseArray(productProcess.getDeviceIds(), Long.class); if (CollectionUtils.isEmpty(deviceIdList)) { return Collections.emptyList(); } return deviceLedgerMapper.selectBatchIds(deviceIdList); } }