package com.ruoyi.iot.controller; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.iot.domain.Device; import com.ruoyi.iot.domain.DeviceOrder; import com.ruoyi.iot.service.IDeviceOrderService; import com.ruoyi.iot.service.IDeviceService; import com.ruoyi.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.util.List; /** * @author wmz * @version v1.0 * @ClassName DeviceOrderController * @description 设备安装controller * @createTime 2023/11/13 0:27 */ @Api(tags = "设备安装信息") @RestController @RequestMapping("/iot/deviceOrder") public class DeviceOrderController extends BaseController { private static final Logger log = LoggerFactory.getLogger(DeviceOrderController.class); @Resource private IDeviceOrderService iDeviceOrderService; @Autowired private IDeviceService deviceService; @Autowired private ISysUserService userService; @Autowired private TokenService tokenService; /** * 查询全部设备安装单订单信息 * * @return * @throws Exception */ @PreAuthorize("@ss.hasAnyPermi('iot:deviceOrder:list')") @GetMapping("/list") @ApiOperation(value = "获取设备订单分页列表") public TableDataInfo list(DeviceOrder deviceOrder) throws Exception { startPage(); List list = iDeviceOrderService.selectDeviceOrderList(deviceOrder); return getDataTable(list); } /** * 添加安装设备订单信息 * * @param deviceOrder * @return * @throws Exception */ @ApiOperation("添加安装单") @PreAuthorize("@ss.hasPermi('iot:device:add')") @Log(title = "添加安装单信息", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody DeviceOrder deviceOrder) throws Exception { //更新订单的初始化状态 if ("未指派".equals(deviceOrder.getErectoName())) { deviceOrder.setState(0); } else { deviceOrder.setState(1); } //判断传过来的orderType的值是否为2-维修 if ("2".equals(deviceOrder.getOrderType())) { log.info("orderType{}", deviceOrder.getOrderType()); System.out.println(deviceOrder.getOrderType()); //更新订单的用户信息 SysUser sysUser = getLoginUser().getUser(); deviceOrder.setCreateUserId(sysUser.getUserId()); //插入维修单 int rows = iDeviceOrderService.insertDeviceOrder(deviceOrder); if (rows > 0) { Device device1 = deviceService.selectDeviceByDeviceId(deviceOrder.getDeviceId()); //更新当前设备的是否维修信息-未维修 Device device = new Device(); device.setDeviceId(deviceOrder.getDeviceId()); device.setRepairFlag(1); device.setStatus(device1.getStatus()); deviceService.updateDevice(device); } return toAjax(rows); } //更新订单的用户信息 SysUser sysUser = getLoginUser().getUser(); deviceOrder.setCreateUserId(sysUser.getUserId()); //插入安装订单 int rows = iDeviceOrderService.insertDeviceOrder(deviceOrder); if (rows > 0) { //更新当前设备状态信息--安装中 Device device = new Device(); device.setDeviceId(deviceOrder.getDeviceId()); device.setStatus(5); deviceService.updateDevice(device); } return toAjax(rows); } /** * 修改设备订单信息 * * @param deviceOrder * @return * @throws Exception */ @ApiOperation(value = "修改设备订单信息") @PreAuthorize("@ss.hasPermi('iot:device:edit')") @Log(title = "修改设备订单信息", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody DeviceOrder deviceOrder) throws Exception { //判断传过来的orderType的值是否为1-安装,并且安装单的状态为为已完成,修改设备的状态为离线状态 if ("1".equals(deviceOrder.getOrderType()) && deviceOrder.getState() == 3) { Device device = new Device(); device.setDeviceId(deviceOrder.getDeviceId()); //修改设备的状态为离线 device.setStatus(4); deviceService.updateDevice(device); } //判断传过来的orderType的值是否为2-维修,并且维修单的状态为为已完成,修改设备的是否为修为0-已维修 if ("2".equals(deviceOrder.getOrderType()) && deviceOrder.getState() == 3) { Device device1 = deviceService.selectDeviceByDeviceId(deviceOrder.getDeviceId()); Device device = new Device(); device.setDeviceId(deviceOrder.getDeviceId()); device.setRepairFlag(0); device.setStatus(device1.getStatus()); deviceService.updateDevice(device); } //获取修改订单的用户信息 SysUser sysUser = getLoginUser().getUser(); //拿到修改安装单的用户id deviceOrder.setUpdateUserId(sysUser.getUserId()); return toAjax(iDeviceOrderService.updateDeviceOrder(deviceOrder)); } /** * 删除设备订单信息 * * @param deviceId * @return * @throws Exception */ @PreAuthorize("@ss.hasPermi('iot:device:remove')") @Log(title = "删除设备订单信息", businessType = BusinessType.DELETE) @DeleteMapping("/{deviceId}") @ApiOperation("删除订单信息") public AjaxResult remove(@PathVariable("deviceId") Integer deviceId) throws Exception { //根据要删除安装单的id查询出安装单信息 DeviceOrder deviceOrder = iDeviceOrderService.selectDeviceOrderById(deviceId); SysUser user = getLoginUser().getUser(); //如果根据查询出来的安装单对象不为空的话,并且状态等于未派单才可以删除 if (deviceOrder != null && deviceOrder.getState() == 0 && user.getUserId() != 1) { //未派单的安装单删除后设备的状态更新为-未激活 Device device = new Device(); device.setDeviceId(deviceOrder.getDeviceId()); device.setStatus(1); deviceService.updateDevice(device); int i = iDeviceOrderService.deleteDeviceOrderById(deviceOrder.getId()); return toAjax(i); } else { return AjaxResult.error(); } } /** * 安装单维修单图片上传 */ @Log(title = "安装单图片上传", businessType = BusinessType.INSERT) @PostMapping("/profile/avatar") @ApiOperation("安装单图片上传") public AjaxResult imgurl(@RequestParam("avatarfile") MultipartFile file) throws Exception { // 判断头像文件不为空 if (!file.isEmpty()) { // 通过Security获取到登录的用户信息 LoginUser loginUser = getLoginUser(); String avatar = FileUploadUtils.upload(RuoYiConfig.getDeviceOrderPath(), file); AjaxResult ajax = AjaxResult.success(); ajax.put("imgUrl", avatar); return ajax; } return AjaxResult.error("图片上传失败"); } }