package com.huaheng.pc.config.customer.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.config.customer.domain.Customer; import com.huaheng.pc.config.customer.service.CustomerServiceImpl; import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; import java.util.Map; @Api(tags={"客户操作类"}) @Controller @RequestMapping("/config/customer") public class CustomerController extends BaseController { private String prefix = "config/customer"; @Resource private CustomerServiceImpl customerService; @Resource private ShipmentHeaderService shipmentHeaderService; @RequiresPermissions("config:customer:view") @GetMapping() public String customer(){ return prefix + "/customer"; } /** * 查询客户列表 */ @ApiOperation(value="查看客户列表", notes="根据编码、名称、创建时间获取客户的详细信息", httpMethod = "POST") @RequiresPermissions("config:customer:list") @Log(title = "通用-客户管理",operating = "查看客户信息", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(@ApiParam(name="customer",value="编码、名称") Customer customer, @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd){ LambdaQueryWrapper<Customer> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize() >> 1; lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Customer::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Customer::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(customer.getCode()), Customer::getCode, customer.getCode()) .eq(StringUtils.isNotEmpty(customer.getName()), Customer::getName, customer.getName()) .eq(Customer::getDeleted, false) .eq(Customer::getWarehouseCode, ShiroUtils.getWarehouseCode()) .orderByDesc(Customer::getCreated); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<Customer> page = new Page<>(pageNum, pageSize); IPage<Customer> iPage = customerService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<Customer> list = customerService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增客户 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存客户 */ @ApiOperation(value="新增客户", notes="新增客户", httpMethod = "POST") @RequiresPermissions("config:customer:add") @Log(title = "通用-客户管理",operating = "新增客户", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(Customer customer) { customer.setWarehouseCode(ShiroUtils.getWarehouseCode()); customer.setCreatedBy(ShiroUtils.getLoginName()); customer.setLastUpdatedBy(ShiroUtils.getLoginName()); customer.setDeleted(false); return toAjax(customerService.save(customer)); } /** * 修改客户 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { Customer customer = customerService.getById(id); mmap.put("customer", customer); return prefix + "/edit"; } /** * 修改保存客户 */ @ApiOperation(value="修改客户信息", notes="修改客户信息", httpMethod = "POST") @RequiresPermissions("config:customer:edit") @Log(title = "通用-客户管理",operating = "修改客户信息", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(Customer customer) { customer.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(customerService.updateById(customer)); } /** * 删除客户 */ @ApiOperation(value="删除客户信息", notes="单条删除或批量删除客户信息,示例1或1,2,3", httpMethod = "POST") @RequiresPermissions("config:customer:remove") @Log(title = "通用-客户管理",operating = "修改客户", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { if (StringUtils.isEmpty(ids)) { return AjaxResult.error("id不能为空"); } for (Integer id : Convert.toIntArray(ids)) { Customer customer = customerService.getById(id); ShipmentHeader shipmentHeader = new ShipmentHeader(); shipmentHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); shipmentHeader.setCustomerCode(customer.getCode()); shipmentHeader.setDeleted(false); LambdaQueryWrapper<ShipmentHeader> lambda = Wrappers.lambdaQuery(shipmentHeader); Map<String, Object> map = shipmentHeaderService.getMap(lambda); if (map != null) { return AjaxResult.error("客户编码(" + customer.getCode() +")存在出库单,不能删除!"); } customer.setDeleted(true); customer.setLastUpdatedBy(ShiroUtils.getLoginName()); customerService.updateById(customer); } return AjaxResult.success("删除成功!"); } }