package com.fzzy.igds.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.fzzy.igds.constant.Constant; import com.fzzy.igds.constant.RedisConst; import com.fzzy.igds.mapper.InoutConfMapper; import com.fzzy.igds.mapper.InoutSysConfMapper; import com.fzzy.igds.domain.InoutConf; import com.fzzy.igds.domain.InoutSysConf; import com.fzzy.igds.utils.ContextUtil; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysDeptService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @Description 出入库配置service层,包含流程配置和设备配置 * @Author CZT * @Date 2025/11/28 09:23 */ @Slf4j @Service public class InoutConfService { @Resource private ISysDeptService iSysDeptService; @Resource private InoutConfMapper inoutConfMapper; @Resource private InoutSysConfMapper inoutSysConfMapper; @Resource private RedisCache redisCache; /*--------------- 出入库流程 ---------------*/ /** * 根据条件查询流程信息 * * @param deptId * @param parentId * @return */ public List listInoutSysConf(String deptId, String parentId) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (StringUtils.isNotBlank(deptId)) { queryWrapper.eq("dept_id", deptId); } if (StringUtils.isNotBlank(parentId)) { queryWrapper.likeRight("dept_id", parentId); } return inoutSysConfMapper.selectList(queryWrapper); } /** * 查询流程配置 * * @return */ public List getSysConfData() { SysUser user = ContextUtil.getLoginUser(); SysDept userDept = iSysDeptService.selectDeptById(user.getDeptId()); if (Constant.DEPT_TYPE_20.equals(userDept.getType())) { return this.listInoutSysConf(ContextUtil.subDeptId(user), null); } else { return this.listInoutSysConf(null, user.getDeptId() + "%"); } } /** * @param companyId * @param deptId */ public void initSysConfData(String companyId, String deptId) { InoutSysConf inoutSysConf = new InoutSysConf(); inoutSysConf.setDeptId(deptId); inoutSysConf.setCompanyId(companyId); inoutSysConf.setProgressIn("REGISTER-WEIGHT_FULL-HANDLE-WEIGHT_EMPTY-RECORD"); inoutSysConf.setProgressOut("REGISTER-WEIGHT_EMPTY-HANDLE-WEIGHT_FULL-RECORD"); this.saveSysConfData(inoutSysConf); this.flushInoutSysConfCache(inoutSysConf); } /** * @param deptId */ public void delSysConfData(String deptId) { inoutSysConfMapper.deleteById(deptId); } /** * 保存流程配置 * * @param data * @return */ public void saveSysConfData(InoutSysConf data) { if (StringUtils.isEmpty(data.getCompanyId())) { data.setCompanyId(ContextUtil.getCompanyId()); } if (StringUtils.isEmpty(data.getUpdateBy())) { data.setCreateBy(ContextUtil.getLoginUserName()); data.setCreateTime(new Date()); data.setUpdateBy(ContextUtil.getLoginUserName()); data.setUpdateTime(new Date()); inoutSysConfMapper.insert(data); } else { data.setUpdateBy(ContextUtil.getLoginUserName()); data.setUpdateTime(new Date()); inoutSysConfMapper.updateById(data); } this.flushInoutSysConfCache(data); } /** * 设置缓存 * * @param data */ public void flushInoutSysConfCache(InoutSysConf data) { String key = RedisConst.buildKey(data.getDeptId(), Constant.CACHE_INOUT_SYS_CONF); redisCache.setCacheObject(key, data); } /** * 获取缓存信息 * * @param companyId * @param deptId * @return */ public InoutSysConf getCacheInoutSysConf(String companyId, String deptId) { String key = RedisConst.buildKey(deptId, Constant.CACHE_INOUT_SYS_CONF); return (InoutSysConf) redisCache.getCacheObject(key); } /*--------------- 出入库设备 ---------------*/ /** * 查询设备配置 * * @return */ public List getInoutConfList(String companyId, String deptId) { if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } if (StringUtils.isEmpty(deptId)) { deptId = ContextUtil.subDeptId(null); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("dept_id", deptId); queryWrapper.eq("company_id", companyId); return inoutConfMapper.selectList(queryWrapper); } /** * 保存设备配置 * * @param data * @return */ public String saveData(InoutConf data) { if (StringUtils.isEmpty(data.getCompanyId())) { data.setCompanyId(ContextUtil.getCompanyId()); } if (StringUtils.isEmpty(data.getDeptId())) { data.setDeptId(ContextUtil.subDeptId(null)); } if (0 == data.getInOrder()) { data.setInOrder(1); } if (StringUtils.isEmpty(data.getSort())) { data.setSort("1"); } if (StringUtils.isBlank(data.getId())) { data.setId(ContextUtil.generateId()); data.setCreateBy(ContextUtil.getLoginUserName()); data.setCreateTime(new Date()); data.setUpdateBy(ContextUtil.getLoginUserName()); data.setUpdateTime(new Date()); inoutConfMapper.insert(data); }else { data.setUpdateBy(ContextUtil.getLoginUserName()); data.setUpdateTime(new Date()); inoutConfMapper.updateById(data); } return null; } /** * 删除设备配置 * * @param data * @return */ public String delData(InoutConf data) { inoutConfMapper.deleteById(data); return null; } /** * 设置缓存 * * @param companyId * @param deptId */ public void flushInoutConfCache(String companyId, String deptId) { List list = this.getInoutConfList(companyId, deptId); String key = RedisConst.buildKey(companyId, Constant.CACHE_INOUT_CONF_LIST, deptId); redisCache.setCacheObject(key, list); } /** * 获取缓存 * * @param companyId * @param deptId * @return */ public List getCacheInoutConf(String companyId, String deptId) { String key = RedisConst.buildKey(companyId, Constant.CACHE_INOUT_CONF_LIST, deptId); List list = redisCache.getCacheObject(key); if (null == list) { list = this.getInoutConfList(companyId, deptId); redisCache.setCacheObject(key, list); } return list; } /** * 获取缓存 * * @param companyId * @param deptId * @param confId * @return */ public InoutConf getCacheInoutConf(String companyId, String deptId, String confId) { if (null == companyId || null == deptId || null == confId) { return null; } List list = getCacheInoutConf(companyId, deptId); if (null == list || list.isEmpty()) { return null; } for (InoutConf inoutConf : list) { if (inoutConf.getId().equals(confId)) { return inoutConf; } } return null; } /** * 更新出入库设备状态 * * @param ip * @param port * @param status */ public void updateInoutConfStatus(String ip, Integer port, String status) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("ip", ip).eq("port", port).set("status", status); inoutConfMapper.update(null, updateWrapper); } }