package doumeemes.api.ext; import doumeemes.api.BaseController; import doumeemes.core.annotation.excel.ExcelExporter; import doumeemes.core.annotation.pr.PreventRepeat; import doumeemes.core.annotation.trace.Trace; import doumeemes.core.model.ApiResponse; import doumeemes.core.model.PageWrap; import doumeemes.core.model.PageData; import doumeemes.core.utils.Constants; import doumeemes.dao.business.model.Device; import doumeemes.dao.business.model.UserDevice; import doumeemes.dao.ext.dto.QueryDeviceExtDTO; import doumeemes.dao.ext.vo.DeviceExtListVO; import doumeemes.service.business.DeviceService; import doumeemes.service.business.UserDeviceService; import doumeemes.service.ext.DeviceExtService; import doumeemes.service.system.SystemDataPermissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.*; /** * 生产设备信息接口 * @author 江蹄蹄 * @date 2022/04/20 10:59 */ @RestController @RequestMapping("/ext/deviceExt") @Api(tags = "生产设备信息接口") @Trace(withRequestResult = false,withRequestParameters = false) public class DeviceExtController extends BaseController { @Autowired private DeviceExtService deviceExtService; @Autowired private DeviceService deviceService; @Autowired private UserDeviceService userDeviceService; @Autowired private SystemDataPermissionService systemDataPermissionService; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("ext:deviceext:create") public ApiResponse create(@RequestBody Device device) { return deviceService.insert(device); } @ApiOperation("根据ID删除") @ApiImplicitParam(value = "主键id", name = "id", paramType = "query", dataType = "String") @GetMapping("/delete/{id}") @RequiresPermissions("ext:deviceext:delete") public ApiResponse deleteById(@PathVariable Integer id) { Device device= deviceService.findById(id); device.setDeleted(Constants.ONE); UserDevice userDevice=new UserDevice(); userDevice.setDeleted(Constants.ZERO); userDevice.setDeviceId(id); List userlist= userDeviceService.findList(userDevice); if(userlist.size()>0){ return ApiResponse.failed("已有人员关联该设备,不允许删除"); } deviceService.updateById(device); return ApiResponse.success(null); } @ApiOperation("批量删除") @ApiImplicitParam(value = "主键ids", name = "ids", paramType = "query", dataType = "String") @GetMapping("/delete/batch") @RequiresPermissions("ext:deviceext:delete") public ApiResponse deleteByIds(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { Device device= deviceService.findById(Integer.valueOf(id)); UserDevice userDevice=new UserDevice(); userDevice.setDeleted(Constants.ZERO); userDevice.setDeviceId(Integer.valueOf(id)); List userlist= userDeviceService.findList(userDevice); if(userlist.size()>0){ return ApiResponse.failed(device.getName()+":已有人员关联该设备,不允许删除"); } device.setDeleted(Constants.ZERO); device.setUpdateUser(getLoginUser().getId()); device.setUpdateTime(new Date()); idList.add(device); } deviceService.updateByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("根据ID修改") @PostMapping("/updateById") @RequiresPermissions("ext:deviceext:update") public ApiResponse updateById(@RequestBody Device device) { if(device.getType()==Constants.ONE){ //设备组 Device groupdata= deviceService.findById(device.getGroupId()); if(groupdata!=null&&groupdata.getFinishWarehouseLocationId()!=null&&!Constants.equalsInteger(groupdata.getFinishWarehouseLocationId(),device.getFinishWarehouseLocationId())){ return ApiResponse.failed("所属设备组的生产货位关联错误!"); } if(groupdata!=null&&groupdata.getProduceWarehouseLocationId()!=null&&!Constants.equalsInteger(groupdata.getProduceWarehouseLocationId(),device.getProduceWarehouseLocationId())){ return ApiResponse.failed("所属设备组的已完工货位关联错误!"); } } Device queryDeviceExtDTO=new Device(); queryDeviceExtDTO.setDeleted(Constants.ZERO); queryDeviceExtDTO.setCode(device.getCode()); queryDeviceExtDTO.setRootDepartId(getLoginUser().getRootDepartment().getId()); List list= deviceService.findList(queryDeviceExtDTO); if(list.size()>0){ if(!Constants.equalsInteger(list.get(0).getId(),device.getId())){ return ApiResponse.failed("设备编码,不允许添加"); } } /* QueryDeviceExtDTO queryDeviceExtDTO1=new QueryDeviceExtDTO(); queryDeviceExtDTO1.setDeleted(Constants.ZERO); queryDeviceExtDTO1.setName(device.getName()); queryDeviceExtDTO1.setRootDepartId(getLoginUser().getRootDepartment().getId()); List list1= deviceExtService.getListByCondition(queryDeviceExtDTO1); if(list1.size()>0){ if(list1.get(0).getId()!=device.getId()){ return ApiResponse.failed("设备编码/设备名称已存在,不允许添加"); } }*/ device.setUpdateTime(new Date()); device.setUpdateUser(getLoginUser().getId()); Device find=deviceService.findById(device.getId()); find.setUpdateTime(new Date()); find.setUpdateUser(getLoginUser().getId()); find.setCode(device.getCode()); find.setName(device.getName()); find.setModel(device.getModel()); find.setProcedureId(device.getProcedureId()); find.setStationCode(device.getStationCode()); find.setType(Objects.nonNull(device.getType()) ? device.getType() : Constants.ONE); find.setGroupId(device.getGroupId()); find.setProduceWarehouseLocationId(device.getProduceWarehouseLocationId()); find.setFinishWarehouseLocationId(device.getFinishWarehouseLocationId()); deviceService.updateById(find); if(StringUtils.isNotBlank(device.getUserIds())){ deviceService.dealDeviceUserId(Constants.ONE,device.getUserIds(),device.getId(),getLoginUser()); }else { UserDevice userDevice = new UserDevice(); userDevice.setDeviceId(device.getId()); userDeviceService.delete(userDevice); } return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("ext:deviceext:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { pageWrap.getModel().setDeleted(Constants.ZERO); List list= getLoginUser().getDepartPermissionList(); /* if(list==null){ //查看全部的数据 }else if(list.size()==0){ //查看自己的 pageWrap.getModel().setCreateUser(getLoginUser().getId()); }else if(list.size()>0){ //查看指定部门的信息 pageWrap.getModel().setDepartPermissionList(list); }*/ pageWrap.getModel().setRootDepartId(getLoginUser().getRootDepartment().getId()); pageWrap.getModel().setDepartId(getLoginUser().getCurComDepartment().getId()); return ApiResponse.success(deviceExtService.getListByCondition(pageWrap)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("ext:deviceext:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { ExcelExporter.build(DeviceExtListVO.class).export(deviceExtService.findPage(pageWrap).getRecords(), "生产设备信息", response); } @ApiOperation("根据ID查询") @ApiImplicitParam(value = "主键id", name = "id", paramType = "query", dataType = "String") @GetMapping("/{id}") @RequiresPermissions("ext:deviceext:query") public ApiResponse findById(@PathVariable String id) { return ApiResponse.success(deviceService.findById(Integer.valueOf(id))); } @ApiOperation("查询所有当前用户主组织设备组") @PostMapping("/deviceGroup") public ApiResponse> deviceGroup (@RequestBody QueryDeviceExtDTO queryDeviceExtDTO) { queryDeviceExtDTO.setDeleted(Constants.ZERO); queryDeviceExtDTO.setType(Constants.ZERO); queryDeviceExtDTO.setRootDepartId(getLoginUser().getRootDepartment().getId()); queryDeviceExtDTO.setDepartId(getLoginUser().getCurComDepartment().getId()); List list= deviceExtService.getListByCondition(queryDeviceExtDTO); return ApiResponse.success(list); } @ApiOperation("获取权限范围内的设备数据") @PostMapping("/getDeviceByCondition") public ApiResponse> getDeviceByCondition (@RequestBody QueryDeviceExtDTO queryDeviceExtDTO) { queryDeviceExtDTO.setDeleted(Constants.ZERO); List list= deviceExtService.getDeviceByCondition(queryDeviceExtDTO); return ApiResponse.success(list); } @ApiOperation(value = "批量导入计划", notes = "批量导入计划", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/importBatch", headers = "content-type=multipart/form-data") // @RequiresPermissions("business:salaryparam:create") public ApiResponse importBatch(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); if (multipartResovler.isMultipart(request)) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator it = multipartRequest.getFileNames(); while (it.hasNext()) { MultipartFile file = multipartRequest.getFile((String) it.next()); deviceService.importPlans(file); break; } } return ApiResponse.success( null); } }