package com.huaheng.pc.shipment.wave.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.huaheng.common.utils.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.shipment.shipmentDetail.domain.ShipmentDetail; import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; import com.huaheng.pc.shipment.wave.domain.Wave; import com.huaheng.pc.shipment.wave.service.WaveService; import io.swagger.annotations.Api; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * 波次 * @author ricard * @date 19.8.26 * */ @Api(tags={"波次"}) @Controller @RequestMapping("/shipment/wave") public class WaveController extends BaseController { private String prefix = "shipment/wave"; @Autowired private WaveService waveService; @Autowired private ShipmentDetailService shipmentDetailService; @RequiresPermissions("shipment:wave:view") @GetMapping() public String wave() { return prefix + "/wave"; } /** * 查询波次 */ @RequiresPermissions("shipment:wave:list") @Log(title = "出库-波次", operating="查看波次", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(Wave wave, String createdBegin, String createdEnd) { LambdaQueryWrapper<Wave> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), Wave::getCreated, createdBegin) .le(StringUtils.isNotEmpty(createdEnd), Wave::getCreated, createdEnd) .eq(Wave::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(StringUtils.isNotEmpty(wave.getWaveMode() ), Wave::getWaveMode,wave.getWaveMode()) .eq(StringUtils.isNotEmpty(wave.getCreatedBy() ), Wave::getCreatedBy,wave.getCreatedBy()) .eq(wave.getStatus()!=null, Wave::getStatus,wave.getStatus()) .like(StringUtils.isNotEmpty(wave.getWaveName() ), Wave::getWaveName,wave.getWaveName()); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /** * 使用分页查询 */ Page<Wave> page = new Page<>(pageNum, pageSize); IPage<Wave> iPage = waveService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(),iPage.getTotal()); } else { List<Wave> list = waveService.list(lambdaQueryWrapper); return getDataTable(list); } } // /** // * 新增波次 // */ // @GetMapping("/add") // public String add() { // return prefix + "/add"; // } // // /** // * 新增波次 // */ // @RequiresPermissions("shipment:wave:add") // @Log(title = "出库-波次", operating = "新增波次", action = BusinessType.INSERT) // @PostMapping("/add") // @ResponseBody // public AjaxResult addSave(Wave wave){ // wave.setWarehouseCode(ShiroUtils.getWarehouseCode()); // wave.setCreatedBy(ShiroUtils.getLoginName()); // wave.setLastUpdatedBy(ShiroUtils.getLoginName()); // return toAjax(waveService.save(wave)); // } // /** // * 修改波次 // */ // @GetMapping("/edit/{id}") // public String edit(@PathVariable("id") Integer id, ModelMap mmap) { // mmap.put("wave", waveService.getById(id)); // return prefix + "/edit"; // } // // /** // * 修改波次 // */ // @RequiresPermissions("shipment:wave:edit") // @Log(title = "出库-波次", operating = "修改波次", action = BusinessType.UPDATE) // @PostMapping("/edit") // @ResponseBody // public AjaxResult editSave(Wave wave) { // wave.setLastUpdatedBy(ShiroUtils.getLoginName()); // return toAjax(waveService.updateById(wave)); // } /** * 删除波次 */ @RequiresPermissions("shipment:wave:remove") @Log(title = "出库-波次", operating = "删除波次", action = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } List<Integer> list = new ArrayList<>(); for (Integer id : Convert.toIntArray(ids)) { LambdaQueryWrapper<ShipmentDetail> lam=Wrappers.lambdaQuery(); lam.eq(ShipmentDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(ShipmentDetail::getWaveId,id); List<ShipmentDetail> shipmentDetails=shipmentDetailService.list(lam); if(shipmentDetails !=null || shipmentDetails.size()>0){ return AjaxResult.error("id为"+ id +"的波次不能删除,有单据处于此波次中"); } list.add(id); } return toAjax(waveService.removeByIds(list)); } /** * 开始波次 */ @RequiresPermissions("shipment:wave:startWave") @Log(title = "出库-波次", operating = "开始波次", action = BusinessType.UPDATE) @PostMapping("/startWave") @ResponseBody public AjaxResult starWave(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } AjaxResult result=waveService.startWave(ids); return result; } /** * 剔除单据 */ @RequiresPermissions("shipment:wave:cullWave") @Log(title = "出库-波次", operating = "剔除单据", action = BusinessType.UPDATE) @PostMapping("/cullWave") @ResponseBody public AjaxResult cullWave(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } AjaxResult result=waveService.cullWave(ids); return result; } /** * 波次完成 */ @RequiresPermissions("shipment:wave:endWave") @Log(title = "出库-波次", operating = "波次完成", action = BusinessType.UPDATE) @PostMapping("/endWave") @ResponseBody public AjaxResult endWave(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } AjaxResult result=waveService.endWave(ids); return result; } /** * 释放 */ @RequiresPermissions("shipment:wave:freed") @Log(title = "出库-波次", operating = "波次释放", action = BusinessType.UPDATE) @PostMapping("/freed") @ResponseBody public AjaxResult freed(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } AjaxResult result=waveService.freed(ids); return result; } }