package com.huaheng.pc.srm.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.Wrappers; 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.material.domain.Material; import com.huaheng.pc.config.material.service.MaterialService; import com.huaheng.pc.config.warehouse.domain.WarehouseU8; import com.huaheng.pc.config.warehouse.service.WarehouseU8Service; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.srm.domain.SrmDetail; import com.huaheng.pc.srm.domain.SrmHeader; import com.huaheng.pc.srm.service.SrmDetailService; import com.huaheng.pc.srm.service.SrmHeaderService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Controller @RequestMapping("/srm/srmHeader") public class SRMHeaderController extends BaseController { private String prefix = "srm/srmHeader"; @RequiresPermissions("srm:srmHeader:view") @GetMapping() public String srmHeader() { return prefix + "/srmHeader"; } //已到待检 @RequiresPermissions("srm:srmHeader:view") @GetMapping("/yiDaoDaiJian") public String srmHeaderYidaodaijian() { return prefix + "/yiDaoDaiJian"; } //已到合格 @RequiresPermissions("srm:srmHeader:view") @GetMapping("/yiDaoHeGe") public String srmHeaderYidaohege() { return prefix + "/yiDaoHeGe"; } //已到不合格 @RequiresPermissions("srm:srmHeader:view") @GetMapping("/yiDaoBuHeGe") public String srmHeaderYidaobuhege() { return prefix + "/yiDaoBuHeGe"; } @Resource private SrmHeaderService srmHeaderService; @Resource private SrmDetailService srmDetailService; @Resource private WarehouseU8Service warehouseU8Service; @Resource private MaterialService materialService; /** * 查询已到送货单单主列表 */ @RequiresPermissions("srm:srmHeader:list") @Log(title = "送货单-送货单", operating="查看送货单主单", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(SrmHeader srmHeader) { if(StringUtils.isAllEmpty(srmHeader.getCode(),srmHeader.getUserDef2(),srmHeader.getSupplierCode(),srmHeader.getMaterialCode())){ startPage(); } List<SrmHeader> list = srmHeaderService.selectList(srmHeader) ; if(StringUtils.isNotEmpty(srmHeader.getMaterialCode())){ Material material = materialService.getMaterialByCode(srmHeader.getMaterialCode(), ShiroUtils.getWarehouseCode()); if(material == null){ throw new ServiceException("物料编码不存在"); } LambdaQueryWrapper<SrmDetail> lambdaQueryWrapper= Wrappers.lambdaQuery(); lambdaQueryWrapper.like(StringUtils.isNotEmpty(srmHeader.getCode()),SrmDetail::getCode,srmHeader.getCode()); lambdaQueryWrapper.eq(SrmDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); lambdaQueryWrapper.eq(StringUtils.isNotEmpty(srmHeader.getMaterialCode()),SrmDetail::getMaterialCode,srmHeader.getMaterialCode()); List<SrmDetail> srmDetailList = srmDetailService.list(lambdaQueryWrapper); if(CollectionUtils.isNotEmpty(srmDetailList)){ List<String> codes = srmDetailList.stream().map(s -> s.getCode()).collect(Collectors.toList()); List<String> collect = codes.stream().distinct().collect(Collectors.toList()); List<SrmHeader> srmHeaders = list.stream().filter(l -> collect.contains(l.getCode())).collect(Collectors.toList()); return getDataTable(srmHeaders); }else { return getDataTable(null); } } return getDataTable(list); } @RequiresPermissions("srm:srmHeader:list") @Log(title = "已到待检", operating="已到待检", action = BusinessType.GRANT) @PostMapping("/yiDaoDaiJianList") @ResponseBody public TableDataInfo songHuoDaiJianList(SrmHeader srmHeader) { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); List<SrmHeader> list = srmHeaderService.selectList(srmHeader) ; if(StringUtils.isNotEmpty(srmHeader.getMaterialCode())){ Material material = materialService.getMaterialByCode(srmHeader.getMaterialCode(), ShiroUtils.getWarehouseCode()); if(material == null){ throw new ServiceException("物料编码不存在"); } LambdaQueryWrapper<SrmDetail> lambdaQueryWrapper= Wrappers.lambdaQuery(); lambdaQueryWrapper.like(StringUtils.isNotEmpty(srmHeader.getCode()),SrmDetail::getCode,srmHeader.getCode()); lambdaQueryWrapper.eq(SrmDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); lambdaQueryWrapper.eq(StringUtils.isNotEmpty(srmHeader.getMaterialCode()),SrmDetail::getMaterialCode,srmHeader.getMaterialCode()); List<SrmDetail> srmDetailList = srmDetailService.list(lambdaQueryWrapper); if(CollectionUtils.isNotEmpty(srmDetailList)){ List<String> codes = srmDetailList.stream().map(s -> s.getCode()).collect(Collectors.toList()); List<String> collect = codes.stream().distinct().collect(Collectors.toList()); List<SrmHeader> srmHeaders = list.stream().filter(l -> collect.contains(l.getCode())).collect(Collectors.toList()); srmHeaders = srmHeaders.stream().filter(l -> (l.getEnable().equals(1)||l.getEnable().equals(2))&&(l.getCheckCode().equals(0)||l.getCheckCode().equals(1)) ).collect(Collectors.toList()); return getDataTable(srmHeaders); }else { return getDataTable(null); } } list = list.stream().filter(l ->(l.getEnable().equals(1)||l.getEnable().equals(2))&&(l.getCheckCode().equals(0)||l.getCheckCode().equals(1))).collect(Collectors.toList()); if(CollectionUtils.isEmpty(list)){ return getDataTable(null); } if(list.size()>49){ return getMpDataTable(list.subList(50*pageNum-50,pageNum*50-1),Long.valueOf(list.size())); } return getDataTable(list); } @RequiresPermissions("srm:srmHeader:list") @Log(title = "已到合格", operating="已到合格", action = BusinessType.GRANT) @PostMapping("/yiDaoHeGeList") @ResponseBody public TableDataInfo yiDaoHeGeList(SrmHeader srmHeader) { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); List<SrmHeader> list = srmHeaderService.selectList(srmHeader) ; if(StringUtils.isNotEmpty(srmHeader.getMaterialCode())){ Material material = materialService.getMaterialByCode(srmHeader.getMaterialCode(), ShiroUtils.getWarehouseCode()); if(material == null){ throw new ServiceException("物料编码不存在"); } } LambdaQueryWrapper<SrmDetail> lambdaQueryWrapper= Wrappers.lambdaQuery(); lambdaQueryWrapper.like(StringUtils.isNotEmpty(srmHeader.getCode()),SrmDetail::getCode,srmHeader.getCode()); lambdaQueryWrapper.eq(SrmDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); lambdaQueryWrapper.eq(StringUtils.isNotEmpty(srmHeader.getMaterialCode()),SrmDetail::getMaterialCode,srmHeader.getMaterialCode()); lambdaQueryWrapper.gt(SrmDetail::getQualifiedQty,0); List<SrmDetail> srmDetailList = srmDetailService.list(lambdaQueryWrapper); if(CollectionUtils.isNotEmpty(srmDetailList)){ List<String> codes = srmDetailList.stream().map(s -> s.getCode()).collect(Collectors.toList()); List<String> collect = codes.stream().distinct().collect(Collectors.toList()); List<SrmHeader> srmHeaders = list.stream().filter(l -> collect.contains(l.getCode())).collect(Collectors.toList()); srmHeaders = srmHeaders.stream().filter(l -> (l.getEnable().equals(1)||l.getEnable().equals(2))&&(l.getCheckCode().equals(1)||l.getCheckCode().equals(2)) ).collect(Collectors.toList()); if(srmHeaders.size()>49){ return getMpDataTable(srmHeaders.subList(50*pageNum-50,pageNum*50-1),Long.valueOf(srmHeaders.size())); } return getDataTable(srmHeaders); } return getDataTable(null); } @RequiresPermissions("srm:srmHeader:list") @Log(title = "已到不合格", operating="已到不合格", action = BusinessType.GRANT) @PostMapping("/yiDaoBuHeGeList") @ResponseBody public TableDataInfo yiDaoBuHeGeList(SrmHeader srmHeader) { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); List<SrmHeader> list = srmHeaderService.selectList(srmHeader) ; if(StringUtils.isNotEmpty(srmHeader.getMaterialCode())){ Material material = materialService.getMaterialByCode(srmHeader.getMaterialCode(), ShiroUtils.getWarehouseCode()); if(material == null){ throw new ServiceException("物料编码不存在"); } } LambdaQueryWrapper<SrmDetail> lambdaQueryWrapper= Wrappers.lambdaQuery(); lambdaQueryWrapper.like(StringUtils.isNotEmpty(srmHeader.getCode()),SrmDetail::getCode,srmHeader.getCode()); lambdaQueryWrapper.eq(SrmDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); lambdaQueryWrapper.eq(StringUtils.isNotEmpty(srmHeader.getMaterialCode()),SrmDetail::getMaterialCode,srmHeader.getMaterialCode()); lambdaQueryWrapper.gt(SrmDetail::getUnqualifiedQty,0); List<SrmDetail> srmDetailList = srmDetailService.list(lambdaQueryWrapper); if(CollectionUtils.isNotEmpty(srmDetailList)){ List<String> codes = srmDetailList.stream().map(s -> s.getCode()).collect(Collectors.toList()); List<String> collect = codes.stream().distinct().collect(Collectors.toList()); List<SrmHeader> srmHeaders = list.stream().filter(l -> collect.contains(l.getCode())).collect(Collectors.toList()); srmHeaders = srmHeaders.stream().filter(l -> (l.getEnable().equals(1)||l.getEnable().equals(2))&&(l.getCheckCode().equals(1)||l.getCheckCode().equals(2)) ).collect(Collectors.toList()); if(srmHeaders.size()>49){ return getMpDataTable(srmHeaders.subList(50*pageNum-50,pageNum*50-1),Long.valueOf(srmHeaders.size())); } return getDataTable(srmHeaders); } return getDataTable(null); } /** * 扫描送货单 */ @GetMapping("/getSrm") public String getSrm(){ return prefix+"/getSrm"; } /** * 扫描送货单获取信息 * @param * @return */ @RequiresPermissions("srm:srmHeader:list") @PostMapping("/review") @Log(title = "送货单-送货单", operating = "扫描送货单", action = BusinessType.INSERT) @ResponseBody public AjaxResult review(String lineCode){ return srmDetailService.review(lineCode); } /** * 扫描送货单提交信息 * @param * @return */ @RequiresPermissions("srm:srmHeader:getSrm") @PostMapping("/getSrm") @Log(title = "送货单-送货单", operating = "扫描送货单", action = BusinessType.INSERT) @ResponseBody public AjaxResult getSrm(SrmDetail srmDetail){ List<SrmDetail> srmDetailList = new ArrayList<>(); if(srmDetail == null){ return AjaxResult.error("空数据,请提交有效数据"); } if(srmDetail.getId() == null){ return AjaxResult.error("物料数据为空"); } srmDetailList.add(srmDetail); return srmDetailService.reviewSrmModel(srmDetailList); } @PostMapping("/getwarehouse") @ResponseBody public TableDataInfo WarehouseList(String code) { WarehouseU8 warehouseWu = new WarehouseU8(); warehouseWu.setWarehouseCode(ShiroUtils.getWarehouseCode()); if (!code.equals("")) { warehouseWu.setUCompanyCode(code); } List<WarehouseU8> list = warehouseU8Service.getByDomain(warehouseWu); return getDataTable(list); } @PostMapping("/getwarehouseForPda") @ResponseBody public AjaxResult WarehouseListForPda(String code) { WarehouseU8 warehouseWu = new WarehouseU8(); warehouseWu.setWarehouseCode(ShiroUtils.getWarehouseCode()); if (!code.equals("")) { warehouseWu.setUCompanyCode(code); } List<WarehouseU8> list = warehouseU8Service.getByDomain(warehouseWu); return AjaxResult.success(list); } }