package com.glxp.api.controller.auth; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.annotation.Log; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.BusinessType; import com.glxp.api.entity.auth.DeptEntity; import com.glxp.api.entity.auth.InvBusUserEntity; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.auth.WarehouseBussinessTypeEntity; import com.glxp.api.req.auth.FilterInvBusUserRequest; import com.glxp.api.req.auth.UpdateUserRelBusRequset; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.service.auth.DeptService; import com.glxp.api.service.auth.InvBusUserService; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.WarehouseBussinessTypeService; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @RestController public class InvBusUserController { @Resource InvBusUserService invBusUserService; @Resource WarehouseBussinessTypeService warehouseBussinessTypeService; @AuthRuleAnnotation("") @GetMapping("spms/bus/user/select/filter") public BaseResponse filterSelectInvUser(FilterInvBusUserRequest filterInvBusUserRequest) { List responses = invBusUserService.filterInvBusUser(filterInvBusUserRequest); List warehouseBussinessTypeEntities = warehouseBussinessTypeService.getListByCode(filterInvBusUserRequest.getSubInvCode()); warehouseBussinessTypeEntities.forEach(warehouseBussinessTypeEntity -> { for (InvBusUserEntity invBusUserEntity : responses) { if (invBusUserEntity.getScAction().equals(warehouseBussinessTypeEntity.getAction())) { warehouseBussinessTypeEntity.setSelect(true); break; } } }); return ResultVOUtils.success(warehouseBussinessTypeEntities); } //查询用户未关联单据类型 @AuthRuleAnnotation("") @GetMapping("spms/bus/user/unselect/filter") public BaseResponse filterUnSelectInvUser(FilterInvBusUserRequest filterInvBusUserRequest) { List responses = invBusUserService.filterInvBusUser(filterInvBusUserRequest); List selectedCodes = new ArrayList<>(); responses.forEach(invBusUserEntity -> { selectedCodes.add(invBusUserEntity.getScAction()); }); filterInvBusUserRequest.setSelectedCodes(selectedCodes); List warehouseBussinessTypeEntityList = invBusUserService.filterUnSelect(filterInvBusUserRequest); PageInfo pageInfo = new PageInfo<>(warehouseBussinessTypeEntityList); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(warehouseBussinessTypeEntityList); return ResultVOUtils.success(pageSimpleResponse); } /** * 查询用户关联的单据类型 * * @param filterInvBusUserRequest * @return */ @AuthRuleAnnotation("") @GetMapping("spms/bus/user/filterUserBusList") public BaseResponse filterUserBusList(FilterInvBusUserRequest filterInvBusUserRequest) { List responses = invBusUserService.filterInvBusUser(filterInvBusUserRequest); PageInfo pageInfo = new PageInfo<>(responses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); if (pageInfo.getTotal() == 0) { pageSimpleResponse.setList(Collections.emptyList()); } else { List actions = responses.stream().map(InvBusUserEntity::getScAction).collect(Collectors.toList()); List warehouseBussinessTypeEntities = warehouseBussinessTypeService.selectByActions(filterInvBusUserRequest.getSubInvCode(), actions); pageSimpleResponse.setList(warehouseBussinessTypeEntities); } return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @PostMapping("/spms/bus/user/warehouse/update") @Log(title = "用户管理", businessType = BusinessType.UPDATE) public BaseResponse updateRes(@RequestBody UpdateUserRelBusRequset relBusRequset) { boolean b = invBusUserService.deleteByUnion(relBusRequset.getUserId(), relBusRequset.getSubInvCode()); if (CollUtil.isNotEmpty(relBusRequset.getInvBusUserEntities())) { relBusRequset.getInvBusUserEntities().forEach(warehouseBussinessTypeEntity -> { InvBusUserEntity invBusUserEntity = new InvBusUserEntity(); invBusUserEntity.setUserId(relBusRequset.getUserId()); invBusUserEntity.setSubInvCode(relBusRequset.getSubInvCode()); invBusUserEntity.setScAction(warehouseBussinessTypeEntity.getAction()); invBusUserService.insertInvBusUser(invBusUserEntity); }); } InvBusUserEntity invBusUserEntity = new InvBusUserEntity(); invBusUserEntity.setSubInvCode(relBusRequset.getSubInvCode()); updateInvTime(invBusUserEntity); return ResultVOUtils.success("修改成功!"); } @AuthRuleAnnotation("") @PostMapping("/spms/bus/user/warehouse/post") @Log(title = "用户管理", businessType = BusinessType.INSERT) public BaseResponse postRes(@RequestBody UpdateUserRelBusRequset relBusRequset) { invBusUserService.deleteByUnion(relBusRequset.getUserId(), relBusRequset.getSubInvCode()); if (CollUtil.isNotEmpty(relBusRequset.getSelectActions())) { relBusRequset.getSelectActions().forEach(action -> { InvBusUserEntity invBusUserEntity = new InvBusUserEntity(); invBusUserEntity.setUserId(relBusRequset.getUserId()); invBusUserEntity.setSubInvCode(relBusRequset.getSubInvCode()); invBusUserEntity.setScAction(action); invBusUserEntity.setId(IdUtil.getSnowflakeNextId()); invBusUserService.save(invBusUserEntity); }); } InvBusUserEntity invBusUserEntity = new InvBusUserEntity(); invBusUserEntity.setSubInvCode(relBusRequset.getSubInvCode()); updateInvTime(invBusUserEntity); return ResultVOUtils.success("修改成功!"); } @AuthRuleAnnotation("") @GetMapping("spms/bus/user/warehouse/filter") public BaseResponse filterInvWarehouse(FilterInvBusUserRequest filterInvBusUserRequest) { List responses = invBusUserService.filterInvBusUser(filterInvBusUserRequest); return ResultVOUtils.success(responses); } @AuthRuleAnnotation("") @PostMapping("/spms/bus/user/warehouse/save") @Log(title = "用户管理", businessType = BusinessType.INSERT) public BaseResponse save(@RequestBody @Valid InvBusUserEntity invBusUserEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } boolean b = invBusUserService.insertInvBusUser(invBusUserEntity); updateInvTime(invBusUserEntity); if (!b) { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } return ResultVOUtils.success("添加成功!"); } @AuthRuleAnnotation("") @PostMapping("/spms/bus/user/warehouse/edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) public BaseResponse edit(@RequestBody @Valid InvBusUserEntity invBusUserEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (invBusUserEntity.getId() == null) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); } boolean b = invBusUserService.updateInvBusUser(invBusUserEntity); updateInvTime(invBusUserEntity); if (!b) { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } return ResultVOUtils.success("修改成功!"); } @AuthRuleAnnotation("") @PostMapping("/spms/bus/user/warehouse/delete") @Log(title = "用户管理", businessType = BusinessType.DELETE) public BaseResponse delete(@RequestBody DeleteRequest deleteRequest) { if (deleteRequest.getId() == null) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); } boolean b = invBusUserService.deleteById(deleteRequest.getId()); if (!b) { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } return ResultVOUtils.success(); } @Resource InvWarehouseService invWarehouseService; @Resource DeptService deptService; public void updateInvTime(InvBusUserEntity invBusUserEntity) { InvWarehouseEntity invSubWarehouseEntity = invWarehouseService.findByInvSubByCode(invBusUserEntity.getSubInvCode()); DeptEntity pEntity = deptService.selectByCode(invSubWarehouseEntity.getParentId()); pEntity.setUpdateTime(new Date()); deptService.updateInvWarehouse(pEntity); } }