无关风月
2024-09-03 56dfe0d4bf81262622a1919cceb2b039fd356209
ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/SlStoreManagementServiceImpl.java
@@ -1,25 +1,31 @@
package com.ruoyi.management.service.impl;
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
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.PageDTO;
import com.ruoyi.management.domain.ManagementGoodsMaterials;
import com.ruoyi.management.domain.SlStoreManagement;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.management.domain.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.management.domain.SlVolumeProductionRk;
import com.ruoyi.management.domain.dto.QStoreManagementQuery;
import com.ruoyi.management.domain.dto.StoreManagementDTO;
import com.ruoyi.management.domain.dto.StoreManagementQuery;
import com.ruoyi.management.domain.vo.SlGoodsShelfVO;
import com.ruoyi.management.domain.vo.SlStoreManagementInventoryVO;
import com.ruoyi.management.mapper.ManagementGoodsMaterialsMapper;
import com.ruoyi.management.mapper.SlStoreManagementMapper;
import com.ruoyi.management.mapper.SlVolumeProductionRkMapper;
import com.ruoyi.management.mapper.SlVolumeProductionRkglMapper;
import com.ruoyi.management.mapper.*;
import com.ruoyi.management.service.SlAuditRecordService;
import com.ruoyi.management.service.SlAuditService;
import com.ruoyi.management.service.SlStoreManagementService;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import org.apache.catalina.security.SecurityUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -39,19 +45,23 @@
    @Resource
    private ManagementGoodsMaterialsMapper managementGoodsMaterialsMapper;
    @Autowired
    private SlAuditMapper slAuditMapper;
    @Autowired
    private SlAuditRecordMapper slAuditRecordMapper;
    @Override
    public PageDTO<SlStoreManagement> getStoreManagementList(StoreManagementQuery storeManagementQuery) {
        Page<SlStoreManagement> page = new Page<>(storeManagementQuery.getPageCurr(), storeManagementQuery.getPageSize());
        LambdaQueryWrapper< SlStoreManagement> wrapper= Wrappers.lambdaQuery();
        if (storeManagementQuery.getStoreManagementName()!=null&&storeManagementQuery.getStoreManagementName()!=""){
            wrapper.eq(SlStoreManagement::getStoreManagementName,storeManagementQuery.getStoreManagementName());
            wrapper.like(SlStoreManagement::getStoreManagementName,storeManagementQuery.getStoreManagementName());
        }
        if(storeManagementQuery.getStoreManagementNo()!=null&&storeManagementQuery.getStoreManagementNo()!=""){
            wrapper.eq(SlStoreManagement::getStoreManagementNo,storeManagementQuery.getStoreManagementNo());
        if(storeManagementQuery.getStoreManagementNo()!=null&&storeManagementQuery.getStoreManagementNo()!="" ){
            wrapper.like(SlStoreManagement::getStoreManagementNo,storeManagementQuery.getStoreManagementNo());
        }
        if ( storeManagementQuery.getStoreManagementGrade()!=null &&!storeManagementQuery.getStoreManagementGrade().equals("0") ){
            if ( storeManagementQuery.getStoreManagementGrade()!=null &&!storeManagementQuery.getStoreManagementGrade().equals("0") ){
            String[] split = storeManagementQuery.getStoreManagementGrade().split(",");
            List<Integer> arr=new ArrayList<>();
            for(int i=0;i<split.length;i++){
@@ -67,8 +77,15 @@
    }
    @Override
    public void addStoreManagement(StoreManagementDTO storeManagementDTO) {
    public AjaxResult addStoreManagement(StoreManagementDTO storeManagementDTO) {
        if (storeManagementDTO.getId()==null){
            List<SlStoreManagement> list = this.list(new QueryWrapper<SlStoreManagement>()
                    .eq("store_management_grade", storeManagementDTO.getStoreManagementGrade())
                            .eq("store_management_no", storeManagementDTO.getStoreManagementNo())
                    .eq("del_flag", 0));
            if (!list.isEmpty()){
                return AjaxResult.error("当前仓库等级已有相同编号仓库");
            }
            SlStoreManagement slStoreManagement=new SlStoreManagement();
            slStoreManagement.setStoreManagementNo(storeManagementDTO.getStoreManagementNo());
            slStoreManagement.setStoreManagementAdder(storeManagementDTO.getStoreManagementAdder());
@@ -90,6 +107,45 @@
            this.save(slStoreManagement);
        }else {
            SlStoreManagement slStoreManagement = this.getById(storeManagementDTO.getId());
            if (!(slStoreManagement.getAdministratorId().equals(storeManagementDTO.getAdministratorId())
                    && slStoreManagement.getCompetentId().equals(storeManagementDTO.getCompetentId())
                    && slStoreManagement.getDirectorId().equals(storeManagementDTO.getDirectorId()))){
                // 如果修改了 主任 主管 管理员id 那么需要将正在走审批流程的单子全部修改
                List<SlAudit> list1 =slAuditMapper.selectList(new LambdaQueryWrapper<SlAudit>().eq(SlAudit::getManagementId, storeManagementDTO.getId())
                        .eq(SlAudit::getDelFlag, "0").ne(SlAudit::getState, 4));
                for (SlAudit slAudit : list1) {
                    List<SlAuditRecord> list = slAuditRecordMapper.selectList(new LambdaQueryWrapper<SlAuditRecord>()
                            .eq(SlAuditRecord::getAuditId, slAudit.getId())
                            .eq(SlAuditRecord::getDelFlag, "0"));
                    for (SlAuditRecord slAuditRecord : list) {
                        if (slAuditRecord.getType() == 1){
                            if (slAuditRecord.getState()!=2){
                                slAuditRecord.setShenhId(storeManagementDTO.getAdministratorId());
                            }
                        }
                        if (slAuditRecord.getType() == 2){
                            if (slAuditRecord.getState()!=2){
                                slAuditRecord.setShenhId(storeManagementDTO.getCompetentId());
                            }
                        }
                        if (slAuditRecord.getType() == 3){
                            if (slAuditRecord.getState()!=2){
                                slAuditRecord.setShenhId(storeManagementDTO.getDirectorId());
                            }
                        }
                        slAuditRecordMapper.updateById(slAuditRecord);
                    }
                }
            }
            List<SlStoreManagement> list = this.list(new QueryWrapper<SlStoreManagement>()
                    .eq("store_management_grade", storeManagementDTO.getStoreManagementGrade())
                    .eq("store_management_no", storeManagementDTO.getStoreManagementNo())
                    .ne("id",slStoreManagement.getId())
                    .eq("del_flag", 0));
            if (!list.isEmpty()){
                return AjaxResult.error("当前仓库等级已有相同编号仓库");
            }
            if (storeManagementDTO.getStoreManagementNo()!=null){
                slStoreManagement.setStoreManagementNo(storeManagementDTO.getStoreManagementNo());
            }
@@ -143,46 +199,216 @@
            }
            this.updateById(slStoreManagement);
        }
        return AjaxResult.success();
    }
    @Autowired
    private TokenService tokenService;
    @Resource
    private SysUserClient sysUserClient;
    @Override
    public List<SlStoreManagement> QueryStoreManagementList(QStoreManagementQuery StoreManagementQuery) {
        LambdaQueryWrapper< SlStoreManagement> wrapper= Wrappers.lambdaQuery();
        if (StoreManagementQuery.getCityCode()!="" && StoreManagementQuery.getCityCode()!=null){
        wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
        }
        if (StoreManagementQuery.getCountyCode()!="" && StoreManagementQuery.getCountyCode()!=null){
        wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
        }
        if (StoreManagementQuery.getStoreManagementGrade()!=0 && StoreManagementQuery.getStoreManagementGrade()!=null){
            wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
        }
        wrapper.eq( SlStoreManagement::getDelFlag,0);
        wrapper.eq(SlStoreManagement::getDelFlag,0);
        wrapper.orderByDesc(SlStoreManagement::getCreateTime);
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser data = sysUserClient.getSysUser(userid).getData();
        if (data!=null){
            if (!data.getUserType().equals("00")){
                // 仓库管理员 根据仓库管理员的等级查询对应的仓库
                switch (data.getRoleType()){
                    case 2:
                        if (StoreManagementQuery.getStoreManagementGrade()!=null&&StoreManagementQuery.getStoreManagementGrade()!=""){
                            if (StoreManagementQuery.getTownCode()!=null && StoreManagementQuery.getTownCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getTownCode,StoreManagementQuery.getTownCode());
                            }else if (StoreManagementQuery.getCountyCode()!=null && StoreManagementQuery.getCountyCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
                            }else if (StoreManagementQuery.getCityCode()!=null && StoreManagementQuery.getCityCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
                            }else{
                                String[] split = StoreManagementQuery.getStoreManagementGrade().split(",");
                                // 如果没指定所在地 查所有
                                wrapper.in(SlStoreManagement::getStoreManagementGrade,split);
                            }
                        }else{
                            // 没有选择仓库等级 根据登陆人等级来查询
                            wrapper.ge(SlStoreManagement::getStoreManagementGrade,2);
                        }
                        break;
                    case 3:
                        if (StoreManagementQuery.getStoreManagementGrade()!=null&&StoreManagementQuery.getStoreManagementGrade()!=""){
                            if (StoreManagementQuery.getTownCode()!=null&& StoreManagementQuery.getTownCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getTownCode,StoreManagementQuery.getTownCode());
                            }else if (StoreManagementQuery.getCountyCode()!=null && StoreManagementQuery.getCountyCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
                            }else if (StoreManagementQuery.getCityCode()!=null && StoreManagementQuery.getCityCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
                            }else{
                                // 如果没指定所在地 查所有
                                String[] split = StoreManagementQuery.getStoreManagementGrade().split(",");
                                // 如果没指定所在地 查所有
                                wrapper.in(SlStoreManagement::getStoreManagementGrade,split);
                                wrapper.eq(SlStoreManagement::getCityCode,data.getCityCode());
                            }
                        }else{
                            // 没有选择仓库等级 根据登陆人等级来查询 并且根据登陆人所在市来查询
                            wrapper.eq(SlStoreManagement::getCityCode,data.getCityCode());
                            wrapper.ge(SlStoreManagement::getStoreManagementGrade,3);
                        }
                        break;
                    case 4:
                        if (StoreManagementQuery.getStoreManagementGrade()!=null&&StoreManagementQuery.getStoreManagementGrade()!=""){
                            if (StoreManagementQuery.getTownCode()!=null && StoreManagementQuery.getTownCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getTownCode,StoreManagementQuery.getTownCode());
                            }else if (StoreManagementQuery.getCountyCode()!=null && StoreManagementQuery.getCountyCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
                            }else if (StoreManagementQuery.getCityCode()!=null && StoreManagementQuery.getCityCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
                            }else{
                                // 如果没指定所在地 查所有
                                String[] split = StoreManagementQuery.getStoreManagementGrade().split(",");
                                // 如果没指定所在地 查所有
                                wrapper.in(SlStoreManagement::getStoreManagementGrade,split);
                                wrapper.eq(SlStoreManagement::getCountyCode,data.getCountyCode());
                            }
                        }else{
                            // 没有选择仓库等级 根据登陆人等级来查询
                            wrapper.eq(SlStoreManagement::getCountyCode,data.getCountyCode());
                            wrapper.ge(SlStoreManagement::getStoreManagementGrade,4);
                        }
                        break;
                    case 5:
                        if (StoreManagementQuery.getStoreManagementGrade()!=null&&StoreManagementQuery.getStoreManagementGrade()!=""){
                            if (StoreManagementQuery.getTownCode()!=null && StoreManagementQuery.getTownCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getTownCode,StoreManagementQuery.getTownCode());
                            }else if (StoreManagementQuery.getCountyCode()!=null && StoreManagementQuery.getCountyCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
                            }else if (StoreManagementQuery.getCityCode()!=null && StoreManagementQuery.getCityCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
                            }else{
                                // 如果没指定所在地 查所有
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                            }
                        }else{
                            // 没有选择仓库等级 根据登陆人等级来查询
                            wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                            wrapper.eq(SlStoreManagement::getStoreManagementGrade,5);
                        }
                        break;
                    case 6:
                        if (StoreManagementQuery.getStoreManagementGrade()!=null&&StoreManagementQuery.getStoreManagementGrade()!=""){
                            if (StoreManagementQuery.getTownCode()!=null&& StoreManagementQuery.getTownCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getTownCode,StoreManagementQuery.getTownCode());
                            }else if (StoreManagementQuery.getCountyCode()!=null && StoreManagementQuery.getCountyCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
                            }else if (StoreManagementQuery.getCityCode()!=null && StoreManagementQuery.getCityCode()!=""){
                                wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                                wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
                            }else{
                                // 如果没指定所在地 查所有
                                String[] split = StoreManagementQuery.getStoreManagementGrade().split(",");
                                // 如果没指定所在地 查所有
                                wrapper.in(SlStoreManagement::getStoreManagementGrade,split);
                                wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                            }
                        }else{
                            // 没有选择仓库等级 根据登陆人等级来查询
                            wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                            wrapper.eq(SlStoreManagement::getStoreManagementGrade,6);
                        }
                        break;
                }
            }else {
                if (StoreManagementQuery.getStoreManagementGrade()!=null&&StoreManagementQuery.getStoreManagementGrade()!="" ){
                    if (StoreManagementQuery.getTownCode()!=null && StoreManagementQuery.getTownCode()!=""){
                        wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                        wrapper.eq(SlStoreManagement::getTownCode,StoreManagementQuery.getTownCode());
                    }else if (StoreManagementQuery.getCountyCode()!=null && StoreManagementQuery.getCountyCode()!=""){
                        wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                        wrapper.eq(SlStoreManagement::getCountyCode,StoreManagementQuery.getCountyCode());
                    }else if (StoreManagementQuery.getCityCode()!=null && StoreManagementQuery.getCityCode()!=""){
                        wrapper.eq(SlStoreManagement::getStoreManagementGrade,StoreManagementQuery.getStoreManagementGrade());
                        wrapper.eq(SlStoreManagement::getCityCode,StoreManagementQuery.getCityCode());
                    }else {
                        // 如果没指定所在地 查所有
                        String[] split = StoreManagementQuery.getStoreManagementGrade().split(",");
                        // 如果没指定所在地 查所有
                        wrapper.in(SlStoreManagement::getStoreManagementGrade,split);
                    }
                }
            }
        }
        List<SlStoreManagement> page1 = this.list(wrapper);
        return page1;
    }
    @Override
    public PageDTO<SlStoreManagementInventoryVO> getManagementInventoryList(StoreManagementQuery storeManagementQuery) {
        Long userId = SecurityUtils.getUserId();
        SysUser data = sysUserClient.getSysUser(userId).getData();
        Page<SlStoreManagement> page = new Page<>(storeManagementQuery.getPageCurr(), storeManagementQuery.getPageSize());
        LambdaQueryWrapper< SlStoreManagement> wrapper= Wrappers.lambdaQuery();
        if (storeManagementQuery.getStoreManagementName()!=null){
            wrapper.eq(SlStoreManagement::getStoreManagementName,storeManagementQuery.getStoreManagementName());
            wrapper.like(SlStoreManagement::getStoreManagementName,storeManagementQuery.getStoreManagementName());
        }
        if (!data.getUserType().equals("00")){
            // 不是平台账号 根据角色类型查询对应的仓库
            switch (data.getRoleType()){
                case 3:
                    wrapper.ge(SlStoreManagement::getStoreManagementGrade,3);
                    wrapper.eq(SlStoreManagement::getCityCode,data.getCityCode());
                    break;
                case 4:
                    wrapper.eq(SlStoreManagement::getCountyCode,data.getCountyCode());
                    wrapper.ge(SlStoreManagement::getStoreManagementGrade,4);
                    break;
                case 5:
                    wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                    wrapper.ge(SlStoreManagement::getStoreManagementGrade,5);
                    break;
                case 6:
                    wrapper.eq(SlStoreManagement::getStoreManagementGrade,6);
                    wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                    break;
            }
        }
        if (storeManagementQuery.getStoreManagementNo()!=null){
        wrapper.eq(SlStoreManagement::getStoreManagementNo,storeManagementQuery.getStoreManagementNo());
        }
        if ( storeManagementQuery.getStoreManagementGrade()!=null&&!storeManagementQuery.getStoreManagementGrade().equals("0")){
            String[] split = storeManagementQuery.getStoreManagementGrade().split(",");
            List<Integer> arr=new ArrayList<>();
            for(int i=0;i<split.length;i++){
                arr.add(Integer.valueOf(split[i]));
            if (!storeManagementQuery.getStoreManagementGrade().contains("0")){
                String[] split = storeManagementQuery.getStoreManagementGrade().split(",");
                List<Integer> arr=new ArrayList<>();
                for(int i=0;i<split.length;i++){
                    arr.add(Integer.valueOf(split[i]));
                }
                wrapper.in(SlStoreManagement::getStoreManagementGrade,arr);
            }
            wrapper.in(SlStoreManagement::getStoreManagementGrade,arr);
        }
        wrapper.eq( SlStoreManagement::getDelFlag,0);
        wrapper.orderByDesc(SlStoreManagement::getCreateTime);