package com.gxwebsoft.tower.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.gxwebsoft.common.core.annotation.OperationLog; import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.service.UserService; import com.gxwebsoft.tower.entity.*; import com.gxwebsoft.tower.param.TowerProjectParam; import com.gxwebsoft.tower.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.*; /** * 项目管理控制器 * * @author 科技小王子 * @since 2023-05-22 13:30:39 */ @Api(tags = "项目管理管理") @RestController @RequestMapping("/api/tower/tower-project") public class TowerProjectController extends BaseController { @Resource private TowerProjectService towerProjectService; @Resource private TowerProjectOrderService towerProjectOrderService; @Resource private TowerProjectUserService towerProjectUserService; @Resource private TowerProjectPlaceService towerProjectPlaceService; @Resource private TowerEquipmentService equipmentService; @Resource private UserService userService; @PreAuthorize("hasAuthority('tower:towerEquipment:list')") @OperationLog @ApiOperation("项目数据") @GetMapping("/data") public ApiResult> data() { Map data = new HashMap<>(); Integer totalNum = towerProjectService.count(); Integer startedNum = towerProjectService.count( new LambdaQueryWrapper() .eq(TowerProject::getProjectStatus, "建设中") ); Integer notStartNum = towerProjectService.count( new LambdaQueryWrapper() .eq(TowerProject::getProjectStatus, "未开工") ); data.put("totalNum", totalNum); data.put("startedNum", startedNum); data.put("notStartNum", notStartNum); return success(data); } @PreAuthorize("hasAuthority('tower:towerProject:list')") @ApiOperation("分页查询项目管理") @GetMapping("/page") public ApiResult> page(TowerProjectParam param) { // 使用关联查询 PageResult list = towerProjectService.pageRel(param); for (TowerProject project : list.getList()) { project.setEquipmentNum(towerProjectOrderService.count( new LambdaQueryWrapper() .eq(TowerProjectOrder::getProjectId, project.getProjectId()) )); project.setOrders( new HashSet<>(towerProjectOrderService.list( new LambdaQueryWrapper().eq(TowerProjectOrder::getProjectId, project.getProjectId()) )) ); if (!project.getDirector().equals("0")) project.setDirectorUser(userService.getById(project.getDirector())); } return success(list); } @PreAuthorize("hasAuthority('tower:towerProject:list')") @ApiOperation("查询全部项目管理") @GetMapping() public ApiResult> list(TowerProjectParam param) { // 使用关联查询 return success(towerProjectService.listRel(param)); } @PreAuthorize("hasAuthority('tower:towerProject:list')") @ApiOperation("根据id查询项目管理") @GetMapping("/{id}") public ApiResult get(@PathVariable("id") Integer id) { // 使用关联查询 return success(towerProjectService.getByIdRel(id)); } @ApiOperation("添加项目管理") @PostMapping("/new") public ApiResult newProject(@RequestBody TowerProject towerProject) { // 记录当前登录用户id User loginUser = getLoginUser(); if (loginUser != null) { towerProject.setUserId(loginUser.getUserId()); } towerProjectService.save(towerProject); return success(towerProject); } @PreAuthorize("hasAuthority('tower:towerProject:save')") @Transactional(rollbackFor = {Exception.class}) @ApiOperation("添加项目管理") @PostMapping() public ApiResult save(@RequestBody TowerProject towerProject) { // 记录当前登录用户id User loginUser = getLoginUser(); if (loginUser != null) { towerProject.setUserId(loginUser.getUserId()); } System.out.println("towerProject = " + towerProject.getPlaces2()); if (towerProjectService.save(towerProject)) { final Integer projectId = towerProject.getProjectId(); // 批量添加项目成员 if (!towerProject.getUsers().isEmpty()) { final Set users = towerProject.getUsers(); users.forEach(d -> { d.setProjectId(projectId); }); towerProjectUserService.saveBatch(users); } // 批量添加项目订单 if (!towerProject.getOrders().isEmpty()) { final Set orders = towerProject.getOrders(); orders.forEach(d -> { d.setProjectId(projectId); }); towerProjectOrderService.saveBatch(orders); } // 批量添加检查部位配置 if (!towerProject.getPlaces1().isEmpty()) { final Set places1 = towerProject.getPlaces1(); places1.forEach(d -> { d.setProjectId(projectId); }); towerProjectPlaceService.saveBatch(places1); } // 批量添加保养部位配置 if (!towerProject.getPlaces2().isEmpty()) { final Set places2 = towerProject.getPlaces2(); places2.forEach(d -> { d.setProjectId(projectId); }); towerProjectPlaceService.saveBatch(places2); } return success("添加成功"); } return fail("添加失败"); } @PreAuthorize("hasAuthority('tower:towerProject:update')") @Transactional(rollbackFor = {Exception.class}) @ApiOperation("修改项目管理") @PutMapping() public ApiResult update(@RequestBody TowerProject towerProject) { if (towerProjectService.updateById(towerProject)) { // 批量修改项目成员 towerProjectUserService.saveOrUpdateBatch(towerProject.getUsers()); // 批量修改项目订单 Set projectOrders = towerProject.getOrders(); if (towerProject.getProjectStatus().equals("建设中")) { for (TowerProjectOrder order : projectOrders) { equipmentService.update( new LambdaUpdateWrapper() .eq(TowerEquipment::getFilingNo, order.getFilingNo()) .set(TowerEquipment::getStatus, 4) ); } } else if (towerProject.getProjectStatus().equals("完工")) { for (TowerProjectOrder order : projectOrders) { equipmentService.update( new LambdaUpdateWrapper() .eq(TowerEquipment::getFilingNo, order.getFilingNo()) .set(TowerEquipment::getStatus, 0) ); } } towerProjectOrderService.saveOrUpdateBatch(projectOrders); // 批量修改检查/保养部位配置 towerProjectPlaceService.saveOrUpdateBatch(towerProject.getPlaces1()); towerProjectPlaceService.saveOrUpdateBatch(towerProject.getPlaces2()); return success("修改成功"); } return fail("修改失败"); } @PreAuthorize("hasAuthority('tower:towerProject:remove')") @ApiOperation("删除项目管理") @DeleteMapping("/{id}") public ApiResult remove(@PathVariable("id") Integer id) { if (towerProjectService.removeById(id)) { return success("删除成功"); } return fail("删除失败"); } @PreAuthorize("hasAuthority('tower:towerProject:save')") @ApiOperation("批量添加项目管理") @PostMapping("/batch") public ApiResult saveBatch(@RequestBody List list) { if (towerProjectService.saveBatch(list)) { return success("添加成功"); } return fail("添加失败"); } @PreAuthorize("hasAuthority('tower:towerProject:update')") @ApiOperation("批量修改项目管理") @PutMapping("/batch") public ApiResult removeBatch(@RequestBody BatchParam batchParam) { if (batchParam.update(towerProjectService, "project_id")) { return success("修改成功"); } return fail("修改失败"); } @PreAuthorize("hasAuthority('tower:towerProject:remove')") @OperationLog @ApiOperation("批量删除项目管理") @DeleteMapping("/batch") public ApiResult removeBatch(@RequestBody List ids) { if (towerProjectService.removeByIds(ids)) { return success("删除成功"); } return fail("删除失败"); } }