SRMHeaderController.java 11.7 KB
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";
    }


    @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.eq(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 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.eq(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 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 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.eq(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(1)||l.getCheckCode().equals(2))
                ).collect(Collectors.toList());
                return getDataTable(srmHeaders);
            }else {
                return null;
            }
        }
        list = list.stream().filter(l ->(l.getEnable().equals(1)||l.getEnable().equals(2))&&(l.getCheckCode().equals(1)||l.getCheckCode().equals(2))).collect(Collectors.toList());
        if(CollectionUtils.isEmpty(list)){
            return null;
        }
        if(list.size()>49){
            return getMpDataTable(list.subList(50*pageNum-50,pageNum*50-1),Long.valueOf(list.size()));
        }
        return getDataTable(list);
    }



    /**
     * 扫描送货单
     */
    @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);
    }
}