无关风月
2024-09-03 56dfe0d4bf81262622a1919cceb2b039fd356209
ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/SlVolumeProductionRkglServiceImpl.java
@@ -1,27 +1,35 @@
package com.ruoyi.management.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.management.domain.SlGoodsShelf;
import com.ruoyi.management.domain.SlStoreManagement;
import com.ruoyi.management.domain.SlVolumeProductionRkgl;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.management.domain.*;
import com.ruoyi.management.domain.dto.SupplierVolumeProductionRkglQuery;
import com.ruoyi.management.domain.vo.SlGoodsShelfVO;
import com.ruoyi.management.domain.dto.VolumeProductionRkglDTO;
import com.ruoyi.management.domain.vo.ManagementimgVolumeProductionRkVO;
import com.ruoyi.management.domain.vo.SupplierVolumeProductionRkglVO;
import com.ruoyi.management.domain.vo.VolumeProductionRkgInfoVO;
import com.ruoyi.management.mapper.SlStoreManagementMapper;
import com.ruoyi.management.mapper.SlVolumeProductionRkglMapper;
import com.ruoyi.management.domain.vo.VolumeProductionRkgInventoryVO;
import com.ruoyi.management.mapper.*;
import com.ruoyi.management.service.SlVolumeProductionRkglService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.getVolumeProductionRkQuery;
import com.ruoyi.system.api.feignClient.LogClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import javax.xml.crypto.Data;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -41,11 +49,26 @@
    @Resource
    private SlStoreManagementMapper slStoreManagementMapper;
    @Resource
    private SlVolumeProductionRkMapper slVolumeProductionRkMapper;
    @Resource
    private SlGoodsMaterialsMapper slGoodsMaterialsMapper;
    @Resource
    private SlGoodsShelfMapper slGoodsShelfMapper;
    @Resource
    private  ManagementGoodsMaterialsMapper managementGoodsMaterialsMapper;
    @Resource
    private LogClient logClient;
    @Override
    public PageDTO<SupplierVolumeProductionRkglVO> getSupplierVolumeProductionRkglList(SupplierVolumeProductionRkglQuery supplierVolumeProductionRkglQuery) {
        Page<SlVolumeProductionRkgl> page = new Page<>(supplierVolumeProductionRkglQuery.getPageCurr(), supplierVolumeProductionRkglQuery.getPageSize());
        LambdaQueryWrapper< SlVolumeProductionRkgl> wrapper1= Wrappers.lambdaQuery();
        wrapper1.like(SlVolumeProductionRkgl::getSupplierId,supplierVolumeProductionRkglQuery.getSupplierId());
        wrapper1.eq(SlVolumeProductionRkgl::getSupplierId,supplierVolumeProductionRkglQuery.getSupplierId());
        wrapper1.eq( SlVolumeProductionRkgl::getDelFlag,0);
        wrapper1.orderByDesc(SlVolumeProductionRkgl::getCreateTime);
        Page<SlVolumeProductionRkgl> page2 = this.page(page, wrapper1);
@@ -63,15 +86,307 @@
    }
    @Override
    public VolumeProductionRkgInfoVO getVolumeProductionRkgInfo(Integer id) {
    public VolumeProductionRkgInfoVO getVolumeProductionRkgInfo(Long id) {
        SlVolumeProductionRkgl byId = this.getById(id);
        // 根据仓库id 查询仓库管理员
        VolumeProductionRkgInfoVO v=BeanUtils.copyBean(byId, VolumeProductionRkgInfoVO.class);
        SlStoreManagement slStoreManagement = slStoreManagementMapper.selectById(byId.getManagementId());
        v.setZhuren(slStoreManagement.getDirectorId());
        v.setZhuguan(slStoreManagement.getCompetentId());
        v.setGuanliyuan(slStoreManagement.getAdministratorId());
        v.setStoreManagementName(slStoreManagement.getStoreManagementName());
        SysUser data = sysUserClient.getSysUser(Long.valueOf(byId.getSupplierId())).getData();
        v.setSupplierName(data.getNickName());
        SysUser data1 = sysUserClient.getSysUser(Long.valueOf(byId.getSysId())).getData();
        v.setSysName(data1.getNickName());
        if (byId.getSupplierId()!=null){
            SysUser data = sysUserClient.getSysUser(Long.valueOf(byId.getSupplierId())).getData();
            if (data!=null){
                v.setSupplierName(data.getNickName());
                v.setSupplierPhone(data.getPhonenumber());
            }
        }
        v.setSupplierId(byId.getSupplierId());
        if (byId.getSysId()!=null){
            SysUser data1 = sysUserClient.getSysUser(Long.valueOf(byId.getSysId())).getData();
            if (data1!=null){
                v.setSysName(data1.getNickName());
                v.setSysPhone(data1.getPhonenumber());
            }
        }
        v.setAuthorization(byId.getAuthorizationUrl());
        v.setReason(byId.getReasonsRefusal());
        return v;
    }
    @Autowired
    private TokenService tokenService;
    @Override
    public PageDTO<SupplierVolumeProductionRkglVO> getslVolumeProductionRkglList(getVolumeProductionRkQuery getVolumeProductionRkQuery) {
        Page<SlVolumeProductionRkgl> page = new Page<>(getVolumeProductionRkQuery.getPageCurr(), getVolumeProductionRkQuery.getPageSize());
        List<SysUser> data1 = sysUserClient.getUserSupplierList(getVolumeProductionRkQuery).getData();
        Set<Long> goodsSkuIdList = null;
        List<Long> managementIds = new ArrayList<>();
        goodsSkuIdList = data1.stream().map(SysUser::getUserId)
                .collect(Collectors.toSet());
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser data2 = sysUserClient.getSysUser(userid).getData();
        LambdaQueryWrapper< SlVolumeProductionRkgl> wrapper1= Wrappers.lambdaQuery();
        QueryWrapper<SlStoreManagement> storeManagementGrade = new QueryWrapper<SlStoreManagement>()
                .eq("del_flag", "0");
        if (data2!=null){
            if (!data2.getUserType().equals("00")){
                // 仓库管理员 根据仓库管理员的等级查询对应的仓库
                switch (data2.getRoleType()){
                    case 3:
                        storeManagementGrade.ge("store_management_grade",3);
                        storeManagementGrade.eq("city_code",data2.getCityCode());
                        managementIds = slStoreManagementMapper.selectList(storeManagementGrade).stream()
                                .map(SlStoreManagement::getId).collect(Collectors.toList());
                        break;
                    case 4:
                        storeManagementGrade.ge("store_management_grade",4);
                        storeManagementGrade.eq("county_code",data2.getCountyCode());
                        managementIds = slStoreManagementMapper.selectList(storeManagementGrade).stream()
                                .map(SlStoreManagement::getId).collect(Collectors.toList());
                        break;
                    case 5:
                        storeManagementGrade.ge("store_management_grade",5);
                        storeManagementGrade.eq("town_code",data2.getTownCode());
                        managementIds = slStoreManagementMapper.selectList(storeManagementGrade).stream()
                                .map(SlStoreManagement::getId).collect(Collectors.toList());
                        break;
                    case 6:
                        storeManagementGrade.eq("store_management_grade",6);
                        storeManagementGrade.eq("town_code",data2.getTownCode());
                        managementIds = slStoreManagementMapper.selectList(storeManagementGrade).stream()
                                .map(SlStoreManagement::getId).collect(Collectors.toList());
                        break;
                }
            }
        }
        if (!managementIds.isEmpty()){
            wrapper1.in(SlVolumeProductionRkgl::getManagementId,managementIds);
        }
        if (getVolumeProductionRkQuery.getPresentState()!=null && getVolumeProductionRkQuery.getPresentState()!=0){
            wrapper1.eq(SlVolumeProductionRkgl::getPresentState,getVolumeProductionRkQuery.getPresentState());
        }
        if (getVolumeProductionRkQuery.getAuditStatus()!=null && getVolumeProductionRkQuery.getAuditStatus()!=0) {
            wrapper1.eq(SlVolumeProductionRkgl::getAuditStatus, getVolumeProductionRkQuery.getAuditStatus());
        }
        if (goodsSkuIdList.size()>0){
            wrapper1.in(SlVolumeProductionRkgl::getSysId,goodsSkuIdList);
        }else{
            goodsSkuIdList=new HashSet<>();
            goodsSkuIdList.add(0l);
            wrapper1.in(SlVolumeProductionRkgl::getSysId,goodsSkuIdList);
        }
        wrapper1.eq( SlVolumeProductionRkgl::getDelFlag,0);
        wrapper1.orderByDesc(SlVolumeProductionRkgl::getStartiTime);
        Page<SlVolumeProductionRkgl> page2 = this.page(page, wrapper1);
        PageDTO<SupplierVolumeProductionRkglVO> SlGoodsShelfDTO = PageDTO.of(page2, SupplierVolumeProductionRkglVO.class);
        List<SupplierVolumeProductionRkglVO> list2 = SlGoodsShelfDTO.getList();
        for(SupplierVolumeProductionRkglVO list:list2){
            SysUser data = sysUserClient.getSysUser(list.getSysId()).getData();
            list.setNickName(data.getNickName());
            list.setPhonenumber(data.getPhonenumber());
            SlStoreManagement slStoreManagement = slStoreManagementMapper.selectById(list.getManagementId());
            if (slStoreManagement!=null){
                list.setStoreManagementName(slStoreManagement.getStoreManagementName());
            }
        }
        return SlGoodsShelfDTO;
    }
    @Override
    public Long addVolumeProductionRkgl(VolumeProductionRkglDTO volumeProductionRkglDTO) {
        SlStoreManagement slStoreManagement = slStoreManagementMapper.selectById(volumeProductionRkglDTO.getManagementId());
        String directorId = slStoreManagement.getDirectorId();
        String competentId = slStoreManagement.getCompetentId();
        String administratorId = slStoreManagement.getAdministratorId();
        Long userid = SecurityUtils.getUserId();
        List<String> list1 = Arrays.asList(administratorId.split(","));
        List<String> list2 = Arrays.asList(competentId.split(","));
        List<String> list3 = Arrays.asList(directorId.split(","));
        SlVolumeProductionRkgl slVolumeProductionRkgl=null;
        if (volumeProductionRkglDTO.getId()==null){
            slVolumeProductionRkgl = new  SlVolumeProductionRkgl();
            slVolumeProductionRkgl.setAttachmentUrl(volumeProductionRkglDTO.getAttachmentUrl());
            slVolumeProductionRkgl.setAuthorizationUrl(volumeProductionRkglDTO.getAuthorization());
            slVolumeProductionRkgl.setManagementId(volumeProductionRkglDTO.getManagementId());
            slVolumeProductionRkgl.setAuditStatus(1);
            slVolumeProductionRkgl.setPresentState(1);
            slVolumeProductionRkgl.setSupplierId(volumeProductionRkglDTO.getSupplierId());
            slVolumeProductionRkgl.setSource(volumeProductionRkglDTO.getSource());
            slVolumeProductionRkgl.setStartiTime(new Date());
            slVolumeProductionRkgl.setSysId(userid);
            slVolumeProductionRkgl.setRemark(volumeProductionRkglDTO.getRemark());
            // 如果发起人是主任 主管 或 管理员
            if (list1.contains(userid.toString())){
                slVolumeProductionRkgl.setAuditStatus(1);
                slVolumeProductionRkgl.setPresentState(2);
            }
            if (list2.contains(userid.toString())){
                slVolumeProductionRkgl.setAuditStatus(1);
                slVolumeProductionRkgl.setPresentState(3);
            }
            if (list3.contains(userid.toString())){
                slVolumeProductionRkgl.setAuditStatus(3);
                slVolumeProductionRkgl.setPresentState(4);
            }
            this.save(slVolumeProductionRkgl);
        }else{
            slVolumeProductionRkgl = this.getById(volumeProductionRkglDTO.getId());
            slVolumeProductionRkgl.setPresentState(1);
            slVolumeProductionRkgl.setAuditStatus(1);
            if (volumeProductionRkglDTO.getSource()!=null){
                slVolumeProductionRkgl.setSource(volumeProductionRkglDTO.getSource());
            }
            if (volumeProductionRkglDTO.getRemark()!=null){
                slVolumeProductionRkgl.setRemark(volumeProductionRkglDTO.getRemark());
            }
            if (volumeProductionRkglDTO.getSupplierId()!=null){
                slVolumeProductionRkgl.setSupplierId(volumeProductionRkglDTO.getSupplierId());
            }
            if (volumeProductionRkglDTO.getAttachmentUrl()!=null){
                slVolumeProductionRkgl.setAttachmentUrl(volumeProductionRkglDTO.getAttachmentUrl());
            }
            if (volumeProductionRkglDTO.getAuthorization()!=null){
                slVolumeProductionRkgl.setAuthorizationUrl(volumeProductionRkglDTO.getAuthorization());
            }
            // 如果发起人是主任 主管 或 管理员
            if (list1.contains(userid.toString())){
                slVolumeProductionRkgl.setAuditStatus(1);
                slVolumeProductionRkgl.setPresentState(2);
            }
            if (list2.contains(userid.toString())){
                slVolumeProductionRkgl.setAuditStatus(1);
                slVolumeProductionRkgl.setPresentState(3);
            }
            if (list3.contains(userid.toString())){
                slVolumeProductionRkgl.setAuditStatus(3);
                slVolumeProductionRkgl.setPresentState(4);
            }
            this.updateById(slVolumeProductionRkgl);
        }
        return slVolumeProductionRkgl.getId();
    }
    @Override
    public VolumeProductionRkgInventoryVO getVolumeProductionRkgInventory(Long id) {
        SlVolumeProductionRkgl byId = this.getById(id);
        VolumeProductionRkgInventoryVO vo = new VolumeProductionRkgInventoryVO();
        SysUser data = sysUserClient.getSysUser(byId.getSysId()).getData();
        vo.setSysPhone(data.getPhonenumber());
        vo.setSysName(data.getNickName());
        vo.setStartiTime(byId.getStartiTime());
        SlStoreManagement slStoreManagement = slStoreManagementMapper.selectById(byId.getManagementId());
        vo.setStoreManagementName(slStoreManagement.getStoreManagementName());
        String directorId = slStoreManagement.getDirectorId();
        List<String> stri = Arrays.asList(directorId.split(","));
        String str1 ="";
        if (stri.size() > 0) {
            for (String str : stri) {
                SysUser data1 = sysUserClient.getSysUser(Long.valueOf(str)).getData();
                str1 += data1.getNickName() + ",";
            }
        }
        vo.setDirectorName(str1.substring(0, str1.length() - 1));
        String competentId = slStoreManagement.getCompetentId();
        List<String> stri1 = Arrays.asList(competentId.split(","));
        String str11 = "";
        if (stri1.size() > 0) {
            for (String str : stri1) {
                SysUser data1 = sysUserClient.getSysUser(Long.valueOf(str)).getData();
                str11 += data1.getNickName() + ",";
            }
        }
        vo.setCompetentName(str11.substring(0, str11.length() - 1));
        String administratorId = slStoreManagement.getAdministratorId();
        List<String> stri11 = Arrays.asList(administratorId.split(","));
        String str111 = "";
        if (stri11.size() > 0) {
            for (String str : stri11) {
                SysUser data1 = sysUserClient.getSysUser(Long.valueOf(str)).getData();
                str111 += data1.getNickName() + ",";
            }
        }
        vo.setAdministratorName(str111.substring(0, str111.length() - 1));
        List<ManagementimgVolumeProductionRkVO> managementList = new ArrayList<>();
        LambdaQueryWrapper<SlVolumeProductionRk> wrapper1 = Wrappers.lambdaQuery();
        wrapper1.eq(SlVolumeProductionRk::getVolumeProductionRkglId, byId.getId());
        wrapper1.eq(SlVolumeProductionRk::getDelFlag, 0);
        wrapper1.orderByDesc(SlVolumeProductionRk::getCreateTime);
        SysUser data1 = sysUserClient.getSysUser(byId.getSupplierId()).getData();
        List<SlVolumeProductionRk> page2 = slVolumeProductionRkMapper.selectList(wrapper1);
        for (SlVolumeProductionRk list : page2) {
                ManagementimgVolumeProductionRkVO rkVO = new ManagementimgVolumeProductionRkVO();
                SlGoodsMaterials slGoodsMaterials = slGoodsMaterialsMapper.selectById(list.getMaterialsId());
                rkVO.setGoodsMaterialsName(slGoodsMaterials.getGoodsMaterialsName());
                rkVO.setIsConsume(slGoodsMaterials.getIsConsume());
                rkVO.setRkModel(list.getRkModel());
                rkVO.setRkNum(list.getRkNum());
                rkVO.setRkPice(list.getRkPice());
                rkVO.setStoreManagementNumber(list.getStoreManagementNumber());
                SlGoodsShelf slGoodsShelf = slGoodsShelfMapper.selectById(list.getShelfId());
                rkVO.setGoodsShelfName(slGoodsShelf.getGoodsShelfName());
                rkVO.setSupplierName(data1.getNickName());
                managementList.add(rkVO);
        }
        vo.setManagementimgVolumeProductionRkVOList(managementList);
        return vo;
    }
    @Override
    public void rk(Long id) {
        LambdaQueryWrapper<SlVolumeProductionRk> wrapper1 = Wrappers.lambdaQuery();
        wrapper1.eq(SlVolumeProductionRk::getVolumeProductionRkglId, id);
        wrapper1.eq(SlVolumeProductionRk::getDelFlag, 0);
        wrapper1.orderByDesc(SlVolumeProductionRk::getCreateTime);
        List<SlVolumeProductionRk> page2 = slVolumeProductionRkMapper.selectList(wrapper1);
        for (SlVolumeProductionRk list : page2) {
            list.setNewAddTime("1");
            list.setSmerwmNum(list.getErwmNum());
            LambdaQueryWrapper<ManagementGoodsMaterials> wrapper2 = Wrappers.lambdaQuery();
            wrapper2.eq(ManagementGoodsMaterials::getGoodsMaterialsId,list.getMaterialsId());
            wrapper2.eq(ManagementGoodsMaterials::getManagementId,list.getManagementId());
            wrapper2.eq(ManagementGoodsMaterials::getDelFlag, 0);
            ManagementGoodsMaterials managementGoodsMaterials = managementGoodsMaterialsMapper.selectOne(wrapper2);
            SlGoodsMaterials slGoodsMaterials = slGoodsMaterialsMapper.selectById(list.getMaterialsId());
            if (managementGoodsMaterials!=null){
                Long repertorySum = managementGoodsMaterials.getRepertorySum();
                Long repertoryZhai = managementGoodsMaterials.getRepertoryZhai();
                Long re=repertorySum+list.getRkNum();
                Long re1=repertoryZhai+list.getRkNum();
                managementGoodsMaterials.setRepertorySum(re);
                managementGoodsMaterials.setRepertoryZhai(re1);
                managementGoodsMaterials.setRepertory(slGoodsMaterials.getRepertory());
                managementGoodsMaterialsMapper.updateById(managementGoodsMaterials);
            }else{
                ManagementGoodsMaterials managementGoodsMaterials1=new ManagementGoodsMaterials();
                managementGoodsMaterials1.setManagementId(list.getManagementId());
                managementGoodsMaterials1.setGoodsMaterialsId(list.getMaterialsId());
                managementGoodsMaterials1.setRepertoryZhai(list.getRkNum());
                managementGoodsMaterials1.setRepertorySum(list.getRkNum());
                managementGoodsMaterials1.setCreateTime(new Date());
                managementGoodsMaterials1.setRepertory(slGoodsMaterials.getRepertory());
                managementGoodsMaterialsMapper.insert(managementGoodsMaterials1);
            }
            slVolumeProductionRkMapper.updateById(list);
        }
        SlVolumeProductionRkgl byId = this.getById(id);
        byId.setPresentState(4);
        byId.setAuditStatus(6);
        byId.setEndTime(new Date());
        this.updateById(byId);
        logClient.savelong();
    }
}