package com.qianwen.smartman.modules.cps.controller; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.scanner.modular.annotation.DeleteResource; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.annotation.PutResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.api.ResultCode; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.cps.convert.ShiftConvert; import com.qianwen.smartman.modules.cps.entity.ShiftModel; import com.qianwen.smartman.modules.cps.service.IShiftModelService; import com.qianwen.smartman.modules.cps.vo.ShiftIndexNameVO; import com.qianwen.smartman.modules.cps.vo.ShiftModelSearchVO; import com.qianwen.smartman.modules.cps.vo.ShiftModelVO; import com.qianwen.smartman.modules.cps.vo.ShiftSaveVO; import com.qianwen.smartman.modules.cps.vo.ShiftSimpleVO; import com.qianwen.smartman.modules.cps.vo.ShiftUpdateBasicVO; import com.qianwen.smartman.modules.cps.vo.ShiftUpdateVO; import com.qianwen.smartman.modules.cps.vo.ShiftVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @ApiResource({"smis/shift"}) @Api(value = "班次", tags = {"班次"}) @RestController public class ShiftController extends BladeController { private final IShiftModelService shiftModelService; public ShiftController(IShiftModelService shiftModelService) { this.shiftModelService = shiftModelService; } @PreAuth @PostResource @ApiOperation("新建班次模型") public R saveShift(@Validated @RequestBody ShiftSaveVO shiftSaveVO) { return R.data(ShiftConvert.INSTANCE.convert(this.shiftModelService.saveShift(shiftSaveVO))); } @PreAuth @PutResource @ApiOperation("编辑班次模型") public R updateShift(@Validated @RequestBody ShiftUpdateVO shiftUpdateVO) { return R.data(ShiftConvert.INSTANCE.convert(this.shiftModelService.update(shiftUpdateVO))); } @PreAuth @PutResource({"/updateBasic"}) @ApiOperation("编辑班次模型基础信息") public R updateShiftBasic(@RequestBody ShiftUpdateBasicVO shiftUpdateBasicVO) { return R.data(ShiftConvert.INSTANCE.convert(this.shiftModelService.updateShiftBasic(shiftUpdateBasicVO))); } @PreAuth @DeleteResource({"/{id}"}) @ApiOperation("删除班次模型") public R deleteShift(@PathVariable String id) { this.shiftModelService.deleteShift(id); return R.success(ResultCode.SUCCESS); } @PreAuth @PostResource({"/page"}) @ApiOperation(value = "分页查询班次模型", notes = "传入分页条件") public R> getPageShift(Query query, @Validated @RequestBody ShiftModelSearchVO shiftModelSearchVO) { //return return Optional.>ofNullable(this.shiftModelService.page(Condition.getPage(query), Wrappers.query().lambda() .in(ShiftModel::getStatus, shiftModelSearchVO.getStatusList()) .eq(ShiftModel::getTenantId, AuthUtil.getTenantId()) .like(Func.isNotEmpty(shiftModelSearchVO.getCode()), ShiftModel::getCode, shiftModelSearchVO.getCode()) .like(Func.isNotEmpty(shiftModelSearchVO.getName()), ShiftModel::getName, shiftModelSearchVO.getName()) .orderByDesc(ShiftModel::getCreateTime))) .map(iPage -> { List list = iPage.getRecords().stream().map(ShiftConvert.INSTANCE::convertSimple).collect(Collectors.toList()); IPage page = new Page<>(); BeanUtils.copyProperties(iPage, page); page.setRecords(list); return R.data(page); }).orElse(R.data(new Page<>())); /* return (R) Optional.ofNullable(this.shiftModelService.page(Condition.getPage(query), (Wrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) Wrappers.query().lambda().in((v0) -> { return v0.getStatus(); }, shiftModelSearchVO.getStatusList())).eq((v0) -> { return v0.getTenantId(); }, AuthUtil.getTenantId())).like(Func.isNotEmpty(shiftModelSearchVO.getCode()), (v0) -> { return v0.getCode(); }, shiftModelSearchVO.getCode()).like(Func.isNotEmpty(shiftModelSearchVO.getName()), (v0) -> { return v0.getName(); }, shiftModelSearchVO.getName()).orderByDesc((v0) -> { return v0.getCreateTime(); }))).map(iPage -> { Stream stream = iPage.getRecords().stream(); ShiftConvert shiftConvert = ShiftConvert.INSTANCE; shiftConvert.getClass(); List list = (List) stream.map(this::convertSimple).collect(Collectors.toList()); Page page = new Page(); BeanUtils.copyProperties(iPage, page); page.setRecords(list); return R.data(page); }).orElse(R.data(new Page())); */ } @PreAuth @PostResource({"/list"}) @ApiOperation(value = "班次模型列表", notes = "班次模型列表") public R> getShiftList(@Validated @RequestBody ShiftModelSearchVO shiftModelSearchVO) { return R.data(this.shiftModelService.list(new QueryWrapper().lambda() .in(ShiftModel::getStatus, shiftModelSearchVO.getStatusList()) .eq(ShiftModel::getTenantId, AuthUtil.getTenantId())) .stream() .map(ShiftConvert.INSTANCE::convertSimple) .collect(Collectors.toList())); /* Stream stream = this.shiftModelService.list((Wrapper) ((LambdaQueryWrapper) new QueryWrapper().lambda().in((v0) -> { return v0.getStatus(); }, shiftModelSearchVO.getStatusList())).eq((v0) -> { return v0.getTenantId(); }, AuthUtil.getTenantId())).stream(); ShiftConvert shiftConvert = ShiftConvert.INSTANCE; shiftConvert.getClass(); return R.data(stream.map(this::convertSimple).collect(Collectors.toList())); */ } @PreAuth @GetResource({"/{id}"}) @ApiOperation(value = "查询班次详情", notes = "传入id") public R getShiftDetail(@PathVariable String id) { return R.data(this.shiftModelService.getShiftDetail(Long.valueOf(id))); } @GetResource({"/shiftIndex/{id}"}) @ApiOperation(value = "查询班次index详情", notes = "传入id") public R> getShiftIndex(@PathVariable String id) { return R.data(this.shiftModelService.getShiftIndex(Long.valueOf(id))); } @GetResource({"/indexNames"}) @ApiOperation(value = "查询租户下所有班次模型对应名称", notes = "查询租户下所有班次模型对应名称") public R getShiftIndexName() { return R.data(this.shiftModelService.getShiftIndexName()); } }