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


    @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);
            }
        }
        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);
    }
}