cuijian
2023-08-29 8e16903f4b9d8430852ebf58ed0d6b8dacf6ac75
lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartOutboundDetailServiceImpl.java
@@ -1,14 +1,24 @@
package org.jeecg.modules.spare.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.modules.spare.entity.*;
import org.jeecg.modules.spare.mapper.SparePartOutboundDetailMapper;
import org.jeecg.modules.spare.service.ISparePartOutboundDetailService;
import org.jeecg.modules.spare.service.ISparePartOutboundService;
import org.jeecg.modules.spare.service.ISparePartService;
import org.jeecg.modules.spare.service.ISparesPartInventoryService;
import org.jeecg.modules.system.entity.SysRole;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysDictService;
import org.jeecg.modules.system.service.ISysRoleService;
import org.jeecg.modules.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -17,6 +27,9 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -40,6 +53,22 @@
    @Autowired
    @Lazy
    private ISparePartOutboundService sparePartOutboundService;
    @Autowired
    @Lazy
    private ISysDictService sysDictService;
    @Autowired
    @Lazy
    private ISysRoleService sysRoleService;
    @Autowired
    @Lazy
    private ISysUserService sysUserService;
    @Autowired
    @Lazy
    private ISysBaseAPI sysBaseAPI;
    @Override
    public List<Map<String, Object>> getSparePartOutboundDeatilList(String sparePartOutboundId) {
@@ -107,8 +136,45 @@
            sparePartOutbound.setStatus("4");
            sparePartOutboundService.updateById(sparePartOutbound);
        }
        //6.判断出库后库存是否低于安全库存或出现积压情况
        List roleList = new ArrayList<>();
        List<DictModel> dictModelList = sysDictService.getDictItems("warehouse_message");
        for(DictModel dictModel : dictModelList){
            roleList.add(dictModel.getText());
        }
        QueryWrapper<SysRole> queryWrapper = Wrappers.query();
        queryWrapper.in("role_code", roleList);
        List<SysRole> sysRoleList = sysRoleService.list(queryWrapper);
        List<SysUser> sysUsers = new ArrayList<>();
        for (SysRole sysRole : sysRoleList) {
            sysUsers.addAll(sysUserService.getAllUsersByRoleId(sysRole.getId()));
        }
        double quantity = 0.0;
        List<SparesPartInventory> sparesPartInventoryList = sparesPartInventoryService.lambdaQuery().eq(SparesPartInventory::getSparePartId,sparesPartInventory.getSparePartId()).eq(SparesPartInventory::getDelFlag, CommonConstant.DEL_FLAG_0).list();
        for(SparesPartInventory sparesPartInventory1 : sparesPartInventoryList){
            quantity = quantity + sparesPartInventory1.getMainQuantity();
        }
        if(quantity < sparePart.getInventoryLowerLimit()){
            String messageTitle;
            String messageContent;
            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            messageTitle = "系统消息:备件编码为 " + sparePart.getNum() + " 的备件库存量不足,请及时处理!";
            messageContent = "系统消息:备件编码:" + sparePart.getNum()  + " 的备件库存量已低于安全库存!" + "\n" + "消息时间:" + sysTime + "\n";
            for (SysUser sysUser : sysUsers) {
                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
            }
        }else if(quantity > sparePart.getInventoryUpperLimit()){
            String messageTitle;
            String messageContent;
            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            messageTitle = "系统消息:备件编码为 " + sparePart.getNum() + " 的备件出现积压情况,请及时处理!";
            messageContent = "系统消息:备件编码为 " + sparePart.getNum() + " 的备件库存量已高于库存上限值,出现积压情况!" + "\n" + "消息时间:" + sysTime + "\n";
            for (SysUser sysUser : sysUsers) {
                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
            }
        }
        return true;
    }
}