package com.huaheng.pc.shipment.shipmentHeader.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.exception.service.ServiceException; 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.shipment.shipmentDetail.domain.ShipmentDetail; import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import java.lang.reflect.InvocationTargetException; import java.util.List; /** * 出库单主 信息操作处理 * * @author huaheng * @date 2018-08-19 */ @Controller @RequestMapping("/shipment/shipmentHeader") public class ShipmentHeaderController extends BaseController { private String prefix = "shipment/shipmentHeader"; @Autowired private ShipmentHeaderService shipmentHeaderService; @Autowired private ShipmentDetailService shipmentDetailService; @RequiresPermissions("shipment:bill:view") @GetMapping() public String shipmentHeader() { return prefix + "/shipmentHeader"; } /** * 查询出库单主列表 */ @RequiresPermissions("shipment:bill:list") @Log(title = "出库-出库单", operating="查看出库主单", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(ShipmentHeader shipmentHeader,String createdBegin, String createdEnd) { LambdaQueryWrapper<ShipmentHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ShipmentHeader::getCreated, createdBegin) .le(StringUtils.isNotEmpty(createdEnd), ShipmentHeader::getCreated, createdEnd) .eq(ShipmentHeader::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(ShipmentHeader::getDeleted,false) .in(ShipmentHeader::getCompanyCode,ShiroUtils.getCompanyCodeList()) .eq(StringUtils.isNotEmpty(shipmentHeader.getCode()),ShipmentHeader::getCode,shipmentHeader.getCode()) .eq(StringUtils.isNotEmpty(shipmentHeader.getShipmentType()),ShipmentHeader::getShipmentType,shipmentHeader.getShipmentType()) .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCode()), ShipmentHeader::getReferCode, shipmentHeader.getReferCode()) .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCodeType()), ShipmentHeader::getReferCodeType, shipmentHeader.getReferCodeType()) .eq(shipmentHeader.getFirstStatus()!=null, ShipmentHeader::getFirstStatus, shipmentHeader.getFirstStatus()) .eq(shipmentHeader.getLastStatus()!=null, ShipmentHeader::getLastStatus, shipmentHeader.getLastStatus()) .orderByDesc(ShipmentHeader::getId); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /** * 使用分页查询 */ Page<ShipmentHeader> page = new Page<>(pageNum, pageSize); IPage<ShipmentHeader> iPage = shipmentHeaderService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(),iPage.getTotal()); } else { List<ShipmentHeader> list = shipmentHeaderService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增出库单主 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存出库单主 */ @RequiresPermissions("shipment:bill:add") @Log(title = "出库-出库单", operating="新增出库主单", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(ShipmentHeader shipmentHeader) { AjaxResult ajaxResult=shipmentHeaderService.saveHeader(shipmentHeader); return ajaxResult; } /** * 修改出库单主 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { ShipmentHeader shipmentHeader = shipmentHeaderService.getById(id); mmap.put("shipmentHeader", shipmentHeader); return prefix + "/edit"; } /** * 修改保存出库单主 */ @RequiresPermissions("shipment:bill:edit") @Log(title = "出库-出库单", operating="修改出库主单", action = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(ShipmentHeader shipmentHeader) { ShipmentHeader temp = shipmentHeaderService.getById(shipmentHeader.getId()); if(temp.getFirstStatus()>100){ return AjaxResult.error("已经超过订单池状态,不能修改"); } temp.setCompanyCode(shipmentHeader.getCompanyCode()); temp.setReferCode(shipmentHeader.getReferCode()); temp.setReferPlatform(shipmentHeader.getReferPlatform()); temp.setCustomerCode(shipmentHeader.getCustomerCode()); temp.setPriority(shipmentHeader.getPriority()); temp.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(shipmentHeaderService.saveOrUpdate(temp)); } /** * 删除出库单主 */ @RequiresPermissions("shipment:bill:remove") @Log(title = "出库-出库单", operating="删除出库主单", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody @Transactional public AjaxResult remove(String ids) throws InvocationTargetException, IllegalAccessException { if (StringUtils.isEmpty(ids)) return AjaxResult.error("id不能为空"); for (Integer id : Convert.toIntArray(ids)) { ShipmentHeader shipmentHeader=shipmentHeaderService.getById(id); //出库单设定为历史出库单,并删除出库单 shipmentHeaderService.addHistory(shipmentHeader); shipmentHeader.setDeleted(true); boolean result=shipmentHeaderService.removeById(id); if(result==false){ throw new ServiceException("删除失败"); } LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper=Wrappers.lambdaQuery(); shipmentDetailLambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode,shipmentHeader.getCode()) .eq(ShipmentDetail::getWarehouseCode,shipmentHeader.getWarehouseCode()); shipmentDetailService.remove(shipmentDetailLambdaQueryWrapper); } return AjaxResult.success("删除成功!"); } /** * 出库单报表打印 * @return */ @RequiresPermissions("shipment:bill:report") @Log(title = "出库-出库单", operating="打印出库单报表", action = BusinessType.OTHER) @GetMapping("/report/{id}") public String report(@PathVariable("id") Integer id, ModelMap mmap) { ShipmentHeader shipmentHeader = shipmentHeaderService.getById(id); mmap.put("shipmentHeader", shipmentHeader); LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ShipmentDetail::getShipmentId,id) .eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); List<ShipmentDetail> details = shipmentDetailService.list(lambdaQueryWrapper); mmap.put("details", details); return prefix + "/report"; } @PostMapping("/getShipmentHeader") @ResponseBody public AjaxResult<ShipmentHeader> getShipmentHeader(int id){ return AjaxResult.success(shipmentHeaderService.getById(id)); } }