package doumeemes.service.ext.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import doumeemes.core.constants.ResponseStatus;
|
import doumeemes.core.exception.BusinessException;
|
import doumeemes.core.model.LoginUserInfo;
|
import doumeemes.core.model.PageData;
|
import doumeemes.core.model.PageWrap;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.core.utils.redis.RedisUtil;
|
import doumeemes.dao.business.WOutboundMapper;
|
import doumeemes.dao.business.WTransferMapper;
|
import doumeemes.dao.business.WorkorderMapper;
|
import doumeemes.dao.business.model.*;
|
import doumeemes.dao.ext.*;
|
import doumeemes.dao.ext.dto.QueryBarcodeParamExtDTO;
|
import doumeemes.dao.ext.dto.QueryCompanyExtDTO;
|
import doumeemes.dao.ext.vo.BarcodeParamContent;
|
import doumeemes.dao.ext.vo.BarcodeParamExtListVO;
|
import doumeemes.dao.ext.vo.CompanyExtListVO;
|
import doumeemes.service.ext.BarcodeParamExtService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* 二维码设置Service实现
|
* @author 江蹄蹄
|
* @date 2022/04/20 11:01
|
*/
|
@Service
|
public class BarcodeParamExtServiceImpl implements BarcodeParamExtService {
|
|
@Autowired
|
private RedisTemplate<String, Object> redisTemplate;
|
@Autowired
|
private CompanyExtMapper companyExtMapper;
|
@Autowired
|
private BarcodeParamExtMapper barcodeParamExtMapper;
|
@Autowired
|
private MaterialExtMapper materialExtMapper;
|
@Autowired
|
private WTransferMapper wTransferMapper;
|
@Autowired
|
private WOutboundMapper wOutboundMapper;
|
@Autowired
|
private AppliancesExtMapper appliancesExtMapper;
|
@Autowired
|
private WarehouseExtMapper warehouseExtMapper;
|
@Autowired
|
private WarehouseLocationExtMapper warehouseLocationExtMapper;
|
@Autowired
|
private WorkorderMapper workorderMapper;
|
@Autowired
|
private DeviceExtMapper deviceExtMapper;
|
@Autowired
|
private CompanyUserExtMapper companyUserExtMapper;
|
|
@Override
|
public PageData<BarcodeParamExtListVO> findPage(PageWrap<QueryBarcodeParamExtDTO> pageWrap) {
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
List<BarcodeParamExtListVO> result = barcodeParamExtMapper.selectList(pageWrap.getModel());
|
return PageData.from(new PageInfo<>(result));
|
}
|
@Override
|
public void initParamData(Company com){
|
String[] names = new String[]{"WL","CK","HW","GD","GZ","S","YG","ZKD","CKD","RKD","K"};
|
BarcodeParam param = new BarcodeParam();
|
param.setCreateTime(new Date());
|
param.setStatus(Constants.ONE);
|
param.setDepartId(com.getRootDepartment().getId());
|
param.setRootDepartId(com.getRootDepartment().getId());
|
param.setDeleted(Constants.ZERO);
|
for(int i=0;i<10;i++){
|
param.setPrefix(names[i]);
|
param.setType(i);
|
barcodeParamExtMapper.insert(param);
|
}
|
CompanyExtListVO c = new CompanyExtListVO();
|
c.setId(com.getId());
|
loadCom(c);
|
}
|
|
|
@Override
|
public void loadCom(CompanyExtListVO com ) {
|
QueryBarcodeParamExtDTO d = new QueryBarcodeParamExtDTO();
|
d.setDeleted(Constants.ZERO);
|
d.setDmodelCompanyId(com.getId());
|
//查询全部企业部门信息
|
List<BarcodeParamExtListVO> clist = barcodeParamExtMapper.selectList(d);
|
//加入redis缓存,以企业id为编码,缓存企业二维码
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_BARCODE_KEY+com.getId(),clist);
|
}
|
@Override
|
public BarcodeParamExtListVO getByCode(Integer comId,Integer departId,String code){
|
if(comId==null || StringUtils.isBlank(code)){
|
return null;
|
}
|
//查询缓存数据
|
List<BarcodeParamExtListVO> clist = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_BARCODE_KEY+comId,ArrayList.class);
|
if(clist!=null){
|
for(BarcodeParamExtListVO model:clist){
|
if(StringUtils.isNotBlank(model.getPrefix()) && code.startsWith(model.getPrefix()) &&Constants.equalsInteger(model.getDepartId(),departId) ){
|
return model;
|
}
|
}
|
}
|
return null;
|
|
}
|
@Override
|
public BarcodeParamExtListVO getByCodeId(Integer comId,Integer departId, Integer brcode){
|
if(comId==null || brcode == null){
|
return null;
|
}
|
//查询缓存数据
|
List<BarcodeParamExtListVO> clist = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_BARCODE_KEY+comId,ArrayList.class);
|
if(clist!=null){
|
for(BarcodeParamExtListVO model:clist){
|
if(Constants.equalsInteger(brcode,model.getId())&&Constants.equalsInteger(model.getDepartId(),departId)){
|
return model;
|
}
|
}
|
}
|
|
return null;
|
|
}
|
@Override
|
public Integer getByType(Integer comId,Integer departId, Integer type){
|
if(comId==null || type == null){
|
return null;
|
}
|
//查询缓存数据
|
List<BarcodeParamExtListVO> clist = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_BARCODE_KEY+comId,ArrayList.class);
|
if(clist!=null){
|
for(BarcodeParamExtListVO model:clist){
|
if(Constants.equalsInteger(type,model.getType())&&Constants.equalsInteger(model.getDepartId(),departId)){
|
return model.getId();
|
}
|
}
|
}
|
return null;
|
|
}
|
|
|
|
@Override
|
public BarcodeParamContent getBarcodeContent(String code, LoginUserInfo loginUserInfo){
|
BarcodeParamContent barcodeParamContent = new BarcodeParamContent();
|
if(loginUserInfo.getComDepartment().getId()==null || StringUtils.isBlank(code)){
|
return null;
|
}
|
//查询缓存数据
|
List<BarcodeParamExtListVO> clist = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_BARCODE_KEY+loginUserInfo.getCompany().getId(),ArrayList.class);
|
if(clist!=null){
|
for(BarcodeParamExtListVO model:clist){
|
if(Constants.equalsInteger(model.getDepartId(),loginUserInfo.getComDepartment().getId()) && StringUtils.isNotBlank(model.getPrefix()) && code.startsWith(model.getPrefix())){
|
barcodeParamContent.setBarcodeType(model.getType());
|
if(model.getType() == Constants.BARCODEPARAM_TYPE.material){
|
Material material = materialExtMapper.selectOne(new QueryWrapper<Material>()
|
.eq("CODE",code.replaceFirst(model.getPrefix(),""))
|
.eq("QRCODE_ID",model.getId())
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(material)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(material.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.warehouse){
|
Warehouse warehouse = warehouseExtMapper.selectOne(new QueryWrapper<Warehouse>()
|
.eq("CODE", code.replaceFirst(model.getPrefix(),""))
|
.eq("QRCODE", model.getId())
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(warehouse)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(warehouse.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.localtion){
|
WarehouseLocation warehouseLocation = warehouseLocationExtMapper.selectOne(new QueryWrapper<WarehouseLocation>()
|
.eq("CODE", code.replaceFirst(model.getPrefix(),""))
|
.eq("QRCODE", model.getId())
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(warehouseLocation)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(warehouseLocation.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.workorder){
|
Workorder workorder = workorderMapper.selectOne(new QueryWrapper<Workorder>()
|
.eq("CODE", code.replaceFirst(model.getPrefix(),""))
|
.eq("QRCODE_ID", model.getId())
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(workorder)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(workorder.getId());
|
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.appliance){
|
Appliances appliances = appliancesExtMapper.selectOne(new QueryWrapper<Appliances>()
|
.eq("CODE", code.replaceFirst(model.getPrefix(),""))
|
.eq("BRCODE", model.getId())
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId()).last(" limit 1")
|
);
|
if(Objects.isNull(appliances)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(appliances.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.device){
|
Device device = deviceExtMapper.selectOne(new QueryWrapper<Device>()
|
.eq("CODE", code.replaceFirst(model.getPrefix(),""))
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(device)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(device.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.user){
|
CompanyUser companyUser = companyUserExtMapper.selectOne(new QueryWrapper<CompanyUser>()
|
.eq("CODE", code.replaceFirst(model.getPrefix(),""))
|
.eq("QRCODEID", model.getId())
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(companyUser)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(companyUser.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.transfer){
|
WTransfer wTransfer = wTransferMapper.selectOne(new QueryWrapper<WTransfer>()
|
.eq("CODE",code)
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(wTransfer)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(wTransfer.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.out){
|
WOutbound wOutbound = wOutboundMapper.selectOne(new QueryWrapper<WOutbound>()
|
.eq("CODE",code)
|
.eq("TYPE",Constants.ZERO)
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(wOutbound)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(wOutbound.getId());
|
}else if(model.getType() == Constants.BARCODEPARAM_TYPE.in){
|
WOutbound wOutbound = wOutboundMapper.selectOne(new QueryWrapper<WOutbound>()
|
.eq("CODE",code)
|
.eq("TYPE",Constants.ONE)
|
.eq("ROOT_DEPART_ID",loginUserInfo.getRootDepartment().getId())
|
);
|
if(Objects.isNull(wOutbound)){
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到数据信息");
|
}
|
barcodeParamContent.setId(wOutbound.getId());
|
}else{
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未匹配到条码类别:【"+model.getType()+"】");
|
}
|
return barcodeParamContent;
|
}
|
}
|
}
|
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "未读取到条码分类信息,请检查条码信息");
|
}
|
|
|
@Override
|
public void loadAll() {
|
QueryCompanyExtDTO dto = new QueryCompanyExtDTO();
|
dto.setDeleted(Constants.ZERO);
|
//查询全部企业信息
|
List<CompanyExtListVO> list = companyExtMapper.selectList(dto);
|
if(list != null && list.size()>0){
|
QueryBarcodeParamExtDTO d = new QueryBarcodeParamExtDTO();
|
d.setDeleted(Constants.ZERO);
|
//查询全部企业部门信息
|
List<BarcodeParamExtListVO> codeList = barcodeParamExtMapper.selectList(d);
|
for(CompanyExtListVO com : list){
|
//当前企业的全部部门信息
|
List<BarcodeParamExtListVO> clist = getAllBarcodeByComId(com.getId(),codeList);
|
//加入redis缓存,以企业id为编码,缓存企业二维码
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_BARCODE_KEY+com.getId(),clist);
|
}
|
}
|
}
|
/**
|
* 根据企业编码获取二维码配置
|
* @param id
|
* @param alllist
|
* @return
|
*/
|
private List<BarcodeParamExtListVO> getAllBarcodeByComId(Integer id, List<BarcodeParamExtListVO> alllist) {
|
List<BarcodeParamExtListVO> list = null;
|
if(alllist!= null){
|
for(BarcodeParamExtListVO d :alllist){
|
if(d.getDmodel()!=null && Constants.equalsInteger(id,d.getDmodel().getCompanyId())){
|
if(list == null){
|
list = new ArrayList<>();
|
}
|
list.add(d);
|
}
|
}
|
}
|
return list;
|
}
|
}
|