SRMHeaderController.java 16.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.DateUtils;
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 com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
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,String createdBegin,String createdEnd)
    {
        if(StringUtils.isAllEmpty(srmHeader.getCode(),srmHeader.getUserDef2(),srmHeader.getSupplierCode(),srmHeader.getMaterialCode())){
            startPage();
        }
        List<SrmHeader> list = srmHeaderService.selectListAndTime(srmHeader,createdBegin,createdEnd) ;
        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(new ArrayList<>());
            }
        }
        return getDataTable(list);
    }

    @RequiresPermissions("srm:srmHeader:list")
    @Log(title = "已到待检", operating="已到待检", action = BusinessType.GRANT)
    @PostMapping("/yiDaoDaiJianList")
    @ResponseBody
    public TableDataInfo songHuoDaiJianList(SrmHeader srmHeader,String createdBegin,String createdEnd)
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
//        createdBegin= DateUtils.getNowPreDays("yyyy-MM-dd HH:mm:ss", 180);
//        createdEnd=DateUtils.getNowPreDays("yyyy-MM-dd HH:mm:ss", 0);
        startPage();
//        srmHeader.setUploadStatus(1);
        srmHeader.setEnable(1);
        List<SrmHeader> list = srmHeaderService.selectDaijianListAndTime(srmHeader,createdBegin,createdEnd) ;
        return getDataTable(list);
//        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(new ArrayList<>());
//            }
//        }
//        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(new ArrayList<>());
//        }
//        if(list.size()>1){
//            return getMpDataTable(list.subList(pageSize*(pageNum-1),pageSize*pageNum),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,String createdBegin,String createdEnd)
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        createdBegin= DateUtils.getNowPreDays("yyyy-MM-dd HH:mm:ss", 180);
        createdEnd=DateUtils.getNowPreDays("yyyy-MM-dd HH:mm:ss", 0);
        List<SrmHeader> list = srmHeaderService.selectListAndTime(srmHeader,createdBegin,createdEnd) ;
        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);
        lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), SrmDetail::getCreated, createdBegin)
                .lt(StringUtils.isNotEmpty(createdEnd), SrmDetail::getCreated, createdEnd);
        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()>1){
                int startnum=pageSize*(pageNum-1);
                int endnum=pageNum*pageSize;
                if(endnum>srmHeaders.size()){
                    endnum=srmHeaders.size();
                }
                return getMpDataTable(srmHeaders.subList(startnum,endnum),Long.valueOf(srmHeaders.size()));
            }
            return getDataTable(srmHeaders);
        }
        return getDataTable(new ArrayList<>());
    }

    @RequiresPermissions("srm:srmHeader:list")
    @Log(title = "已到不合格", operating="已到不合格", action = BusinessType.GRANT)
    @PostMapping("/yiDaoBuHeGeList")
    @ResponseBody
    public TableDataInfo yiDaoBuHeGeList(SrmHeader srmHeader,String createdBegin,String createdEnd)
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        createdBegin= DateUtils.getNowPreDays("yyyy-MM-dd HH:mm:ss", 180);
        createdEnd=DateUtils.getNowPreDays("yyyy-MM-dd HH:mm:ss", 0);
        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);
        lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), SrmDetail::getCreated, createdBegin)
                .lt(StringUtils.isNotEmpty(createdEnd), SrmDetail::getCreated, createdEnd);
        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()>1){
//                return getMpDataTable(srmHeaders.subList(50*pageNum-50,pageNum*50-1),Long.valueOf(srmHeaders.size()));
                int startnum=pageSize*(pageNum-1);
                int endnum=pageNum*pageSize;
                if(endnum>srmHeaders.size()){
                    endnum=srmHeaders.size();
                }
                return getMpDataTable(srmHeaders.subList(startnum,endnum),Long.valueOf(srmHeaders.size()));
            }
            return getDataTable(srmHeaders);
        }
        return getDataTable(new ArrayList<>());
    }




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

    /**
     * 删除送货单
     */
    @ApiOperation(value = "删除送货单", notes = "删除送货单", httpMethod = "POST")
    @RequiresPermissions("srm:srmHeader:remove")
    @Log(title = "送货单-已到待检 ", operating = "删除送货单", action = BusinessType.UPDATE)
    @PostMapping("/remove")
    @ResponseBody
    public AjaxResult remove(@ApiParam(name = "id", value = "入库头表id字符串") String ids) {
        if (StringUtils.isNull(ids)) {
            return AjaxResult.error("id为空");
        }
        String[] strlist=ids.split(",");
        for (String str:strlist){
            Integer id=Integer.valueOf(str);
            AjaxResult ajaxResult= srmHeaderService.deleteHeaderHistory(id);
        }
        return AjaxResult.success("删除成功!");
    }
}