无关风月
2024-09-03 56dfe0d4bf81262622a1919cceb2b039fd356209
ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/InventoriesSuppliesServiceImpl.java
@@ -1,31 +1,48 @@
package com.ruoyi.management.service.impl;
import java.math.BigDecimal;
import java.util.Date;
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.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.enums.ClientTypeEnum;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.management.domain.InventoriesSupplies;
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.SlGoodsShelf;
import com.ruoyi.management.domain.SlStoreManagement;
import com.ruoyi.management.domain.dto.InventoriesSuppDTO;
import com.ruoyi.management.domain.dto.InventoriesSuppliesQuery;
import com.ruoyi.management.domain.dto.ScanCodesDTO;
import com.ruoyi.management.domain.vo.InventoriesSuppliesVO;
import com.ruoyi.management.domain.vo.SlGoodsMaterialsVO;
import com.ruoyi.management.domain.vo.SlGoodsShelfVO;
import com.ruoyi.management.mapper.InventoriesSuppliesMapper;
import com.ruoyi.management.mapper.SlEquipmentMapper;
import com.ruoyi.management.mapper.SlStoreManagementMapper;
import com.ruoyi.management.mapper.SlVolumeProductionRkMapper;
import com.ruoyi.management.service.InventoriesSuppliesService;
import com.ruoyi.management.service.SlGoodsMaterialsService;
import com.ruoyi.management.service.SlGoodsShelfService;
import com.ruoyi.management.service.SlVolumeProductionRkService;
import com.ruoyi.system.api.constants.NotificationTypeConstant;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.domain.WebsocketMessageDTO;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
@@ -45,13 +62,51 @@
    @Resource
    private SysUserClient sysUserClient;
    @Resource
    private SlVolumeProductionRkMapper slVolumeProductionRkMapper;
    @Autowired
    private SlGoodsMaterialsService slGoodsMaterialsService;
    @Autowired
    private SlGoodsShelfService slGoodsShelfService;
    @Autowired
    private SlEquipmentMapper slEquipmentMapper;
    @Autowired
    private InventoriesSuppliesMapper inventoriesSuppliesMapper;
    private static final ObjectMapper objectMapper = new ObjectMapper();
    @Override
    public PageDTO<InventoriesSuppliesVO> getInventoriesSuppliesList(InventoriesSuppliesQuery inventoriesSuppliesQuery) {
        LambdaQueryWrapper<SlStoreManagement> wrapper= Wrappers.lambdaQuery();
        if (inventoriesSuppliesQuery.getStoreManagementName()!=null){
        Long userId = SecurityUtils.getUserId();
        if (userId!=1){
            SysUser data = sysUserClient.getSysUser(userId).getData();
            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.ge(SlStoreManagement::getStoreManagementGrade,4);
                        wrapper.eq(SlStoreManagement::getCountyCode,data.getCountyCode());
                        break;
                    case 5:
                        wrapper.ge(SlStoreManagement::getStoreManagementGrade,5);
                        wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                        break;
                    case 6:
                        wrapper.ge(SlStoreManagement::getStoreManagementGrade,6);
                        wrapper.eq(SlStoreManagement::getTownCode,data.getTownCode());
                        break;
                }
            }
        }
        if (inventoriesSuppliesQuery.getStoreManagementName()!=null&&inventoriesSuppliesQuery.getStoreManagementName()!=""){
            wrapper.eq(SlStoreManagement::getStoreManagementName,inventoriesSuppliesQuery.getStoreManagementName());
        }
        if (inventoriesSuppliesQuery.getStoreManagementNo()!=null){
        if (inventoriesSuppliesQuery.getStoreManagementNo()!=null&&inventoriesSuppliesQuery.getStoreManagementNo()!=""){
        wrapper.eq(SlStoreManagement::getStoreManagementNo,inventoriesSuppliesQuery.getStoreManagementNo());
        }
        List<SlStoreManagement> slStoreManagements = slStoreManagementMapper.selectList(wrapper);
@@ -62,7 +117,9 @@
        Page<InventoriesSupplies> page = new Page<>(inventoriesSuppliesQuery.getPageCurr(), inventoriesSuppliesQuery.getPageSize());
        LambdaQueryWrapper< InventoriesSupplies> wrapper1= Wrappers.lambdaQuery();
        wrapper1.like(InventoriesSupplies::getPdrName,inventoriesSuppliesQuery.getPdrName());
        if (inventoriesSuppliesQuery.getPdrName()!=null&&inventoriesSuppliesQuery.getPdrName()!=""){
            wrapper1.like(InventoriesSupplies::getPdrName,inventoriesSuppliesQuery.getPdrName());
        }
        if (slStoreManagementIdList.size()>0){
            wrapper1.in(InventoriesSupplies::getMaterialsId,slStoreManagementIdList);
        }else {
@@ -74,7 +131,7 @@
            wrapper1.gt(InventoriesSupplies::getPdTime, inventoriesSuppliesQuery.getStartpdTime());
        }
        if (inventoriesSuppliesQuery.getEndpdTime()!=null){
        if (inventoriesSuppliesQuery.getEndpdTime()!=null&&inventoriesSuppliesQuery.getPdrName()!=""){
            wrapper1.le(InventoriesSupplies::getPdTime, inventoriesSuppliesQuery.getEndpdTime());
       }
@@ -98,9 +155,134 @@
        InventoriesSupplies inventoriesSupplies=new InventoriesSupplies();
        inventoriesSupplies.setMaterialsId(inventoriesSuppDTO.getMaterialsId());
        inventoriesSupplies.setPdTime(new Date());
        inventoriesSupplies.setCreateTime(new Date());
        inventoriesSupplies.setPdrId(inventoriesSuppDTO.getPdrId());
        R<SysUser> sysUser = sysUserClient.getSysUser(inventoriesSuppDTO.getPdrId());
        inventoriesSupplies.setPdrName(sysUser.getData().getNickName());
        this.save(inventoriesSupplies);
    }
    @Resource
    private TokenService tokenService;
    @Override
    public R scanCodes(String rkNumber,String code) {
        LoginUser loginUserDevice = tokenService.getLoginUserDevice();
        Map<String, Object> map1 = new ConcurrentHashMap<>();
        String message1 = null;
        SlVolumeProductionRkVO slVolumeProductionRkVO1 = new SlVolumeProductionRkVO();
        slVolumeProductionRkVO1.setId("");
        slVolumeProductionRkVO1.setVolumeProductionRkglId("");
        slVolumeProductionRkVO1.setMaterialsId("");
        slVolumeProductionRkVO1.setRkNum(0L);
        slVolumeProductionRkVO1.setRkNumber("");
        slVolumeProductionRkVO1.setRkModel("");
        slVolumeProductionRkVO1.setRkPice(new BigDecimal("0"));
        slVolumeProductionRkVO1.setRepertoryZhai(0L);
        slVolumeProductionRkVO1.setStoreManagementNumber(0);
        slVolumeProductionRkVO1.setShelfId("");
        slVolumeProductionRkVO1.setDelFlag("");
        slVolumeProductionRkVO1.setCreateBy("");
        slVolumeProductionRkVO1.setCreateTime(new Date());
        slVolumeProductionRkVO1.setUpdateBy("");
        slVolumeProductionRkVO1.setUpdateTime(new Date());
        slVolumeProductionRkVO1.setErwmNum(0);
        slVolumeProductionRkVO1.setSmerwmNum(0);
        slVolumeProductionRkVO1.setManagementId("");
        slVolumeProductionRkVO1.setNewAddTime("");
        slVolumeProductionRkVO1.setGoodsMaterialsName("");
        slVolumeProductionRkVO1.setIsConsume(0);
        slVolumeProductionRkVO1.setManagementNumber(0);
        slVolumeProductionRkVO1.setShelfName("");
        slVolumeProductionRkVO1.setIsError("");
        try {
            slVolumeProductionRkVO1.setIsError("1");
            map1.put("SlVolumeProductionRk",slVolumeProductionRkVO1);
            message1 = objectMapper.writeValueAsString(map1);
        } catch (JsonProcessingException e) {
        }
        // todo 重写一套登录鉴权
        sysUserClient.pushAll(message1, "1",SecurityConstants.INNER);
        if (true){
            return R.ok();
        }
        LambdaQueryWrapper< SlVolumeProductionRk> wrapper1= Wrappers.lambdaQuery();
        wrapper1.eq(SlVolumeProductionRk::getRkNumber,rkNumber);
        wrapper1.eq(SlVolumeProductionRk::getDelFlag,"0");
        wrapper1.orderByDesc(SlVolumeProductionRk::getCreateTime);
        SlVolumeProductionRk page2 = slVolumeProductionRkMapper.selectOne(wrapper1);
        List<SlEquipment> slEquipments = slEquipmentMapper.selectList(new QueryWrapper<SlEquipment>()
                .eq("management_id", page2.getManagementId())
                .eq("del_flag", "0")
                .eq("type", 2));
        SlEquipment slEquipment1 = slEquipmentMapper.selectOne(new QueryWrapper<SlEquipment>()
                .eq("equipment_num", code)
                .eq("del_flag", "0")
                .eq("type", 2));
//        if (slEquipments.isEmpty()){
//            // 这个仓库没有扫码枪
//            sysUserClient.pushAll("501", SecurityConstants.INNER);
//            return R.ok();
//        }
//        // 判断当前扫码枪编号是否匹配于入库记录使用的扫码枪编号
//        for (SlEquipment slEquipment : slEquipments) {
//            if (!slEquipment.getEquipmentNum().equals(code)){
//                // 扫码枪
//                sysUserClient.pushAll("501", SecurityConstants.INNER);
//                return R.ok();
//            }
//        }
//        if (page2.getSmerwmNum()<page2.getErwmNum()){
//            Integer i=page2.getSmerwmNum()+1;
//            page2.setSmerwmNum(i);
//            slVolumeProductionRkMapper.updateById(page2);
//        }
        SlGoodsMaterials byId = slGoodsMaterialsService.getById(page2.getMaterialsId());
        page2.setGoodsMaterialsName(byId.getGoodsMaterialsName());
        page2.setIsConsume(byId.getIsConsume());
        page2.setManagementNumber(page2.getStoreManagementNumber());
        page2.setShelfName(slGoodsShelfService.getById(page2.getShelfId()).getGoodsShelfName());
        SlVolumeProductionRkVO slVolumeProductionRkVO = new SlVolumeProductionRkVO();
        BeanUtils.copyProperties(page2,slVolumeProductionRkVO);
        slVolumeProductionRkVO.setId(page2.getId().toString());
//        slVolumeProductionRkVO.setVolumeProductionRkglId(page2.getVolumeProductionRkglId().toString());
        slVolumeProductionRkVO.setMaterialsId(page2.getMaterialsId().toString());
        slVolumeProductionRkVO.setManagementId(slEquipment1.getManagementId().toString());
        slVolumeProductionRkVO.setShelfId(page2.getShelfId().toString());
        slVolumeProductionRkVO.setIsError("0");
        String msg = null;
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.SCANCODES);
        Long managementId = slEquipment1.getManagementId();
        Long managementId1 = page2.getManagementId();
        if (!managementId.equals(managementId1)){
            // 二维码错误
            try {
                slVolumeProductionRkVO.setIsError("1");
                map.put("SlVolumeProductionRk",slVolumeProductionRkVO);
                msg = objectMapper.writeValueAsString(map);
            } catch (JsonProcessingException e) {
            }
            // todo 重写一套登录鉴权
            sysUserClient.pushAll(msg, "1",SecurityConstants.INNER);
            // 扫码枪
            return R.ok();
        }else{
            map.put("SlVolumeProductionRk",slVolumeProductionRkVO);
        }
        try {
            msg = objectMapper.writeValueAsString(map);
        } catch (JsonProcessingException e) {
        }
        // todo 重写一套登录鉴权
        sysUserClient.pushAll(msg, "1",SecurityConstants.INNER);
        return R.ok();
    }
    public InventoriesSupplies getById1(Long suppliesId) {
        return inventoriesSuppliesMapper.getById1(suppliesId);
    }
}