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<InoutSysConf> listInoutSysConf(String deptId, String parentId) {
|
|
QueryWrapper<InoutSysConf> 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<InoutSysConf> 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.update(data, new UpdateWrapper<InoutSysConf>().eq("dept_id", data.getDeptId()));
|
}
|
|
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<InoutConf> getInoutConfList(String companyId, String deptId) {
|
if (StringUtils.isEmpty(companyId)) {
|
companyId = ContextUtil.getCompanyId();
|
}
|
if (StringUtils.isEmpty(deptId)) {
|
deptId = ContextUtil.subDeptId(null);
|
}
|
QueryWrapper<InoutConf> 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<InoutConf> 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<InoutConf> getCacheInoutConf(String companyId, String deptId) {
|
String key = RedisConst.buildKey(companyId, Constant.CACHE_INOUT_CONF_LIST, deptId);
|
List<InoutConf> 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<InoutConf> 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<InoutConf> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.eq("ip", ip).eq("port", port).set("status", status);
|
inoutConfMapper.update(null, updateWrapper);
|
}
|
}
|